Report each account's future payout chain with closed-form reach probabilities

projectPerfectPath prices every projected withdrawal as
min(withdrawalPct × equity profit, cap) × profit split, and tracks the
cumulative probability of reaching it under the fair-walk ruin model —
room/(room + dayTarget) per day (the per-leg product telescopes), trailing
threshold locked at breakeven after the first withdrawal, no obfuscation
branches. The reporter attaches the first 6 payouts per account so the
master's payout calendar renders real amounts and probabilities instead of
one static expectedPayout.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Brandon Li
2026-09-12 17:01:09 -05:00
co-authored by Claude Fable 5
parent 50a5eb4713
commit 52d51afebb
5 changed files with 164 additions and 10 deletions
+9 -1
View File
@@ -16,7 +16,15 @@ export interface AccountConfig {
firstDayStop: boolean; // first cycle day carries a $1,000 account stop - books red and ends
minDayStop: boolean; // min-day trades carry a 2x-target stop; next day after a loss rides stopless
combineCmeHolidays: boolean; // true = CME holiday sessions count with the next full trading day (Apex-style)
withdrawalStages: { profit: number; consistency: number; minTradingDays: number; drain?: boolean; minDayPnL?: number }[]; // per-stage fresh profit + consistency (empty = use base values); drain = spam-withdraw stage
withdrawalStages: { profit: number; consistency: number; minTradingDays: number; drain?: boolean; minDayPnL?: number; withdrawalPct?: number; payoutCap?: number }[]; // per-stage fresh profit + consistency (empty = use base values); drain = spam-withdraw stage
/** Payout model, from the master's payout settings (absent on old masters):
* withdraw withdrawalPct of balance (capped at payoutCap) per cycle,
* receive profitSplit of the gross; trailingDrawdown feeds the ruin
* probabilities. */
withdrawalPct?: number;
payoutCap?: number;
profitSplit?: number;
trailingDrawdown?: number;
}
export interface FirmConfig {