Skip to main content
FAINTRADING_

// Options education and paper trading for learners worldwide.

[PRODUCT]
  • Features
  • Pricing
  • Strategies
  • Tools
  • Release Notes
[RESOURCES]
  • School
  • Blog
  • Glossary
  • Formulas
  • FAQ
[COMPANY]
  • About
  • Contact
[LEGAL]
  • Privacy Policy
  • Terms of Service
  • Risk Disclaimer
  • Cookie Policy
  • Accessibility
// © 2026 FainTrading. All rights reserved.
FAINTRADING_
[FEATURES][PRICING][ABOUT][BLOG]
> TRY FOR FREE

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.

MetricWeightDefinition & scoring anchors
Cost resilience25%

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 concentration20%

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 concentration15%

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 discipline20%

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 discipline20%

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.

Honest-fill backtesting methodologyPaper trading & strategy labPricing