{"version":"v1.7","published_at":"2026-10-22","summary":"Performance is computed from the platform's own order, fill and position rows under this versioned definition. No figure is supplied by a user, an admin, or a strategy author, and no backtest result is ever presented as a realised track.","inputs":["trading.order_fills — every fill the book wrote, strategy or ticket","trading.order_events — the deployment timeline; counted only where no order_fills row carries the same fill, so a fill written to both tables is measured once","trading.equity_curve — end-of-session marks of the REFERENCE book (the platform's own paper portfolio for this strategy, which holds nothing else, so its marks are the strategy's alone)","strategy.strategy_deployments — the reference deployment (the platform principal's simulated paper deployment of the published version, started at publication) and the deployer deployments (every other account's paper deployment of any version of the strategy with at least one fill)","strategy.deployment_events — the reference deployment's pauses, resumes, stops and entry gates, and the spans its replay refuses entries on: carried as reference_track_interrupted_sessions and reference_track_partial_sessions, never bridged","ref.exchange_sessions, ref.exchange_holidays, ref.exchange_session_overrides — the primary exchange's calendar the sessions are counted on"],"formula":{"net_pnl":"Σ(sell notional) − Σ(buy notional) − Σ(fees), in integer minor units. Fees are the full country fee stack as charged, never a bps estimate.","equity_series":"End-of-session marks from trading.equity_curve when present (basis EOD_MARK); otherwise starting capital plus the cumulative realised cash flow of the fill spine (basis REALISED_CASH_FLOW), which does not mark an open position to market. The basis in force is reported beside every figure derived from it.","total_return":"last(equity) / first(equity) − 1","cagr":"(last/first) ^ (365 / days) − 1","sharpe":"(mean(R) − r_f) / stdev(R) × sqrt(252) over the equity series' period returns, with r_f = 0 (see risk_free_rate).","max_drawdown":"min over the series of (equity / running peak − 1)","win_rate":"closed round trips with net P&L > 0, over all closed round trips","profit_factor":"Σ gross profit / Σ gross loss over closed round trips","raw_return":"annualised, time-weighted return of the track (cagr)","risk_penalty":"1 / (1 + realised_volatility), realised_volatility = stdev(R) × sqrt(252)","drawdown_penalty":"1 − 0.5 × min(1, |max_drawdown| / raw_return)","concentration_penalty":"1 − 0.3 × herfindahl, herfindahl = Σ(wᵢ²) over per-instrument shares of gross contribution; applied only when the top 3 exceed 50% of the book","sample_penalty":"min(1, sample / sample_floor)","skill_score":"raw_return × risk_penalty × drawdown_penalty × concentration_penalty × sample_penalty, expressed as a percentage","implementation_gap":"reference (backtest) return − realised return"},"weights":{"volatility_multiplier":1.0,"drawdown_multiplier":0.5,"concentration_multiplier":0.3,"concentration_top3_threshold":0.5},"minimum_track_length_days":90,"low_sample_trades":30,"sample_floor":{"DEPLOYERS":60,"OWN_TRADES":30},"risk_free_rate":0.0,"risk_free_note":"RISK_FREE_ASSUMED_ZERO","risk_free_rationale":"The metrics catalog requires r_f as a per-period series from the country pack. This deployment ingests no risk-free series, so r_f = 0 and every figure derived from it carries the RISK_FREE_ASSUMED_ZERO note. A Sharpe computed at r_f = 0 is NOT comparable with a published Sharpe that subtracts a T-bill; it is an upper bound on it.","gap_decomposition":{"basis":"measured on the median deployer (the deployer whose window return ranks at the median, lower middle for an even count) against the reference track, round trip by round trip. A round trip matches when both closed one on the same instrument entered within one session of each other. Ties on window return break by the earliest deployment (created, then id).","delay":"matched round trips filled on a different bar from the reference: the price difference × reference quantity, over reference capital","drift":"matched round trips filled on the same bar at a different price: the price difference × reference quantity, over reference capital","partial":"reference round trips the deployer did not take, minus deployer round trips the reference did not take, each over its own capital","sizing":"the residual: gap − delay − drift − partial (capital, lot rounding, fee and quantity differences), so the four legs sum to the gap"},"quality_flags":[{"key":"low_sample","meaning":"fewer than 30 closed round trips — every trade statistic is shown with a caveat rather than bare"},{"key":"short_track","meaning":"fewer than 90 days of track — no skill score is published"},{"key":"no_eod_marks","meaning":"no end-of-session marks exist, so the equity series is realised cash flow and open positions are not marked to market"},{"key":"RISK_FREE_ASSUMED_ZERO","meaning":"no risk-free series available for the span; ratios use r_f = 0"},{"key":"longest_flat_days","meaning":"the longest stretch of the reference track with no change in equity"},{"key":"cycle_coverage","meaning":"how many days the track spans and whether it covers a full year; a full market cycle is never asserted on a shorter track"},{"key":"deployer_n_own_settings","meaning":"of the deployers excluded as modified, those whose excluded deployments ran their own settings or a universe the author did not test (settings_meta.changed, or settings_meta.universe_tested false); withheld between 1 and 4 like every deployer count"},{"key":"deployer_n_other_universes","meaning":"deployers whose deployments ran one of the author's additional reference universes, left out of the primary universe's figures. An account that also deploys on the primary universe is counted there, not here; withheld between 1 and 4 like every deployer count"},{"key":"deployer_n_modified","meaning":"deployers excluded because they changed the published strategy (removed an instrument, gated entries at deploy or later, ran their own settings, chose a universe the author did not test, or had one of their own loss or drawdown limits pause the book)"},{"key":"deployer_n_stale_close","meaning":"accounts in the range whose return marks a lot at a close more than 14 calendar days old (at most 91, or any age for a delisted name) — a suspended, halted or delisted name valued at its last close"},{"key":"deployer_n_unmarked","meaning":"accounts holding a name that is not delisted and has no daily close in the 91 days before a day they are measured on (or none at all): their return cannot be computed, so they are counted apart, never in the range (the reason is in deployer_n_unmarked_reason)"},{"key":"reference_track_interrupted_sessions","meaning":"exchange sessions since publication in which no bar of the reference track was entry-eligible (not yet started, stopped, paused, or every entry refused) — shown, never bridged"},{"key":"session_calendar_missing","meaning":"the deployment has no primary exchange calendar, so the session counts could not be computed and are absent from this snapshot, never zero"},{"key":"reference_track_partial_sessions","meaning":"exchange sessions since publication in which some bars of the reference track were entry-eligible and some were not (a pause or refused entries for part of the session) — shown beside the interrupted sessions, never hidden"}],"not_computed_from":["any value supplied by a user, an admin, or a strategy author","any backtest result presented as a realised track","any provider or third-party performance report"],"changelog":[{"version":"v1.7","date":"2026-10-22","change":"Interruptions of the reference track are counted in exchange sessions instead of calendar days: a session is interrupted when no bar of it could open a position while the track ran, and partial when only some bars could. Partial sessions are a new figure, shown beside the interrupted ones. Weekends and exchange holidays are never counted, a pause of seconds no longer costs a whole day, and a pause that the replay later ran through is no gap. No weight, penalty, threshold, formula or return changed. Snapshots computed under v1.6 are not restated: until a strategy's first v1.7 snapshot is computed, its v1.6 snapshot is served, labelled v1.6, with its interrupted days. A resume written before 2026-10-10 carries no halted_after or decisions_from, so the span the replay refused after it is unknown: history recomputed under v1.7 can report fewer gaps than v1.6 did."}],"deprecated":false,"definitions":{"reference_return":"total_return of the reference paper track over the window, net of the full fee stack, measured on the reference book's end-of-session marks (cash-flow basis, open lots marked at the close, when it has none). Where the track moved to a new book (a frozen book, or a flatten stuck past its deadline), each book is measured on its own marks and the returns are CHAINED, time-weighted: the move from one book's equity to the next is never a return and never a drawdown. Never a backtest.","deployer_distribution":"p10, p25, median and p75 of total_return over the window, ONE value per deployer account — its earliest-started qualifying deployment, measured on its own fills against its own allocated capital with open lots marked at the close. Never a single blended average. Below 5 accounts no quantile is published (and no implementation gap); the count is shown with the words 'the range appears from 5'. From v1.6 an open lot is marked at its instrument's last daily close on or before the day measured, up to 91 calendar days old (about one quarter), and with no age limit for a delisted instrument: a suspended, halted or delisted name is valued at its last close, never dropped, and an account whose return used a close more than 14 days old is counted in flags.deployer_n_stale_close. A halted or suspended name is valued at its last close before the halt until it trades again; the first close after it reopens replaces it, higher or lower. An account holding a name that is not delisted and has no close in those 91 days (or none at all) is unmarked: counted in flags.deployer_n_unmarked, with the reason in flags.deployer_n_unmarked_reason, never in the range. Before v1.6 a lot with no close in the 14 days before left its account unmarked.","deployer_set":"ACCOUNTS with a paper deployment of any version of the strategy with at least one fill by the window's end, EXCLUDING every system account (is_system: the platform's own reference track), the creator, fork-to-edit copies (derived), and accounts whose every qualifying deployment is MODIFIED — an instrument removed, a non-OPEN entry gate applied, settings other than the version's defaults, or a universe that is not a reference universe of the version — those are counted in flags.deployer_n_modified; an account whose deployment cannot be marked is counted in flags.deployer_n_unmarked. deployer_n and the skill-score sample count accounts. From v1.4 the set is PARTITIONED by the reference universe each deployment recorded at admission, and that record is never moved: a deployment on one of the author's additional reference universes is not in the primary universe's figures — not in deployer_n, the distribution, the skill-score sample or deployer_n_modified — and is counted in flags.deployer_n_other_universes, including after the author stops listing that universe. An account that also deploys on the primary universe is counted there, not here. A deployment on no chosen universe, on the authored one, or on one the author did not test (MODIFIED) counts in the primary universe's figures. Deployer figures are published for the primary universe only. From v1.5 a deployment is also MODIFIED when one of the deployer's own protective limits fires — a daily loss limit, or a drawdown halt tighter than the strategy's own, pauses it (RISK_HALT) — and when it starts with an entry gate other than OPEN chosen at deploy. The strategy's own drawdown halt (the author's) never marks a deployment, and a deployer's halt equal to it is not accepted as a limit. A limit that never fires leaves the deployment unmodified. The mark is set once and never cleared. From v1.5 a deployment admitted in the reference configuration COUNTS in every window up to the day of its mark (modified_at): its fills and marks up to that day stay in the deployer set — a book whose loss limit paused it is never dropped for having lost — and nothing after it counts. It counts only if it filled on or before that day: one marked before it ever traded is counted as modified, never as a 0% deployer. For a fired limit the mark is the session that breached; for any other change it is the time the change was applied (an advance's or a command's clock, so a late catch-up can date it after the sessions it covers). An upgrade that moves a reference deployment into a variant marks it when the upgrade applies. A deployment that was not in the reference configuration at admission (its own settings, a universe the author did not test, a gate at deploy) is never counted, even if an upgrade later makes it the reference configuration. An account counts by its earliest-started deployment that is in the reference configuration for the window, whatever its outcome. A fixed window (1M, 3M, 6M, 1Y) leaves out a deployment stopped or marked before the window starts; the since-publication window includes it. A deployment admitted before v1.5 records no class at admission; it is read from its stored facts, and a mark dated on or before the day it started is read as a change made at admission — so it never counts — unless that mark was set by one of its own limits pausing it for that very session. An upgrade's carry stamps such a deployment's class at admission by the same rule. A deployment admitted before v1.5 and moved into a variant by an upgrade applied before v1.5 took effect on the deployment was not stamped: it reads as never in the reference configuration and is not counted, as under v1.4. A drawdown halt a deployer set through the API before v1.5, equal to the strategy's own, pauses the deployment without marking it: it stays in the deployer set to the window's end, holding what it held.","implementation_gap":"reference_return − deployer_median","skill_score":"raw_return × risk_penalty × drawdown_penalty × concentration_penalty × sample_penalty, expressed as a percentage, computed on the reference track with sample = deployer_n (accounts) against the 60-deployer floor","as_of":"the last COMPLETED trading session of the primary exchange, in its own timezone, at the time the writer runs — never the UTC wall-clock date","track_building":"no return is shown until the reference track is 90 days old and has closed 30 round trips; the card names the threshold that is unmet","reference_universe":"a universe the author tested the strategy on. The PRIMARY reference universe is the strategy's own (authored) universe; the author may list up to three more. Each reference universe has its own reference paper track at the strategy's defaults, in a book of its own; its figures are computed exactly as reference_return is, on that track alone. Only reference figures are published per universe.","reference_track_interruptions":"Counted in sessions of the primary exchange, by its own calendar — never UTC dates, and never a day the exchange is closed. A session is INTERRUPTED when no bar of it was entry-eligible while the reference track was running, and PARTIAL when some of its bars were and some were not. A bar is entry-eligible when it was decided (at its close) while the reference deployment carried the track and was not held in a pause that had not been lifted, and the deployment's replay did not refuse entries on it: an entry gate, or the span between the pause and the next bar it may trade on that a resume after a person's or the kill switch's pause records. A pause that was lifted is no gap by itself: the replay then runs every bar the book sat out, refusing entries only where that span says. A daily book has one bar per session, so a refused bar is a whole session; an intraday book's bars tile the exchange's regular session, the bars its replay is fed, so a pause or gate outside regular hours refuses no bar of its own. Sessions before the track started count as interrupted; a track that starts during a session is whole from its start. There is no minimum duration: one refused bar makes a session partial. Each snapshot reads the records written by the end of its as-of session."}}