BALLAST.

Check the record yourself

Radical transparency only means something if you can actually verify it. You do not have to trust a screenshot or a marketing curve. The record is designed so a skeptic can audit it end to end.

How the record is kept honest

Append-only
Each day's net asset value is written as a new line and never edited in place. History accumulates; it is not rewritten. A gap stays a gap rather than being filled with a made-up number.
Source-tagged
Every NAV point records where its prices came from, for example the market-data feed that priced the close. The record tells you not just the number but how it was produced.
Git-committed
The marks, the NAV history, and the statements are committed to version control on the day they are produced. Git timestamps and hashes make after-the-fact tampering evident.
Computed once
Every figure on this site is built from the same statement data the engine computes. The site cannot show a number the record does not contain.

The honest-mark rule

The pipeline never fabricates a price. If a symbol cannot be priced on a given day, its last known mark is carried forward and the record says so, or the run fails loudly rather than book a wrong value. A single paper book will show small vendor-to-vendor price differences of a few cents, and that is expected. The point is not fake precision. The point is that the number you see is the number that was recorded, tagged with how it was made.

What to look at

Each book keeps its own record directory. The NAV histories are plain text, one JSON object per line:

  data/books/client-zero-aggressive/nav_history.jsonl   # Ballast Aggressive
  data/books/balanced/nav_history.jsonl   # Ballast Balanced
  data/books/conservative/nav_history.jsonl   # Ballast Conservative
  data/books/systematic-aggressive/nav_history.jsonl   # Ballast Systematic Aggressive
  data/books/systematic-shortvol-watch/nav_history.jsonl   # Ballast Short Vol Watch
  data/books/crypto-basis-carry/nav_history.jsonl   # Ballast Crypto Basis Carry

Read a line and you get the date, the timestamp, the net asset value, and the source that priced it. Line up a statement's NAV with the matching NAV history row and they agree, because both are built from the same marks. Walk the git history of any of these files and you can watch the book accrue day by day.

Try it yourself: recompute one NAV point

This is a real worked example from the committed record, not a mockup. Ballast Balanced (book id balanced) was marked on 2026-09-02. Its holdings and that day's marks are two small files:

data/books/balanced/holdings.json
data/books/balanced/marks/2026-09-02.json

For each position, multiply shares by that day's mark, add cash, and sum:

QQQ         12.0000 shares  x  $709.24  =  $8,510.88
SPY         20.0000 shares  x  $765.16  =  $15,303.20
MTUM        18.0000 shares  x  $297.04  =  $5,346.72
TLT        275.0000 shares  x  $81.95  =  $22,536.25
GLD         22.0000 shares  x  $402.78  =  $8,861.16
DBC        304.0000 shares  x  $31.93  =  $9,706.72
SHV        246.0000 shares  x  $110.06  =  $27,074.76
VIXY       176.0000 shares  x  $17.28  =  $3,041.28
cash                                     $1,141.28
----------------------------------------
total                              =  $101,522.25

Now open the NAV history and find the line for the same date:

grep '"date": "2026-09-02"' data/books/balanced/nav_history.jsonl
{"date": "2026-09-02", ..., "net_liq": 101522.25302124, ...}

The recomputed total and the committed net asset value agree. That is the whole trick: nothing on this site is a number we typed in, it is always this same arithmetic over files you can read yourself.

Confirm the git timestamp

The NAV history line above was not added today. Ask git when it actually landed:

git log -1 --format="%H %aI" -- data/books/balanced/nav_history.jsonl
5f43d5506d19 2026-09-02T13:15:59-07:00

That commit predates this page. A record that could be quietly rewritten after the fact would not have a git history that lines up with when each figure was actually produced.

Forward record: does reality match the backtest?

The hardest promise a paper track record can make is that it will keep being honest once real time passes. Before a single live mark exists, each book freezes a forward claim from its backtest (the honest, deflation-consistent baseline Sharpe and worst historical drawdown, not an unproven overlay uplift). That claim is immutable: it carries a hash of its own contents, so editing it after the fact is detected. As live net asset value accumulates, we compute the realized forward record and compare.

The comparison is deliberately unflattering to us. If realized performance falls below the frozen claim beyond a pre-registered tolerance for a pre-registered window, the book automatically loses a trust rung with no human in the loop. Promotion, by contrast, is never automatic: a healthy record only becomes eligible for the top rung when a human grants it. That asymmetry is the point.

Read the band, not the point estimate. Every realized Sharpe below is shown with its 95% confidence interval, because at a few dozen daily observations the interval is what the record actually supports. Where that band contains zero, the record cannot yet distinguish the book from no edge at all, however large the point estimate looks, so we do not mark that row as a win. The pre-registered gate state is stated as it stands; the gate demotes on a shortfall and never promotes on a run of good luck.
BookClaim SharpeClaim max DDRealized Sharpe (95% band)MarksTrust rung
Ballast Aggressive1.0129.2%5.12 (95% band [-1.80, 12.03])21 obsUNVERIFIED / ON_TRACK
Ballast Balanced0.9713.1%3.54 (95% band [-3.38, 10.46])20 obsUNVERIFIED / ON_TRACK
Ballast Conservative0.9410.6%3.23 (95% band [-3.57, 10.03])20 obsUNVERIFIED / ON_TRACK
Ballast Systematic Aggressive1.0129.2%5.80 (95% band [-1.36, 12.97])20 obsUNVERIFIED / ON_TRACK
Ballast Short Vol Watch1.0129.2%5.88 (95% band [-1.29, 13.06])20 obsUNVERIFIED / ON_TRACK
Ballast Crypto Basis Carry0.001.5%17.09 (95% band [10.61, 23.57])29 obsUNVERIFIED / ON_TRACK

Each book's full forward record, including the exact pre-registered gate and the frozen claim hash, lives at data/books/<book>/forward-record.md.

The research ledger cannot be quietly rewritten

The kill log's pre-registration ledger is an append-only file with one row per strategy variant ever scored, 97 rows so far. Alongside it we commit a hash chain: every entry's hash folds in the hash of the entry before it, and the chain head commits to the entire ordered history. Edit any past row, drop one, or swap two, and the head you recompute stops matching the committed one. The check runs in one command:

python -m ballast.scripts.verify_trial_ledger
# current committed head: 54a3d1d5e7b80b2e... over 97 entries

The head is also anchored externally with OpenTimestamps, which binds it to a Bitcoin block time. Once the proof confirms, not even we can pretend a pre-registration existed earlier than it did: backdating would require rewriting a public blockchain. The committed anchor record carries the proof file and the exact command to verify it. It covers all 97 rows. The newest proof is pending: it has been submitted and accepted by the timestamp calendars and is waiting on a Bitcoin block to attest it, which takes hours.

Honest limits, stated plainly: the chain proves the integrity and order of what is committed, and an anchor proves the head existed by its block time. Neither proves a pre-registration preceded the researcher's knowledge of the outcome. That is what the forward record above is for, and it is why both mechanisms exist side by side.

The short version

Open the repository. Pick a date. Find that date's marks file, run the same public math over the holdings, and you will land on the NAV the record already shows. Nothing on this site is a number you have to take on faith. See the kill log for the same discipline applied to strategy research rather than the NAV record.

This page describes the honesty scheme in words, and the worked example above is a real check you can run. The exact repository location and any public mirror are being finalized. If a link is not yet live here, that is why.