Skip to main content

Tutorial · decision ledger

The decision ledger answers: what did we recommend, when, and what happened next?

The ledger joins the logged 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.

logged decisionrealized outcomeCSV evidence

What the ledger records

Decision

Action gate, rationaleId, forecast model, p50 and band that were shown when the brief was served.

Outcome

Realized price and signed error = realized minus forecast p50 once the outcome is matched.

Quality

Pair hit-rate and captured spread for recommended buy/sell pairs, when those pairs were captured.

Timing

The headline reads only pre-gate decisions; post-gate rows stay retrospective accounting.

How to read the ledger

1. Start with reconciled rows

A pending row has no realized price yet, so it should not be used as outcome evidence.

2. Check timing

Pre-gate means the decision was logged before 12:00 Kyiv on D-1; post-gate must not blend into the headline.

3. Read denominators

Hit-rate without pairs and decisions is misleading: always inspect the sample that produced the metric.

4. Export evidence

CSV/JSON export is meaningful for reconciled rows: p50, band, realized, signed error and timing basis stay visible.

Limits of the ledger

Not portfolio profit

Captured spread is realized accounting of recommended pairs, not portfolio profit and not a lift claim.

Post-gate rows stay apart

Rows logged after the gate do not count toward the headline: that day's auction prices were already known when they were logged.

Not tamper-proof

The ledger is an audit-friendly record, not a cryptographic hash-chain or regulator-grade immutability layer.

Fields

Fields to inspect

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
  }
}

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.

Open ledger