{
  "page": "https://propsurvival.com/challenges/topstep-50k",
  "firm": "Topstep",
  "program": "Trading Combine",
  "account_size": 50000,
  "generated_at": "2026-10-15T00:00:00.000Z",
  "engine_version": "1.0-L3",
  "engine_module": "src/lib/state-conditional-mc.js",
  "model_id": "simulateFromState",
  "path_count": 25000,
  "corpus_version": "18f9526d6036335d",
  "retrieved_at": "2026-09-27",
  "last_checked": "2026-10-15",
  "last_disconfirmed": null,
  "ledger_state": "source confirmed",
  "rechecks": [
    {
      "checked_at": "2026-07-22",
      "method": "two-pass-blind-independent",
      "outcome": "confirmed_with_mismatch"
    },
    {
      "checked_at": "2026-07-31",
      "method": "modeled-from-prior-run-2-finding",
      "outcome": "changed"
    },
    {
      "checked_at": "2026-09-13",
      "method": "first-party-single-pass",
      "outcome": "partial"
    },
    {
      "checked_at": "2026-09-13",
      "method": "first-party-single-pass",
      "outcome": "documented-absent"
    },
    {
      "checked_at": "2026-09-18",
      "method": "two-pass-blind-independent",
      "outcome": "changed"
    },
    {
      "checked_at": "2026-09-27",
      "method": "first-party-whole-plan-current-stage-cross-check",
      "outcome": "changed"
    },
    {
      "checked_at": "2026-10-04",
      "method": "normal-corpus-review-current-first-party",
      "outcome": "confirmed_with_disagreement"
    },
    {
      "checked_at": "2026-10-04",
      "method": "normal-corpus-review-current-first-party",
      "outcome": "confirmed_with_disagreement"
    },
    {
      "checked_at": "2026-10-04",
      "method": "normal-corpus-review-current-first-party",
      "outcome": "confirmed"
    },
    {
      "checked_at": "2026-10-04",
      "method": "normal-corpus-review-current-first-party",
      "outcome": "confirmed"
    },
    {
      "checked_at": "2026-10-04",
      "method": "normal-corpus-review-current-first-party",
      "outcome": "confirmed"
    },
    {
      "checked_at": "2026-10-04",
      "method": "normal-corpus-review-current-first-party",
      "outcome": "confirmed"
    },
    {
      "checked_at": "2026-10-04",
      "method": "normal-corpus-review-current-first-party",
      "outcome": "confirmed"
    },
    {
      "checked_at": "2026-10-04",
      "method": "normal-corpus-review-current-first-party",
      "outcome": "confirmed"
    },
    {
      "checked_at": "2026-10-04",
      "method": "normal-corpus-review-current-first-party",
      "outcome": "confirmed"
    },
    {
      "checked_at": "2026-10-04",
      "method": "normal-corpus-review-current-first-party",
      "outcome": "confirmed"
    },
    {
      "checked_at": "2026-10-14",
      "method": "first-party-field-scoped-citation-repair",
      "outcome": "confirmed"
    }
  ],
  "resolved_rules": {
    "target": 6,
    "dailyDD": 2,
    "totalDD": 4,
    "minDays": 2,
    "maxDays": 60,
    "ddMode": "trail_eod",
    "freezeAtInitial": true,
    "consistencyPct": 55,
    "onDailyBreach": "lockout",
    "onDailyBasis": "initial"
  },
  "ambiguities": [
    {
      "field": "phases[0].daily_loss.reset_time_utc",
      "candidates": [
        "22:00",
        "23:00"
      ],
      "conservative": "23:00",
      "basis": "5 PM CT reset shifts between 22:00 UTC (CDT) and 23:00 UTC (CST) across US daylight-saving changes; the firm publishes the local time, not a fixed UTC.",
      "sources": [
        "https://help.topstep.com/en/articles/10490293-daily-loss-limit-in-the-trading-combine-and-express-funded-account"
      ]
    },
    {
      "field": "phases[0].daily_loss.present",
      "candidates": [
        true,
        false
      ],
      "conservative": false,
      "inert": false,
      "basis": "E2(b)/E3: the DLL is OPTIONAL at checkout, not a property of the account. Firm: 'The Daily Loss Limit (DLL) is optional in the Trading Combine ... You now have the option to add a Daily Loss Limit at checkout.' A Combine sold without it has NO daily loss limit; only the MLL constrains it. Conservative headline = ABSENT (breach day 19 vs 20; earlier failure = higher ruin). The hardcoded DLL models only the bought variant and under-estimates ruin for the cheaper account.",
      "sources": [
        "https://help.topstep.com/en/articles/10490293-daily-loss-limit-in-the-trading-combine-and-express-funded-account"
      ]
    },
    {
      "field": "phases[0].consistency[0].metric",
      "candidates": [
        "best_day_pct_of_total_profit",
        "best_day_pct_of_profit_target"
      ],
      "conservative": "best_day_pct_of_profit_target",
      "basis": "Flagged 2026-07-22 (run 2), never modeled until now. Topstep publishes the 50% cap two ways on one page: prose (\"at or below 50% of your Profit Target\" -> fixed denominator = profit_target) and a formula (\"Best Day Profit / Total Profit = Best Day %\" -> denominator = total_profit_so_far). The two readings are IDENTICAL exactly at the moment of passing (total_profit_so_far == profit_target by definition of having just reached it) and diverge only if profit overshoots the target before the check applies, where the total_profit denominator grows and the resulting percentage is SMALLER (more lenient) than against the fixed target. profit_target is therefore the higher-ruin (conservative) reading. NOT changed to conservative: tools/build-firm-presets.js line 38 (consistencyPct()) does an EXACT STRING MATCH on metric===\"best_day_pct_of_total_profit\" to wire this constraint live into the simulator; switching the stored string would silently return 0 and DISABLE Topsteps consistency check entirely - a far worse outcome than sitting on the lenient side of a narrow overshoot-only edge case. Same shape as the adjacent, already-disclosed consistency.effect approximation (block vs raise_target) on this same product. Disclosed via ambiguities[], value left as the live-wired string.",
      "sources": [
        "https://help.topstep.com/en/articles/8284208-consistency-at-topstep"
      ]
    }
  ],
  "quality_checks": [
    {
      "name": "Verified data",
      "ok": true
    },
    {
      "name": "Real search intent",
      "ok": true
    },
    {
      "name": "Unique user value",
      "ok": true
    },
    {
      "name": "Source/provenance",
      "ok": true
    },
    {
      "name": "Product relevance",
      "ok": true
    },
    {
      "name": "Correct graph position",
      "ok": true
    },
    {
      "name": "Freshness model",
      "ok": true
    },
    {
      "name": "Anti-thin-content",
      "ok": true
    },
    {
      "name": "Technical indexability",
      "ok": true
    },
    {
      "name": "Structural/visual QA",
      "ok": true
    }
  ],
  "results": [
    {
      "trader_profile_id": "steady-scaler",
      "trader_profile_label": "Steady Scaler",
      "trader": {
        "wr": 50,
        "winR": 1.5,
        "lossR": 1,
        "risk": 1,
        "trades": 4,
        "cost": 0.05,
        "stopLosses": 0,
        "profitLock": 0,
        "clustering": "Independent"
      },
      "seed_phase1": 1403970509,
      "seed_phase2": null,
      "pass_probability": 0.55404,
      "pass_se": 0.003143753669739409,
      "funded_probability": null,
      "funded_se": null,
      "binding_constraint": "totalFail",
      "median_days": 4,
      "input_fingerprint_phase1": "273415f17d0b14ba96be5b76ec9bd056bffc2863826b0d4a9e8b202b817d4aa4",
      "input_fingerprint_phase2": null
    },
    {
      "trader_profile_id": "aggressive-scalper",
      "trader_profile_label": "Aggressive Scalper",
      "trader": {
        "wr": 45,
        "winR": 1.8,
        "lossR": 1,
        "risk": 1,
        "trades": 4,
        "cost": 0.05,
        "stopLosses": 0,
        "profitLock": 0,
        "clustering": "Independent"
      },
      "seed_phase1": 2331331614,
      "seed_phase2": null,
      "pass_probability": 0.50304,
      "pass_se": 0.0031622192106177584,
      "funded_probability": null,
      "funded_se": null,
      "binding_constraint": "totalFail",
      "median_days": 4,
      "input_fingerprint_phase1": "684dcfa5a40874423a1933c396dbbba4fcd886ff3cc3b4f1011120a89bd79c47",
      "input_fingerprint_phase2": null
    },
    {
      "trader_profile_id": "balance-rider",
      "trader_profile_label": "Balance Rider",
      "trader": {
        "wr": 42,
        "winR": 2,
        "lossR": 1,
        "risk": 0.75,
        "trades": 4,
        "cost": 0.05,
        "stopLosses": 0,
        "profitLock": 0,
        "clustering": "Independent"
      },
      "seed_phase1": 1794231121,
      "seed_phase2": null,
      "pass_probability": 0.55076,
      "pass_se": 0.0031459397476747706,
      "funded_probability": null,
      "funded_se": null,
      "binding_constraint": "totalFail",
      "median_days": 5,
      "input_fingerprint_phase1": "a96e9c4488f7c3d0680498e44b30379d63d46ced4ed19da67c03e77c2746e5c6",
      "input_fingerprint_phase2": null
    }
  ],
  "reproduce": "node tools/build-challenge-pages.js"
}
