Methodology
Live-Readiness Score
Published 2026-09-01 · Version 1.0
The Live-Readiness Score is a 0–100 number computed from your closed paper trades — and only your closed paper trades. It answers one question: would this trading behavior survive contact with a real broker? A score of 80 or above is the platform's "live-ready" threshold. No metric is optional-flavored: each one is a pure function with published anchors, and every constant on this page is the exact constant in the shipped code (app/services/readiness/metrics.py).
The five metrics
Each metric scores 0–100 using the same linear mapping: score = 100 × (1 − (value − good) / (bad − good)), clamped to [0, 100], where good and bad are the anchors below. The overall score is the weight-renormalized mean of every metric that is measurable — a metric that cannot be computed from your data is excluded and the remaining weights renormalize, so an empty journal never silently zeroes your score.
Status bands per metric: good ≥ 70, warn 45–69, fail < 45.
| Metric | Weight | Definition & scoring anchors |
|---|---|---|
| Cost resilience | 25% | Whether your P&L survives real-world trading costs. Every paper fill is re-priced with the cost model below; drag is total replayed cost ÷ max(|raw P&L|, $1). 100 at ≤ 5% drag, 0 at ≥ 50% drag, linear in between. Skipped when: Never — computable from fills alone. |
| Ticker concentration | 20% | Share of closed trades in your single most-traded underlying. Trade-count share, not notional — counts are robust without fill-price normalization. 100 at ≤ 20% top share, 0 at ≥ 60%. Skipped when: Only if no trades carry a symbol (impossible with real fills). |
| Strategy concentration | 15% | Same concentration math over the classified strategy type of each closed trade. 100 at ≤ 20% top share, 0 at ≥ 60%. Skipped when: When no trade has a classified strategy (score reported as skipped, not zero). |
| Hold-time discipline | 20% | Median holding time of losing trades ÷ median holding time of winners. Holding losers roughly 3× longer than winners is the classic refusal-to-cut-losses signature. 100 at ≤ 1.0× ratio, 0 at ≥ 3.0×. Skipped when: Needs at least one winning and one losing closed trade. |
| Rule discipline | 20% | Share of journal entries flagged as a rule break: entry emotion tagged revenge or FOMO, or any of the tags rule-break, rule_break, revenge, plan-break, no-plan. 100 at 0% flagged, 0 at ≥ 50% flagged. Skipped when: When the journal is empty — no journal, no score for this metric. |
The cost-replay model
The cost-resilience metric re-prices every fill in your closed paper trades with a documented cost model, because paper engines that fill at the mid systematically overstate what survives live trading. The defaults:
- Commission: $0.65 per contract per fill, capped at $10 per fill — matching the paper-engine commission settings and tastytrade-style per-contract pricing.
- Slippage: 0.5% of the fill price per contract, applied on every fill. Historical bid-ask spreads cannot be reconstructed for past fills, so a flat fraction of premium is the honest, conservative default.
- Never understate: if a fill already carries a recorded commission, the larger of recorded vs. replayed commission is used.
Why 30 closed trades
Below 30 closed trades the score refuses to render (status = not_enough_data). Medians and top-share statistics over a handful of trades are noise: four lucky weekly trades put your concentration share at 100%, and one long hold distorts the hold-time ratio. Thirty closed trades is the smallest sample where the five metrics carry signal about a habit rather than an anecdote. Fewer trades still show all per-trade data — only the score is withheld.
Versioning
The methodology is versioned with the code. Weights, anchors, the cost model constants, and the 30-trade gate live in one module; any change ships as a code change with this page updated in the same release, and the version note at the top of this page increments. Your score is recomputed from raw trade data, so a methodology change re-scores history consistently rather than mixing formulas across time.
What it is not
The score measures process quality under realistic costs — not alpha, not a prediction of profitability, and not investment advice. A perfectly disciplined trader can have a losing month and score 90; a lucky one can triple an account and score 40.