Prop Firm Risk Simulator
Import your trades and see what the best risk is for the evaluation and funded stage.
Use at least 180 calendar days or 100 trades. Multiyear CSVs keep their full calendar span.
Import your trades
Drop a CSV here or choose a file.
Review your trades
Matched columns and calculations
Trades ready
Advanced import
Change column matches or supply values missing from your export.
Choose the fields for your net result and worst and best open move. Dollar values also need the original planned risk. A stop moved after entry is not a reliable denominator.
How these values were calculated
Historical risk per trade
Choose a risk column from your CSV, or enter one fixed amount used on every historical trade.
Optional source columns
Trading costs
Enter round-trip commissions and fees for one historical trade.
Missing clocks use an assumed 16:45 close. Source row order is retained. Actual clocks stay intact. Payout timing remains conditional.
Applies to the imported CSV. Start and end dates are optional.
Core fields: session date, net exit, signed MAE and MFE. Dollar values need original planned risk. Gross MFE needs costs, which may come from the file, a known fixed amount or an explicit zero-cost assumption. Missing clocks require the date-only session confirmation. Whole MNQ sizing also needs one-micro risk or original risk and Quantity. Invalid mapped values are rejected. Maximum two trades per session.
Optional date range
Leave dates blank to apply session exclusions to the full imported CSV. Date limits only narrow the simulation period. Use at least 180 calendar days or 100 trades after filters. The full calendar span counts, including periods longer than a year and gaps between trades. The report records excluded source rows.
Preview first rows
Simulation settings
Results
Plan & risk comparison
Select a row to inspect it. Worst and best are the lowest and highest net cash within these runs, after wallet-paid fees. They are not future loss or profit limits. Payout probability is the share of all simulated campaigns receiving positive cash by the deadline. First-cash timing includes receiving campaigns only. Funded failures count firm breaches, with issued funded accounts as the denominator. Voluntary retirements appear separately in account outcomes. A single chronological replay is one path, not a probability estimate.
| Plan / funded policy | Mean net | Median net | Worst simulated net | Best simulated net | Wallet fees | Cash received | Funded failed | First cash | Payout probability |
|---|
Assumptions and limitations
One actual campaign near the median
This is one simulated household, not an average account.
About the simulator
Compare futures prop firm rules and your own risk styles using your trade history. The catalog includes dated public, historical and invitation-only products. Missing rules remain visible. Choose proportional dollar risk or whole MNQ contract sizing.
How it works
The standard import checks actual entry and exit dates and clocks, net result, original planned risk for dollar values, MAE, MFE and complete total costs or gross P&L. Complete constant-size MNQ exports can also reconstruct costs from entry/exit prices and matching position/price excursions after your confirmation. It reads recognized columns, calculates costs as gross minus net when needed, cross-checks complete cost sources and sorts trades by actual entry time. Partial commission, fee and swap columns are never added as if they were complete costs. The default uses proportional dollar risk with no contract assumptions. Original source row IDs and all conversions stay in the export provenance. Advanced import is optional for manual column choices, whole MNQ contracts or explicit cost and session assumptions. In Advanced, match the session date, net result, MAE and MFE. Dollar-valued trades need their original planned risk. Gross MFE converts to net MFE using supplied costs. An explicitly selected net MAE adds full round-trip costs to reconstruct gross MAE. Net exit values already include costs and are not charged again. If costs are absent, enter a known fixed cost or explicitly assume zero. Missing clocks require confirmation that trades stayed in one New York session and closed by 16:45; the internal close is then assumed 16:45. Proportional sizing uses the chosen dollar risk and does not check contract counts, contract limits, minimum micros or tick rounding. Whole MNQ sizing needs one-micro risk or original planned risk and Quantity. Review every active assumption before running. Trades closing after 16:45 New York time require explicit exclusion. Overnight detection uses available entry and exit dates. For prepared CSVs without those dates, you must confirm every record stays within one session. Build comparison entries with their own plan, DLL option, price and evaluation/funded risk policies. Add, duplicate, edit or remove entries, then run them together. The existing Lucid DLL option applies to both stages. Catalog variants preserve each stage's published daily loss rule. Evaluation and funded event orders can differ. Campaign settings and seeded permutations are shared across entries. Replay trades in chronological order or compare shuffled variants. The simulator tracks evaluation purchases, funded accounts, trailing drawdown and payouts. The existing Lucid 25K model takes one evaluation setup per session at a $625 net target. Catalog plans use your chosen evaluation exits and provider-specific rules. Every comparison uses the same source calendar and seed.
Results show received cash after wallet-paid purchase, activation and renewal fees. Catalog results show payout withholding separately. They also show account failures and time to the first payout. Starting cash is financing, not profit. Pending payouts and simulated account balances do not count as cash received.
Prepared CSVs can provide R values, gross MAE, net MFE, estimated costs and one-micro risk directly. For a supported raw MNQ export, the importer can reconstruct these from original planned risk, entry/exit prices, dollar/price excursions and net P&L. It assumes a constant-size position in USD and requires confirmation. Conflicts and unsupported rows are flagged, not silently discarded. Uploads support up to 2,000 trades. Each selected simulation period needs at least 180 calendar days or 100 trades after filters and supports two trades per session. Multiyear periods use their full calendar span, including inactive days and leap years. Monte Carlo supports 1, 100, 1,000, 5,000 or 10,000 variants. Larger jobs run in bounded batches with at most 2,000,000 variant-calendar days in a batch. All requested paths and all supplied dates count. Global medians, percentiles and account rates use the entire cohort. The optional session filter excludes overnight or after-16:45 closes and records the excluded rows.
Partial losses stay proportional. A -0.5R trade at $250 simulated risk loses $125. Shuffled variants reuse one history and do not create independent market evidence.
What the CSV can and cannot tell us
MAE and MFE describe the furthest adverse and favorable moves. They do not show their order, tick-by-tick trailing, slippage, actual payout approval, or news compliance. The event-order selector makes that ambiguity explicit.
The existing Lucid model supports end-of-day evaluations only. Catalog models distinguish static, end-of-day and intraday drawdown, and stop when an unsupported rule remains unresolved. News restrictions for Daily require positions to be flat from one minute before through one minute after high-impact USD events; this tool cannot establish compliance and labels Daily results conditional.
One source history, even when shuffled 1,000 times, is still one history. The comparison measures behavior under these assumptions. It does not establish a future payout probability or a uniquely best risk policy.
Your data
Your CSV is parsed and simulated in your browser. It is not sent to a simulation server. Closing or refreshing the page discards imported trades, comparison entries and new results. Export what you want to keep.
The Python runtime and NumPy download from a pinned Pyodide CDN when the first run starts. No account, email, Discord login or payment is required to use this tool.