The exchange
is the record.
Cash and positions are rebuilt from the exchange's own fills, settlements and fees into a double-entry ledger. Our software's opinion of what happened is checked against that ledger, never the other way round.
The site's data export refuses to publish if reconciliation is not clean, the trial balance does not sum to zero, or any fill has no owner.
Source of truth
Exchange records decide cash and fills. When the ledger and the exchange disagree, the disagreement is reported and investigated. Nothing is booked to make it go away.
Three equities
Exchange-reported balance, model-marked value and liquidation value (what selling into the bids would raise right now) are different measurements. They are shown side by side and never substituted for one another.
Attribution
Every automated order carries a client id that names the strategy that sent it; anything else is booked as discretionary. Each strategy and bot gets its own capital, P&L and risk, and the parts add up to the account.
Returns
Time-weighted and split at every deposit or withdrawal, so new money never shows up as performance. The preseason, funded in steps, is measured against the $8,000 committed to it. Results cover the whole account, trades entered by hand included, net of the fees the exchange actually charged.
Risk
Positions on the same game are valued together across every final score, so correlated contracts are not counted as independent bets. Value at risk and expected shortfall come from simulation and from stress scenarios, each with its sample size attached.
Read-only
The accounting service can read the exchange account but has no code path that places, changes or cancels an order or moves money. That is enforced and tested, not promised.