Action gate, rationaleId, forecast model, p50 and band that were shown when the brief was served.
Tutorial · decision ledger
The decision ledger answers: what did we recommend, when, and what happened next?
The ledger joins the served decision brief to the realized market outcome. It is an audit record for traders, risk teams and CFOs: timing, forecast error, pair hit-rate and captured spread, without turning history into a profit promise.
Tutorial · decision ledger
What the ledger records
Realized price and signed error = realized minus forecast p50 after the reconcile pass.
Pair hit-rate and captured spread for recommended buy/sell pairs, when those pairs were captured.
The headline reads only pre-gate decisions; post-gate rows stay retrospective accounting.
How to read the ledger
A pending row has no realized price yet, so it should not be used as outcome evidence.
Pre-gate means the decision was logged before 12:00 Kyiv on D-1; post-gate must not blend into the headline.
Hit-rate without pairs and decisions is misleading: always inspect the sample that produced the metric.
CSV/JSON export is meaningful for reconciled rows: p50, band, realized, signed error and timing basis stay visible.
What not to claim
Captured spread is realized accounting of recommended pairs, not portfolio profit and not a lift claim.
Post-gate scores must not inflate the headline: that day's auction prices were already known when the row was logged.
The ledger is an audit-friendly record, not a cryptographic hash-chain or regulator-grade immutability layer.
Tutorial · decision ledger
Checklist
Minimal sequence before audit or review.
1. Confirm the row is reconciled, not pending. 2. Check timing: pre_gate can enter the headline, post_gate stays retrospective. 3. Read hit-rate with its denominator: pairs and decisions. 4. Read captured spread against available spread, not as P&L. 5. Export CSV/JSON only after realized outcomes are present.
Fields that must not collapse into one success number.
ledger.row = {
action: served action gate,
decidedAt: when the brief was generated,
targetDate: delivery day,
forecastP50: served median forecast,
realizedPrice: later market outcome,
outcomeError: realized - forecastP50,
decisionQuality: {
hits: recommended pairs whose ordering held,
capturedSpreadUah: realized spread captured,
availableSpreadUah: best-case spread in the scored window
}
}Tutorial · decision ledger
Decision ledger FAQ
Does hit-rate measure forecast accuracy?
No. Pair hit-rate asks whether the recommended buy/sell ordering held after prices realized. Forecast accuracy is read separately through error, bias and band coverage.
What is captured spread?
It is the realized spread attached to the stored recommended pairs, shown beside available spread. It is decision accounting, not a P&L guarantee.
Why separate post-gate rows?
When a brief is generated after the day-ahead gate has closed, the day's auction prices were already set. The row is useful for audit, but not for headline track record.
Want to inspect your own ledger?
The tenant-scoped ledger appears after sign-in: rows are tied to your account and can be exported as an evidence pack.