The record, and how to check it
Every event is committed to a hash chain in which each record commits to its predecessor. Altering any historical record changes its hash and breaks every link after it.
Today's commitment
Save this. Save this object. Later, fetch the full log, recompute each record hash in seq order, and confirm the record at head_seq still hashes to head_hash.
Algorithm: sha256(canonical_json(record | prev_hash)). The database blocks UPDATE and DELETE on the log table at the trigger level, and a test deliberately drops that trigger, rewrites a record the way a determined attacker would, and asserts the chain detects it.
What gets published, and what is actually built
Eighteen items are specified. Rather than describe them as done, each carries its real status — live means it is on this site today, specified means the mechanism is built and tested but has no data to show yet, and backlog means it is not built.
| # | Item | Status | Note |
|---|---|---|---|
| 1 | Original starting capital | live | $100,000 for every portfolio, never restated. |
| 2 | Every trade with decision time and fill time | specified | Mechanism built and tested; awaits a licensed price feed. |
| 3 | Current holdings | specified | Awaits the first real cycle. |
| 4 | Historical holdings at any date | specified | Ledger replay is implemented. |
| 5 | Realised and unrealised gains, separated | specified | Never netted into a single number. |
| 6 | Maximum drawdown with its start and end dates | specified | Implemented in metrics.compute_stats. |
| 7 | Fees, spreads and estimated slippage, itemised | live | Cost model published verbatim; per-fill breakdown implemented. |
| 8 | Benchmark performance | specified | Aligned on common dates only, so a benchmark cannot start later. |
| 9 | Portfolio rule changes with full diff | live | RULEBOOK_CHANGE events in the same hash chain as trades. |
| 10 | AI model and prompt version changes | live | MODEL_CHANGE events. The record must not become a chimera of two systems without saying so. |
| 11 | Whether each decision was made before or after market open | live | Boolean on every RUN_START event. |
| 12 | Failed, closed and abandoned portfolios | live | The Graveyard exists and is empty. Its rules are published now, before there is anything in it. |
| 13 | The rejection log | specified | Every AI proposal the rule engine refused, with its reason code. |
| 14 | The fact pack for every decision | specified | Downloadable JSON plus hash, committed before the model is called. |
| 15 | The grounding report | specified | How many quantitative claims traced back to source data. |
| 16 | The daily audit head hash | live | Published on this site today. Save it and verify history later. |
| 17 | The deterministic baseline shadow | backlog | The same portfolio run by a five-line rule. Does the model beat it? Not yet answered — and it will be published either way. |
| 18 | Quarterly buy/hold/sell distribution | specified | Not legally required of a non-firm publisher. Published anyway. |
Rule and model changes
When one is, it appears here as an event in the same hash chain as every trade, carrying a full diff, a reason and an effective date. That is what makes it impossible to quietly loosen a limit after a bad quarter: the loosening would have to be published, in sequence, next to the quarter that prompted it.
Mirror the head hash somewhere we do not control
Publishing the daily head hash here converts "we say we did not edit it" into "we could not have edited it without you noticing" — but only if the hash exists somewhere outside our control. Posting it to a public repository, a social post or an RFC 3161 timestamp authority is cheap, and it is exactly the artifact a bank's diligence team asks for. This is on the build list and is not yet done.
Reproduce this page
The complete payload every page on this site was rendered from is downloadable, and its hash is a678cf70a8b712fb3d19f094…. Two builds of the same record produce the same payload hash, which is asserted by a test — otherwise "the site is a function of the record" would not be something a third party could check.