Every approach under each prop firm¶
Date: 2026-10-11
Six ways of holding a futures position are run under six firms' rules: FundedNext Flex, Topstep, Take Profit Trader, Purdia, Earn2Trade and Traders Launch. One method produces the same three tables and two figures for every firm. Section 1 stacks every firm's Table A, which is the table to choose a position from. Section 2 is the method, and it is all a reader needs to read any firm's section.
import os
from pathlib import Path
REPO = next(p for p in [Path.cwd(), *Path.cwd().parents] if (p / "trading_framework").is_dir())
os.chdir(REPO)
import json
from src.notebooks.reports.topics.firm_plans.modules import core as F
from src.notebooks.reports.topics.firm_plans.modules import firm_plans as R
Configuration¶
ACCOUNTS = 2000 # accounts a cell
WORKERS = 3 # processes a grid
ALL = F.NAMES + F.LATER
GRIDS = {name: F.grid(name, ACCOUNTS, WORKERS) for name in ALL} # minutes on the first run, cached after
CHOSEN = {name: F.chosen(name, GRIDS[name], ACCOUNTS, WORKERS) for name in ALL}
PICKS = {name: c[0] for name, c in CHOSEN.items()}
READS = {name: c[1] for name, c in CHOSEN.items()}
EXPECTED = {("FundedNext Flex", "medium"): "1 MNQ above the average on the 150K at the cap, $2,000 to $4,000",
("Topstep", "low"): "decision nights alone or one ZN, $1,000 to $3,000",
("Topstep", "medium"): "a note or everything cell on the 100K or 150K at the cap, $5,000 to $9,000",
("Take Profit Trader", "low"): "about $1,000",
("Take Profit Trader", "medium"): "at most $2,500",
("Purdia", "low"): "under $1,500",
("Purdia", "medium"): "under $1,500",
("Earn2Trade", "low"): "under $1,000",
("Earn2Trade", "medium"): "$1,000 to $3,000 on the 100K with the request cap",
("Traders Launch", "low"): "1 or 2 MNQ on the 200K or 300K, $1,500 to $3,500",
("Traders Launch", "medium"): "3 to 6 MNQ on the 200K or 300K, $4,000 to $9,000"}
1. The answer¶
Every firm's Table A. Each row is the cell the first half of the record chose under one bound on turnover, and what that cell nets on the second half. Dollars are net of fees, a year, for one account slot. Every cell was scored on the whole record before the halves were cut, so the second half is not held out. Section 2 names every column.
R.answer(READS)
firm bound account position request first half acc/yr second half acc/yr kept paid coin flip record declared FundedNext Flex low 150K 1 MNQ above the 200-day average, 2 MNQ on decision nights cap $2,691 0.59 $3,113 0.87 116% 42% -$372 $5,649 yes FundedNext Flex three 150K 2 MNQ above the 200-day average, 4 MNQ on decision nights cap $4,019 2.28 $5,210 2.86 130% 34% -$779 $10,062 no FundedNext Flex medium 150K 3 MNQ above the 200-day average, 6 MNQ on decision nights cap $5,212 3.88 $6,386 4.79 123% 29% -$1,266 $12,399 yes FundedNext Flex any 150K 3 MNQ every night, 6 MNQ on decision nights cap $6,341 5.72 $5,364 5.99 85% 26% -$2,289 $12,279 yes Topstep low 150K 3 ZN, month-end cap $4,750 0.66 $3,176 0.47 67% 42% $557 $3,176 yes Topstep three 150K 2 MNQ every night, 4 MNQ on decision nights, 2 ZN, month-end and auction cap $7,715 2.39 $11,473 3.93 149% 28% -$12 $17,613 no Topstep medium 100K 2 MNQ above the 200-day average, 4 MNQ on decision nights, 2 ZN, month-end and auction cap $8,206 3.94 $10,924 5.90 133% 29% $1,803 $16,074 yes Topstep any 150K 12 MNQ every night, 24 MNQ on decision nights cap $19,039 9.88 $16,783 11.11 88% 16% $5,215 $34,813 yes Take Profit Trader low 50K 1 ZN, month-end cap $1,280 0.50 $780 0.38 61% 43% -$26 $780 yes Take Profit Trader three 50K 4 MNQ on decision nights cap $1,692 1.84 $2,112 1.15 125% 27% -$152 $2,559 no Take Profit Trader medium 50K 1 MNQ above the 200-day average, 2 MNQ on decision nights, 1 ZN, month-end and auction cap $2,754 3.48 $4,023 5.26 146% 27% -$1,367 $6,893 yes Take Profit Trader any 50K 32 MNQ on decision nights cap $9,483 7.21 $2,978 7.48 31% 8% $252 $3,156 yes Purdia no cell nets above zero on the first half at 2 bp Earn2Trade low 200K 1 MNQ above the 200-day average cap $1,218 0.85 $1,409 1.33 116% 66% -$113 $2,705 yes Earn2Trade three 200K 1 MNQ every night, 2 MNQ on decision nights, 1 ZN, month-end and auction cap $2,071 2.04 $2,059 2.67 99% 58% -$588 $3,670 yes Earn2Trade medium 200K 2 MNQ every night, 4 MNQ on decision nights, 1 ZN, month-end and auction cap $3,708 3.82 $3,513 5.08 95% 56% -$191 $5,369 yes Earn2Trade any 200K 4 MNQ every night, 8 MNQ on decision nights, 1 ZN, month-end and auction cap $4,330 6.45 $1,080 8.48 25% 42% -$2,520 $3,849 yes Traders Launch low 300K 4 MNQ on decision nights cap $1,014 0.79 $1,842 0.41 182% 52% -$1,277 $2,308 yes Traders Launch three 300K 16 MNQ on decision nights cap $5,008 2.90 $5,201 2.81 104% 34% -$2,051 $5,055 yes Traders Launch medium 200K 16 MNQ on decision nights soon $7,820 3.73 $6,460 3.86 83% 35% $1,635 $7,562 yes Traders Launch any 200K 32 MNQ on decision nights cap $11,886 5.60 $5,647 5.82 48% 17% -$272 $5,757 yes
2. The method¶
Every firm is run the same way. The firm's rules change the account simulator and the cost of a funded account. Nothing else changes.
Concepts used in this section¶
Cell. One account size, one position and one withdrawal request. A firm's grid is every cell its contract limit allows.
Approach. One way of holding a position. Six are run.
| approach | position |
|---|---|
| nights | 1 to 16 MNQ from 18:05 to 09:25 New York, every night or only above the 200-day average |
| fed nights | 2 to 32 MNQ on the night before a Federal Reserve decision, flat otherwise |
| nights and fed | the nights position, doubled on a decision night |
| month-end note | 1 to 5 ZN long over the last three trading days of a month |
| both note trades | the same, and ZN short over the three days before a 10-year auction |
| everything | 1, 2 or 4 MNQ, doubled on a decision night, with 1 or 2 ZN in both note trades |
Request. When a cell withdraws. soon withdraws at a small amount and cap at a large one. Each firm's section gives the two amounts, because the firms' payout rules differ.
Scenario. An assumption about what a held night pays. record leaves the nights as they happened, net of financing at the federal funds rate of each night. 2 bp adds one constant to every night so that all nights together average 2 basis points. Nights above the 200-day average and decision nights keep their whole advantage over the other nights, and the note trades keep their record mean. So 2 bp lowers the plain index night and leaves the three selected effects at the size the record measured. The cell under this section prints what each group of nights averages. coin moves every group of nights and note days to a mean of zero, so only the firm's rules pay.
Account. 2,000 funded accounts a cell. Each draws nights in blocks from the QQQ record, 2000 to 2026, until the firm's loss limit ends it or the record's cap on nights is reached. The record is daily bars and has no path inside a night. Each night's low is modelled: it is drawn from the 654 MNQ futures nights of 2024 to 2026 whose end fell in the same fifth, and scaled by the night's own spread. Every breach inside a night rests on that model. For a limit that follows the highest close and stops at the start:
$$f_t = \max\left(f_{t-1},\ \min(b_t - D,\ 0)\right)$$
$b_t$ is the balance above the start after night $t$. $D$ is the loss limit. $f_t$ is the balance that ends the account. Each firm's section says where its limit differs.
Funded account cost. A challenge is passed with no-edge bets of 10 MNQ. Each bet pays one tick of spread and the firm's own commission, $15 to $27 by firm. With pass rate $q$:
$$\text{cost} = \frac{\text{fee}}{q} + \text{activation}$$
Fees. One MNQ pays one tick of spread and the firm's round-trip commission each night: $1.90 at FundedNext Flex, $1.22 at Topstep, $1.50 at Take Profit Trader, $1.82 at Purdia, $2.16 at Earn2Trade, $1.00 at Traders Launch. One ZN pays one tick and $2.62 at Topstep, $4.50 at Take Profit Trader, $2.92 at Earn2Trade, each day it is held.
Net a year. One slot's income:
$$\text{net a year} = 365.25\cdot\frac{\text{cash}-\text{cost}}{\text{days}}$$
cash is the mean paid to one funded account. days is the account's life plus the time its challenge attempts took.
Turnover. Funded accounts one slot uses in a year:
$$\text{accounts a year} = \frac{365.25}{\text{days}}$$
It matters because each firm has a clause against losing many funded accounts in a short time.
Bound. The most accounts a year a choice may use: low 1, three 3, medium 4, any no bound.
Two halves. The record is cut in two by date. On the first half at 2 bp, the cell with the most net a year is chosen under each bound, and that cell is then read on the second half. Every cell was scored on the whole record before the halves were cut, so neither half is held out and the second half is an in-sample split-check. declared says whether the bound was in the firm's declaration before its halves were run.
What each firm's section holds¶
| item | rows | read it for |
|---|---|---|
| Table A | one bound | the position to hold: what the first half chose and what it nets on the second half |
| Table B | one approach in one turnover band, whole record | which approaches earn at this firm, and whether they still earn as a coin flip |
| Table C | one account size | the pass rate of the challenge and the cost of one funded account |
| Figure 1 | every cell | whether income stays high to the left of the dashed lines at 1, 3 and 4 accounts a year |
| Figure 2 | six accounts of the choice under the bound of three | whether accounts end before a first withdrawal |
Table A columns. first half and its acc/yr are the half that chose the cell, at 2 bp. second half and its acc/yr are the other half at 2 bp. kept is the second over the first. coin flip and record are the second half under those scenarios.
Table B columns. band is low up to 1 account a year, medium up to 4, high above. paid is the share of funded accounts paid at least once. days is the mean of days above. The last three columns are net a year under each scenario. A band with no row has no cell with a positive net.
Choosing from Table A. Take the row whose bound is the turnover to be accepted. Prefer a row whose coin flip is near zero or above it, because that income does not need the nights to keep paying. A second half far above first half is luck in the other direction, not a larger edge.
R.scenario_means()
nights count record bp 2 bp scenario all 6680 4.64 2.00 no decision, above the average 4766 5.29 2.65 no decision, under the average 1702 0.64 -2.00 decision nights 212 22.18 19.54 financing a night on the record: 0.82 bp, taken from the federal funds rate of each night
def tables(name):
R.choice_table(READS[name])
R.approach_table(GRIDS[name])
R.size_table(GRIDS[name])
R.expected(name, READS[name], EXPECTED)
3. The declarations¶
Each is committed before any cell of its firms is run on half of the record. The first covers FundedNext Flex, Topstep, Take Profit Trader and Purdia. The second covers Earn2Trade and Traders Launch, and adds the bound of three.
print(F.PREREG)
PRE-REGISTRATION -- every approach under each firm, with the choice held out (declared 2026-10-10)
WHAT IS ALREADY SEEN. night_futures sections 29 and 34 to 36: the night plan under FundedNext
Flex, Topstep and Purdia on the whole record, 1 to 4 MNQ (to 8 on Flex), with the best cell
taken from the same nights that scored it. rates_calendar: the two note trades, $126 and $175 a
trade. By hand before this declaration: decision nights alone and the note trades under Flex and
Topstep. While this module was written, at 500 to 1,000 accounts on the whole record at 2 bp:
Topstep's note and everything cells with the trade's cost paid once, and Take Profit Trader's
50K cells. Those reads showed note cells at Topstep netting several thousand dollars a year at
1 to 3 accounts a year, and Take Profit Trader near zero outside decision nights and one note.
No cell has been run on half of the record.
THE OPERATOR'S QUESTION. What each approach nets at each firm, and which cell to hold when few
funded accounts a year is preferred to the most income.
FIRMS, each from its own pages read 2026-10-09 and 2026-10-10 and pinned in a rules file.
FundedNext Flex rules_fundednext_plans.json. 30 / 50 / 80 micros. No rate product listed.
Topstep rules_topstep.json. The Scaling Plan's first tier: 20 / 30 / 30 micros. ZN listed.
Purdia rules_purdia.json. 50 / 100 micros. No rate product listed. Two stages, one prize.
Take Profit Trader rules_takeprofittrader.json. 50K only: the other sizes' Test prices were not
readable. The 50K price of $170 is inferred from the firm's promotion pages.
PRO account: $2,000 limit that trails the highest point inside the day and
stops at the start; withdrawals of all balance above a $2,000 buffer at 80%;
$130 to activate; resets at $99 in the Test. 60 micros. ZN listed.
TradeDay rules_tradeday.json. Its page lists Indonesia among the countries it cannot
accept, so it is not simulated.
APPROACHES.
nights 1, 2, 3, 4, 6, 8, 12, 16 MNQ from 18:05 to 09:25, every night or only above the
200-day average, the same position on a decision night
fed nights 2, 4, 8, 16, 32 MNQ on the night before a Federal Reserve decision, flat otherwise
nights and fed the nights cells with twice the position on a decision night
month-end note 1, 2, 3, 5 ZN long over the last three trading days of a month
both note trades the same with 1, 2, 3, 5 ZN short over the three days before a 10-year auction
everything 1, 2, 4 MNQ with twice that on a decision night, and 1 or 2 ZN in both note trades
A cell above the firm's contract limit is left out, one ZN counting as ten micros.
Each with a request as soon as allowed or at the cap, on each account size.
MODEL. night_futures' plan.lives for Flex and Topstep, plan.purdia_cell for Purdia, tpt_lives
here for Take Profit Trader. What is new:
Note days. One ZN's dollars from daily settlements, and the day's worst point from the daily
low or high. Every firm closes positions at the end of its trading day, so the note trade
is entered again each day and pays one tick and two commissions each day. The two hours
between a firm's close and the reopen are not seen. The note's worst point is added to the
night's, as if both came at once.
Cells with the auction short draw from the nights since 2014-01-01, where that trade was
declared. Other cells draw from the whole record, 2000 to 2026.
Take Profit Trader. A night's high is attached as its low was in night_futures section 29,
drawn apart from the low. Whether the high or the low comes first is a coin flip. A flat
week pays $1.50 for a placeholder trade. Withdrawal at $500 or at $2,000 above the buffer.
Purdia. A cell has no request. A funded account is one prize.
SCENARIOS. The record's own nights; ordinary nights moved to a mean of 2 bp; a coin flip, with
decision nights, nights above and under the average, long note days and short note days each
moved to a mean of zero. At 2 bp the note trades keep their own mean.
TURNOVER. Funded accounts a slot a year = 365.25 over the days one account and its challenge
attempts take. Low is at most 1. Medium is at most 4. High is above 4.
THE CHOICE, fixed here. The record a cell draws from is cut in two by date. On the first half at
2 bp, for each firm and each of low, medium and any turnover: the cell with the most net a year
among cells with a positive net. Each chosen cell is then run once on the second half at the
three scenarios. The firm's plan is the medium choice.
REPORTED. Every cell on the whole record at the three scenarios. For each approach and band the
best whole-record cell at 2 bp. The chosen cells on both halves. 2,000 accounts a cell.
This is a read under four rulebooks with one held-out choice. It is not a test and has no
t-statistic. A second-half figure under the first-half figure by more than half says the choice
was fitted to its nights.
NOT IN THE MODEL. Topstep's higher Scaling Plan tiers, its call-up to a live account, its
Focused Trader Program. Flex's price after the first purchases and its Disciplined Trader
Program. Take Profit Trader's rule to be flat one minute around payrolls and CPI at 08:30, its
PRO+ account, its ban on automated orders. Any refused payout at any firm.
EXPECTED, written before scoring.
Topstep, medium: a note or everything cell on the 100K or 150K requested at the cap, $5,000 to
$9,000 a year at 2 bp on the first half, and 40% to 80% of that on the second half.
Topstep, low: decision nights alone or one ZN, $1,000 to $3,000.
Flex, medium: 1 MNQ above the average on the 150K at the cap, $2,000 to $4,000.
Take Profit Trader: at most $2,500 in the medium band and about $1,000 in the low band.
Purdia: under $1,500 in every band.
As a coin flip every low choice nets within $500 of zero.
SCORED ONCE. No cell, band, limit or rule is changed after looking.
print(F.PREREG_2)
PRE-REGISTRATION 2 -- Earn2Trade and Traders Launch, and a bound of three accounts a year (declared 2026-10-11)
WHAT IS ALREADY SEEN. Everything in the first declaration and its results: the four firms' cells
on the whole record and on both halves. For the two firms here: pass rates and funded-account
costs, and the count of cells. No cell of either firm has been run on any nights.
FIRMS, each from its own pages read 2026-10-11 and pinned in a rules file.
Earn2Trade rules_earn2trade.json. Gauntlet Mini 50K, 100K, 150K, 200K, monthly fee, on a
LiveSim funded account. Limit follows the highest close and stops at the
start. A daily loss limit ends the account. Weekly withdrawals: 50% of a
withdrawal under a threshold, 80% at or above it. $139 from the first
withdrawal. A new account holds the ladder's first tier: 20 / 30 / 40 / 50
micros. ZN is named in its commission chart. Flat 16:50 to 18:00 New York.
Traders Launch rules_traderslaunch.json. Standard plan at 80%, 100K, 200K, 300K, one fee.
Limit of $1,000 / $2,000 / $3,000 follows the highest close and stops at
the start. Payout once the balance is 1% above the start, any day, no cap.
20 / 40 / 60 micros. No rate product is listed. Hours 18:00 to 16:00.
Not simulated Blue Guardian Futures and AquaFunded list Indonesia among the countries
they cannot accept (rules_blueguardian.json, rules_aquafutures.json). E8's
futures rule pages did not load (rules_e8futures.json): no hours, contract
limits or payout rules were read.
MODEL. eod_lives here, for both firms. Approaches, cells, scenarios, turnover bands, the cut of
the record and the rule of choice are the first declaration's. What is assumed:
Earn2Trade. The $5,000 'Max Withdrawal' is the most one account ever pays, and the account
ends there. The page does not say whether it is that or a cap on one request. Request
'cap': one withdrawal of $5,000 when the balance reaches it. Request 'soon': the loss limit
stays in the account, and all above it is withdrawn once that reaches the 80% threshold.
Challenge: four no-edge bets of 29%, 29%, 29% and 13% of the target, because no day may
reach 30% of the profit, each risking the daily loss limit. A failed attempt costs the reset
where a price was read (100K, 150K, 200K) and a new month on the 50K.
Traders Launch. The 1% stays in the account. Request 'soon': withdraw at $500 above it.
Request 'cap': withdraw at one loss limit above it. The limit is checked against a night's
worst point, as at the other firms. Its page does not say whether it is. Challenge: three
bets of 40%, 40%, 20%, one fee an attempt.
Both. A flat week pays $1.50 for a placeholder trade. $1.50 a round turn for one MNQ.
THE CHOICE. As in the first declaration: on the first half at 2 bp, for each firm and each of
low, medium and any turnover, the cell with the most net a year among cells with a positive net.
Each chosen cell is run once on the second half at the three scenarios.
A BOUND OF THREE, a read after the fact. The first declaration's medium choices used 4.8 to 6.5
funded accounts a year on the second half against a bound of 4. For Flex, Topstep and Take
Profit Trader the first-half cell with the most net at no more than 3 accounts a year is run on
the second half. Those cells' first-half figures are already seen: Topstep $7,939, Flex $4,616,
Take Profit Trader $1,699. The second half has been scored once already, so this is not a
hold-out. For the two firms here the bound of three is chosen and scored with the other bands.
NOT IN THE MODEL. Earn2Trade's Live account, its Trader Career Path, its higher ladder tiers,
the partner firm's and broker's approval. Traders Launch's scaling to 15 minis, its pause at
$100,000 paid, its 60-day limit on a challenge. Any refused payout. Traders Launch's terms call
payouts discretionary.
EXPECTED, written before scoring.
Traders Launch, low: 1 or 2 MNQ on the 200K or 300K, $1,500 to $3,500 a year on the first half.
Traders Launch, medium: 3 to 6 MNQ on the 200K or 300K, $4,000 to $9,000.
Earn2Trade, low: under $1,000. Medium: $1,000 to $3,000 on the 100K with the request 'cap'.
Earn2Trade nets less than Topstep in every band.
Each second-half figure is at least half of its first-half figure.
As a coin flip every low choice nets within $500 of zero.
Bound of three: second-half accounts a year stay under 4 at Flex and Topstep.
SCORED ONCE. No cell, band, limit or rule is changed after looking.
4. The note trades as days¶
The note trades come from rates_calendar. Every firm here closes positions at the end of its trading day, so the trade is entered again each day and pays its cost each day. rates_calendar paid the cost once, and read $175 and $126 a trade.
NOTE = F.note_check()
print(f"long into month-end n={NOTE['long_n']:>4} mean ${NOTE['long_mean']:>6.0f} a trade, one ZN, cost paid each day")
print(f"short before an auction n={NOTE['short_n']:>4} mean ${NOTE['short_mean']:>6.0f} a trade")
print(f"one day held sd ${NOTE['day_sd']:.0f} worst point ${NOTE['day_worst']:,.0f} {NOTE['days_a_year']:.0f} days a year")
long into month-end n= 278 mean $ 139 a trade, one ZN, cost paid each day short before an auction n= 155 mean $ 95 a trade one day held sd $423 worst point $-2,673 50 days a year
5. The firms that are run, and the firms that are not¶
A firm is run when a resident of Indonesia can open an account and its rule pages can be read.
RUN = (("FundedNext Flex", "first", "2026-10-09", 5, "plan.lives"), ("Topstep", "first", "2026-10-09", 5, "plan.lives"), ("Take Profit Trader", "first", "2026-10-10", 5, "core.tpt_lives"),
("Purdia", "first", "2026-10-10", 3, "plan.purdia_cell"), ("Earn2Trade", "second", "2026-10-11", 3, "core.eod_lives"), ("Traders Launch", "second", "2026-10-11", 5, "core.eod_lives"))
print(f"{'run':<20}{'declaration':<13}{'rules read':<12}{'slots':>6} simulator")
for name, declaration, read, slots, simulator in RUN:
print(f"{name:<20}{declaration:<13}{read:<12}{slots:>6} {simulator}")
print()
for label, file in (("TradeDay", "rules_tradeday.json"), ("Blue Guardian Futures", "rules_blueguardian.json"), ("AquaFunded futures", "rules_aquafutures.json"), ("E8 Markets futures", "rules_e8futures.json")):
r = json.loads((F.TOPIC / file).read_text())["indonesia"]
print(f"{'not run: ' + label:<32}Indonesia accepted: {str(r['allowed']):<7}{r['url']}")
print("\nE8: the one list read is the footer of its futures site. Its futures help centre sits behind a Cloudflare check, and no hours, contract limits or payout rules are read.")
run declaration rules read slots simulator FundedNext Flex first 2026-10-09 5 plan.lives Topstep first 2026-10-09 5 plan.lives Take Profit Trader first 2026-10-10 5 core.tpt_lives Purdia first 2026-10-10 3 plan.purdia_cell Earn2Trade second 2026-10-11 3 core.eod_lives Traders Launch second 2026-10-11 5 core.eod_lives not run: TradeDay Indonesia accepted: False https://tradeday.freshdesk.com/en/support/solutions/articles/103000123294-prohibited-countries not run: Blue Guardian Futures Indonesia accepted: False https://helpfutures.blueguardian.com/en/articles/15805753-introduction-to-blue-guardian-futures not run: AquaFunded futures Indonesia accepted: False https://intercom.help/aquafutures-help-center/en/articles/15692184-restricted-territories not run: E8 Markets futures Indonesia accepted: True https://e8futures.com/ E8: the one list read is the footer of its futures site. Its futures help centre sits behind a Cloudflare check, and no hours, contract limits or payout rules are read.
6. FundedNext Flex¶
- Account. The limit follows the end-of-day balance and stops $100 above the start. A reward needs five days of $200 or more, is at most half the balance up to a cap, and pays 95%. The account ends after five rewards.
- Funded account cost. three bets of 40%, 40% and 20% of the target; one fee, at the price that holds from the third purchase ($79.99 / $149.99 / $289.99). The first two purchases cost $10 to $40 less.
- Commission. $0.95 a side on MNQ, read from a rate table image in the firm's help article, not from text.
- Contracts. 30 / 50 / 80 micros on the 50K / 100K / 150K.
- Products. No rate product is listed, so the note approaches are absent.
tables("FundedNext Flex")
Table A. The choice under each bound
bound account position request first half acc/yr second half acc/yr kept paid coin flip record declared
low 150K 1 MNQ above the 200-day average, 2 MNQ on decision nights cap $2,691 0.59 $3,113 0.87 116% 42% -$372 $5,649 yes
three 150K 2 MNQ above the 200-day average, 4 MNQ on decision nights cap $4,019 2.28 $5,210 2.86 130% 34% -$779 $10,062 no
medium 150K 3 MNQ above the 200-day average, 6 MNQ on decision nights cap $5,212 3.88 $6,386 4.79 123% 29% -$1,266 $12,399 yes
any 150K 3 MNQ every night, 6 MNQ on decision nights cap $6,341 5.72 $5,364 5.99 85% 26% -$2,289 $12,279 yes
Table B. Each approach on the whole record
approach band account position request paid days accounts/yr net/yr 2 bp coin flip record
nights low 150K 1 MNQ above the 200-day average cap 41% 527 0.67 $2,298 -$361 $3,853
nights medium 150K 2 MNQ every night cap 25% 81 3.68 $3,387 -$811 $7,229
nights high 150K 3 MNQ every night cap 23% 43 5.95 $4,282 -$1,617 $9,032
fed nights low 150K 8 MNQ on decision nights soon 41% 563 0.63 $2,319 -$157 $2,525
fed nights medium 150K 32 MNQ on decision nights soon 19% 312 1.11 $1,802 -$1,077 $2,004
nights and fed low 150K 1 MNQ above the 200-day average, 2 MNQ on decision nights cap 46% 491 0.72 $3,072 -$273 $4,636
nights and fed medium 150K 2 MNQ every night, 4 MNQ on decision nights cap 28% 82 3.66 $4,635 -$998 $8,006
nights and fed high 150K 4 MNQ above the 200-day average, 8 MNQ on decision nights cap 24% 43 5.99 $5,747 -$1,657 $10,195
Table C. One funded account
account pass rate cost cells
50K 27.2% $294 68
100K 23.9% $626 74
150K 24.2% $1,197 74
Expected before scoring, against found
medium expected 1 MNQ above the average on the 150K at the cap, $2,000 to $4,000
found 150K, 3 MNQ above the 200-day average, 6 MNQ on decision nights, cap: $5,212 first half
Figure 1. Every whole-record cell at 2 bp. Look at how far left the cloud stays high. A cloud that only rises to the right earns from ending accounts.
R.frontier("FundedNext Flex", GRIDS["FundedNext Flex"])
Figure 2. Six accounts of the choice under the bound of three, on the second half at 2 bp. The line is the balance, the dashed line the balance that ends the account, a dot a withdrawal. Look for accounts that end before a first withdrawal.
R.account_paths("FundedNext Flex", PICKS["FundedNext Flex"])
7. Topstep¶
- Account. The limit follows the end-of-day balance and stops at the start. A payout needs five days of $150 or more, is at most half the balance up to a cap, and pays 90% less $30.
- Funded account cost. three bets of 40%, 40% and 20%; a monthly fee, a reset for each failed attempt, $149 to activate.
- Contracts. 20 / 30 / 30 micros, the Scaling Plan's first tier, so at most 2 or 3 ZN.
- Products. ZN is listed.
tables("Topstep")
Table A. The choice under each bound
bound account position request first half acc/yr second half acc/yr kept paid coin flip record declared
low 150K 3 ZN, month-end cap $4,750 0.66 $3,176 0.47 67% 42% $557 $3,176 yes
three 150K 2 MNQ every night, 4 MNQ on decision nights, 2 ZN, month-end and auction cap $7,715 2.39 $11,473 3.93 149% 28% -$12 $17,613 no
medium 100K 2 MNQ above the 200-day average, 4 MNQ on decision nights, 2 ZN, month-end and auction cap $8,206 3.94 $10,924 5.90 133% 29% $1,803 $16,074 yes
any 150K 12 MNQ every night, 24 MNQ on decision nights cap $19,039 9.88 $16,783 11.11 88% 16% $5,215 $34,813 yes
Table B. Each approach on the whole record
approach band account position request paid days accounts/yr net/yr 2 bp coin flip record
nights low 150K 1 MNQ above the 200-day average cap 45% 956 0.38 $2,786 $90 $4,549
nights medium 150K 3 MNQ above the 200-day average cap 27% 100 3.10 $6,898 $528 $10,485
nights high 150K 12 MNQ every night soon 19% 16 10.65 $18,157 $5,323 $26,112
fed nights low 150K 8 MNQ on decision nights soon 48% 1007 0.36 $3,340 $380 $3,524
nights and fed low 150K 1 MNQ above the 200-day average, 2 MNQ on decision nights cap 50% 910 0.39 $3,622 $184 $5,461
nights and fed medium 150K 3 MNQ above the 200-day average, 6 MNQ on decision nights cap 28% 92 3.31 $8,441 $666 $13,389
nights and fed high 150K 12 MNQ above the 200-day average, 24 MNQ on decision nights soon 23% 42 6.08 $24,340 $7,655 $32,683
month-end note low 150K 3 ZN, month-end cap 40% 657 0.54 $3,932 $894 $3,932
month-end note medium 100K 3 ZN, month-end soon 50% 236 1.44 $3,931 $1,503 $3,931
both note trades low 150K 2 ZN, month-end and auction cap 40% 578 0.61 $3,797 $201 $3,797
both note trades medium 150K 3 ZN, month-end and auction cap 30% 210 1.60 $5,177 $240 $5,177
both note trades high 50K 2 ZN, month-end and auction soon 49% 76 4.04 $3,664 $1,158 $3,664
everything low 150K 1 MNQ above the 200-day average, 2 MNQ on decision nights, 1 ZN, month-end and auction cap 48% 564 0.63 $5,680 $48 $8,539
everything medium 150K 2 MNQ above the 200-day average, 4 MNQ on decision nights, 2 ZN, month-end and auction cap 33% 123 2.60 $9,227 $38 $14,335
everything high 150K 4 MNQ above the 200-day average, 8 MNQ on decision nights, 2 ZN, month-end and auction cap 27% 51 5.33 $13,394 $891 $21,262
Table C. One funded account
account pass rate cost cells
50K 30.5% $310 84
100K 24.3% $556 104
150K 24.4% $963 104
Expected before scoring, against found
low expected decision nights alone or one ZN, $1,000 to $3,000
found 150K, 3 ZN, month-end, cap: $4,750 first half
medium expected a note or everything cell on the 100K or 150K at the cap, $5,000 to $9,000
found 100K, 2 MNQ above the 200-day average, 4 MNQ on decision nights, 2 ZN, month-end and auction, cap: $8,206 first half
Figure 1. Every whole-record cell at 2 bp. Look at how far left the cloud stays high. A cloud that only rises to the right earns from ending accounts.
R.frontier("Topstep", GRIDS["Topstep"])
Figure 2. Six accounts of the choice under the bound of three, on the second half at 2 bp. The line is the balance, the dashed line the balance that ends the account, a dot a withdrawal. Look for accounts that end before a first withdrawal.
R.account_paths("Topstep", PICKS["Topstep"])
8. Take Profit Trader¶
- Account. The limit follows the highest point inside the day, open profit included, and stops at the start. Whether a night's high or low comes first is a coin flip. Withdrawals come from the balance above a $2,000 buffer at 80%.
- Funded account cost. three bets of 40%, 40% and 20%; a monthly fee, a reset for each failed attempt, $130 to activate.
- Contracts. 60 micros on the 50K, the one size whose price is read.
- Products. MNQ and ZN are listed. Automated orders are banned, so this firm is traded by hand.
tables("Take Profit Trader")
Table A. The choice under each bound
bound account position request first half acc/yr second half acc/yr kept paid coin flip record declared
low 50K 1 ZN, month-end cap $1,280 0.50 $780 0.38 61% 43% -$26 $780 yes
three 50K 4 MNQ on decision nights cap $1,692 1.84 $2,112 1.15 125% 27% -$152 $2,559 no
medium 50K 1 MNQ above the 200-day average, 2 MNQ on decision nights, 1 ZN, month-end and auction cap $2,754 3.48 $4,023 5.26 146% 27% -$1,367 $6,893 yes
any 50K 32 MNQ on decision nights cap $9,483 7.21 $2,978 7.48 31% 8% $252 $3,156 yes
Table B. Each approach on the whole record
approach band account position request paid days accounts/yr net/yr 2 bp coin flip record
nights medium 50K 1 MNQ above the 200-day average cap 25% 125 2.62 $1,395 -$609 $2,905
nights high 50K 16 MNQ above the 200-day average soon 13% 7 17.26 $2,948 $1,219 $3,894
fed nights low 50K 2 MNQ on decision nights cap 38% 743 0.48 $1,133 -$178 $1,272
fed nights medium 50K 8 MNQ on decision nights cap 17% 84 3.70 $2,460 $131 $2,683
fed nights high 50K 32 MNQ on decision nights cap 11% 36 7.31 $6,809 $2,845 $6,876
nights and fed medium 50K 1 MNQ above the 200-day average, 2 MNQ on decision nights cap 26% 109 2.97 $1,820 -$760 $3,512
nights and fed high 50K 16 MNQ above the 200-day average, 32 MNQ on decision nights soon 12% 6 17.71 $3,561 $1,839 $4,122
month-end note low 50K 1 ZN, month-end cap 44% 803 0.45 $998 $2 $998
month-end note medium 50K 2 ZN, month-end cap 26% 151 2.20 $1,622 -$321 $1,622
month-end note high 50K 3 ZN, month-end cap 18% 67 4.47 $1,160 -$1,299 $1,160
both note trades medium 50K 1 ZN, month-end and auction cap 33% 280 1.24 $1,247 -$391 $1,247
both note trades high 50K 2 ZN, month-end and auction cap 20% 62 4.78 $1,321 -$1,152 $1,321
everything high 50K 1 MNQ above the 200-day average, 2 MNQ on decision nights, 1 ZN, month-end and auction cap 25% 63 4.75 $2,369 -$1,702 $4,752
Table C. One funded account
account pass rate cost cells
50K 30.4% $527 114
Expected before scoring, against found
low expected about $1,000
found 50K, 1 ZN, month-end, cap: $1,280 first half
medium expected at most $2,500
found 50K, 1 MNQ above the 200-day average, 2 MNQ on decision nights, 1 ZN, month-end and auction, cap: $2,754 first half
Figure 1. Every whole-record cell at 2 bp. Look at how far left the cloud stays high. A cloud that only rises to the right earns from ending accounts.
R.frontier("Take Profit Trader", GRIDS["Take Profit Trader"])
Figure 2. Six accounts of the choice under the bound of three, on the second half at 2 bp. The line is the balance, the dashed line the balance that ends the account, a dot a withdrawal. Look for accounts that end before a first withdrawal.
R.account_paths("Take Profit Trader", PICKS["Take Profit Trader"])
9. Purdia¶
- Account. Two stages end in one prize, so a cell has no request, and
paidis the share of second-stage accounts that reach the prize. The drawdown follows the end-of-day balance. - Funded account cost. a monthly subscription that renews until the evaluation is passed and then stops, a reset for each failed attempt, $130 to activate. The price of the second month and after is on no page, and the first month's price is used for every month. The evaluation is simulated at the cell's own position, not as three bets.
- Contracts. 50 / 100 micros on the 50K / 100K.
- Products. No rate product is listed, so the note approaches are absent.
tables("Purdia")
Table A. The choice under each bound
no cell nets above zero on the first half at 2 bp, so there is no choice under any bound
Table B. Each approach on the whole record
approach band account position request paid days accounts/yr net/yr 2 bp coin flip record
no cell nets above zero on the whole record at 2 bp
Table C. One funded account
account pass rate cost cells
50K 29.1% $676 37
100K 20.8% $1,555 37
Expected before scoring, against found
low expected under $1,500
found no cell with a positive net
medium expected under $1,500
found no cell with a positive net
Figure 1. Every whole-record cell at 2 bp. Look at how far left the cloud stays high. A cloud that only rises to the right earns from ending accounts.
R.frontier("Purdia", GRIDS["Purdia"])
Figure 2. Six accounts of the choice under the bound of three, on the second half at 2 bp. The line is the balance, the dashed line the balance that ends the account, a dot a withdrawal. Look for accounts that end before a first withdrawal.
R.account_paths("Purdia", PICKS["Purdia"])
Purdia: no choice under any bound, so no figure is drawn.
10. Earn2Trade¶
- Account. The limit follows the highest close and stops at the start. A night that loses the daily loss limit ends the account. One account pays at most $5,000 of profit in its life, at 80% for a withdrawal at or above a threshold and 50% under it.
captakes all of it in one withdrawal. - Funded account cost. four bets of 29%, 29%, 29% and 13%, because no day may reach 30% of the profit; a monthly fee, a reset for each failed attempt, $139 from the first withdrawal.
- Contracts. 20 / 30 / 40 / 50 micros on the 50K / 100K / 150K / 200K.
- Products. ZN is in the commission chart.
- Commission. The page gives micros at $0.82 to $1.08 a side and no figure for MNQ. $1.08 is used. ZN is $1.46 a side on Rithmic.
tables("Earn2Trade")
Table A. The choice under each bound bound account position request first half acc/yr second half acc/yr kept paid coin flip record declared low 200K 1 MNQ above the 200-day average cap $1,218 0.85 $1,409 1.33 116% 66% -$113 $2,705 yes three 200K 1 MNQ every night, 2 MNQ on decision nights, 1 ZN, month-end and auction cap $2,071 2.04 $2,059 2.67 99% 58% -$588 $3,670 yes medium 200K 2 MNQ every night, 4 MNQ on decision nights, 1 ZN, month-end and auction cap $3,708 3.82 $3,513 5.08 95% 56% -$191 $5,369 yes any 200K 4 MNQ every night, 8 MNQ on decision nights, 1 ZN, month-end and auction cap $4,330 6.45 $1,080 8.48 25% 42% -$2,520 $3,849 yes Table B. Each approach on the whole record approach band account position request paid days accounts/yr net/yr 2 bp coin flip record nights low 200K 1 MNQ above the 200-day average soon 53% 564 0.61 $346 -$592 $798 nights medium 200K 2 MNQ every night cap 51% 62 3.96 $2,024 $44 $3,493 nights high 200K 3 MNQ above the 200-day average cap 50% 57 4.17 $1,925 -$431 $3,200 fed nights low 200K 4 MNQ on decision nights cap 66% 341 0.98 $1,043 -$189 $1,144 fed nights medium 200K 8 MNQ on decision nights cap 55% 150 2.02 $1,297 -$747 $1,494 fed nights high 100K 16 MNQ on decision nights cap 29% 50 4.26 $415 -$1,987 $662 nights and fed low 200K 1 MNQ above the 200-day average, 2 MNQ on decision nights soon 56% 477 0.72 $488 -$649 $932 nights and fed medium 200K 2 MNQ above the 200-day average, 4 MNQ on decision nights cap 58% 85 3.16 $2,418 -$377 $3,502 nights and fed high 200K 2 MNQ every night, 4 MNQ on decision nights cap 55% 59 4.11 $2,610 -$31 $4,184 month-end note low 200K 2 ZN, month-end cap 74% 387 0.87 $1,210 $165 $1,210 month-end note medium 200K 3 ZN, month-end cap 66% 207 1.54 $1,657 $204 $1,657 both note trades low 200K 1 ZN, month-end and auction cap 87% 625 0.56 $1,043 -$20 $1,043 both note trades medium 200K 3 ZN, month-end and auction cap 57% 101 2.77 $2,022 -$134 $2,022 both note trades high 200K 5 ZN, month-end and auction cap 51% 42 5.04 $2,559 -$714 $2,559 everything medium 200K 2 MNQ above the 200-day average, 4 MNQ on decision nights, 1 ZN, month-end and auction cap 62% 64 3.86 $3,512 $267 $5,218 everything high 200K 2 MNQ above the 200-day average, 4 MNQ on decision nights, 2 ZN, month-end and auction cap 60% 54 4.32 $3,670 $48 $5,613 Table C. One funded account account pass rate cost cells
50K 11.7% $1,459 84
100K 12.2% $1,032 104
150K 12.4% $1,290 110
200K 14.4% $1,475 114
Expected before scoring, against found
low expected under $1,000
found 200K, 1 MNQ above the 200-day average, cap: $1,218 first half
medium expected $1,000 to $3,000 on the 100K with the request cap
found 200K, 2 MNQ every night, 4 MNQ on decision nights, 1 ZN, month-end and auction, cap: $3,708 first half
Figure 1. Every whole-record cell at 2 bp. Look at how far left the cloud stays high. A cloud that only rises to the right earns from ending accounts.
R.frontier("Earn2Trade", GRIDS["Earn2Trade"])
Figure 2. Six accounts of the choice under the bound of three, on the second half at 2 bp. The line is the balance, the dashed line the balance that ends the account, a dot a withdrawal. Look for accounts that end before a first withdrawal.
R.account_paths("Earn2Trade", PICKS["Earn2Trade"])
11. Traders Launch¶
- Account. The limit follows the highest close and stops at the start, and is checked against a night's worst point. A payout needs the balance 1% above the start, has no cap, and pays 80%.
soonwithdraws at $500 above the 1%,capat one loss limit above it. - Funded account cost. three bets of 40%, 40% and 20%; one fee, no activation.
- Contracts. 20 / 40 / 60 micros on the 100K / 200K / 300K.
- Products. No Treasury future is listed, so the note approaches are absent.
- Buying again. The terms say a trader who fails the funded stage "may be ineligible to reapply unless expressly stated otherwise". No other page settles it. Every row here replaces an ended account with a new one, so every row is an upper case under that clause.
tables("Traders Launch")
Table A. The choice under each bound
bound account position request first half acc/yr second half acc/yr kept paid coin flip record declared
low 300K 4 MNQ on decision nights cap $1,014 0.79 $1,842 0.41 182% 52% -$1,277 $2,308 yes
three 300K 16 MNQ on decision nights cap $5,008 2.90 $5,201 2.81 104% 34% -$2,051 $5,055 yes
medium 200K 16 MNQ on decision nights soon $7,820 3.73 $6,460 3.86 83% 35% $1,635 $7,562 yes
any 200K 32 MNQ on decision nights cap $11,886 5.60 $5,647 5.82 48% 17% -$272 $5,757 yes
Table B. Each approach on the whole record
approach band account position request paid days accounts/yr net/yr 2 bp coin flip record
nights medium 300K 1 MNQ above the 200-day average cap 36% 315 1.10 $278 -$3,309 $2,291
nights high 100K 16 MNQ every night soon 19% 2 18.06 $5,509 $4,413 $5,486
fed nights low 300K 4 MNQ on decision nights cap 48% 617 0.58 $1,561 -$1,476 $1,853
fed nights medium 200K 16 MNQ on decision nights soon 36% 76 3.87 $6,943 $1,726 $7,596
fed nights high 200K 32 MNQ on decision nights cap 20% 45 5.77 $8,034 $2,649 $8,672
nights and fed medium 300K 1 MNQ above the 200-day average, 2 MNQ on decision nights cap 40% 298 1.16 $910 -$3,519 $2,920
nights and fed high 200K 16 MNQ every night, 32 MNQ on decision nights soon 26% 2 18.01 $3,704 $1,585 $5,529
Table C. One funded account
account pass rate cost cells
100K 23.7% $670 64
200K 24.2% $1,235 74
300K 24.4% $2,458 74
Expected before scoring, against found
low expected 1 or 2 MNQ on the 200K or 300K, $1,500 to $3,500
found 300K, 4 MNQ on decision nights, cap: $1,014 first half
medium expected 3 to 6 MNQ on the 200K or 300K, $4,000 to $9,000
found 200K, 16 MNQ on decision nights, soon: $7,820 first half
Figure 1. Every whole-record cell at 2 bp. Look at how far left the cloud stays high. A cloud that only rises to the right earns from ending accounts.
R.frontier("Traders Launch", GRIDS["Traders Launch"])
Figure 2. Six accounts of the choice under the bound of three, on the second half at 2 bp. The line is the balance, the dashed line the balance that ends the account, a dot a withdrawal. Look for accounts that end before a first withdrawal.
R.account_paths("Traders Launch", PICKS["Traders Launch"])
12. Expectations across firms¶
The declarations also state four expectations that span firms.
low = {n: r[r.band == "low"] for n, r in READS.items()}
print("expected every low choice within $500 of zero as a coin flip")
print("found " + ", ".join(f"{n} {R.money(x['test coin'].iloc[0])}" for n, x in low.items() if len(x)))
print("\nexpected Earn2Trade nets less than Topstep under every bound, on the second half")
for b, _ in F.BOUNDS:
e, t = (READS[n][READS[n].band == b] for n in ("Earn2Trade", "Topstep"))
show = lambda x: R.money(x['test 2 bp'].iloc[0]) if len(x) else "no choice"
print(f"found {b:<7} Earn2Trade {show(e)} Topstep {show(t)}")
print("\nexpected Earn2Trade and Traders Launch: each second-half figure at least half of its first-half figure")
print("found " + ", ".join(f"{n} {x.band} {x['test 2 bp'] / x.train_net_year:.0%}" for n in F.LATER for _, x in READS[n].iterrows()))
print("\nexpected the bound of three uses under 4 accounts a year on the second half at Flex and Topstep")
print("found " + ", ".join(f"{n} {r[r.band == 'three'].test_accounts_year.iloc[0]:.2f}" for n, r in READS.items() if len(r) and (r.band == "three").any()))
expected every low choice within $500 of zero as a coin flip found FundedNext Flex -$372, Topstep $557, Take Profit Trader -$26, Earn2Trade -$113, Traders Launch -$1,277 expected Earn2Trade nets less than Topstep under every bound, on the second half found low Earn2Trade $1,409 Topstep $3,176 found three Earn2Trade $2,059 Topstep $11,473 found medium Earn2Trade $3,513 Topstep $10,924 found any Earn2Trade $1,080 Topstep $16,783 expected Earn2Trade and Traders Launch: each second-half figure at least half of its first-half figure found Earn2Trade low 116%, Earn2Trade three 99%, Earn2Trade medium 95%, Earn2Trade any 25%, Traders Launch low 182%, Traders Launch three 104%, Traders Launch medium 83%, Traders Launch any 48% expected the bound of three uses under 4 accounts a year on the second half at Flex and Topstep found FundedNext Flex 2.86, Topstep 3.93, Take Profit Trader 1.15, Earn2Trade 2.67, Traders Launch 2.81
13. Corrected inputs (2026-10-11)¶
Six reviewers, one a firm, checked the papers against the rule files and the simulators. They worked 34 short accounts by hand and the simulators matched 31. The inputs below were wrong or unread, and are corrected in this run. published_09ad177.json holds Table A as published in research 09ad177, and the cell prints it beside Table A now.
| input | published | now |
|---|---|---|
| Federal Reserve decision list | 210 days, without 2024-01-31 and 2026-07-29 | 212 days, with a count for each year beside the scheduled count |
| FundedNext Flex challenge price | the discounted price for every purchase | the price from the third purchase |
| MNQ commission, a round trip | $1.00 at every firm | $1.90 Flex, $1.22 Topstep, $1.50 Take Profit Trader, $2.16 Earn2Trade, $1.00 Traders Launch |
| ZN commission, a round trip | $1.60 at every firm | $2.62 Topstep, $4.50 Take Profit Trader, $2.92 Earn2Trade |
| Purdia MNQ cost | $1.82 and no spread | $1.82 and one tick |
| Purdia subscription | charged once | charged each month until the evaluation is passed |
financing in the record column |
none | the federal funds rate of each night |
| cache files | named by firm and account count | named also by a hash of the rule files, the decision list and the code |
The 2 bp scenario, the modelled lows and the choice of bounds are as published. Table A's last column is declared in place of held out.
PUBLISHED = json.loads((F.TOPIC / "published_09ad177.json").read_text())
R.corrections(READS, PUBLISHED)
firm bound published choice 2nd half coin choice now 2nd half coin acc/yr FundedNext Flex low 150K, 1 MNQ above the 200-day average, 2 MNQ on decision nig $3,469 $53 150K, 1 MNQ above the 200-day average, 2 MNQ on decision nig $3,113 -$372 0.87 FundedNext Flex three 150K, 2 MNQ above the 200-day average, 4 MNQ on decision nig $6,083 $133 150K, 2 MNQ above the 200-day average, 4 MNQ on decision nig $5,210 -$779 2.86 FundedNext Flex medium 150K, 3 MNQ above the 200-day average, 6 MNQ on decision nig $7,736 -$21 150K, 3 MNQ above the 200-day average, 6 MNQ on decision nig $6,386 -$1,266 4.79 FundedNext Flex any 150K, 3 MNQ every night, 6 MNQ on decision nights $6,856 -$720 150K, 3 MNQ every night, 6 MNQ on decision nights $5,364 -$2,289 5.99 Topstep low 150K, 3 ZN, month-end $3,286 $566 150K, 3 ZN, month-end $3,176 $557 0.47 Topstep three 150K, 2 MNQ every night, 4 MNQ on decision nights, 2 ZN, mon $12,240 $405 150K, 2 MNQ every night, 4 MNQ on decision nights, 2 ZN, mon $11,473 -$12 3.93 Topstep medium 100K, 2 MNQ above the 200-day average, 4 MNQ on decision nig $11,957 $2,420 100K, 2 MNQ above the 200-day average, 4 MNQ on decision nig $10,924 $1,803 5.90 Topstep any 150K, 12 MNQ above the 200-day average, 24 MNQ on decision n $21,785 $7,701 150K, 12 MNQ every night, 24 MNQ on decision nights $16,783 $5,215 11.11 Take Profit Trader low 50K, 1 ZN, month-end $850 $17 50K, 1 ZN, month-end $780 -$26 0.38 Take Profit Trader three 50K, 4 MNQ on decision nights $2,366 -$104 50K, 4 MNQ on decision nights $2,112 -$152 1.15 Take Profit Trader medium 50K, 1 MNQ every night, 2 MNQ on decision nights, 1 ZN, mont $3,279 -$2,055 50K, 1 MNQ above the 200-day average, 2 MNQ on decision nigh $4,023 -$1,367 5.26 Take Profit Trader any 50K, 32 MNQ on decision nights $3,143 $263 50K, 32 MNQ on decision nights $2,978 $252 7.48 Purdia low 100K, 1 MNQ every night, 2 MNQ on decision nights $530 -$209 no cell nets above zero on the first half Purdia three 50K, 1 MNQ every night, 2 MNQ on decision nights $657 -$276 no cell nets above zero on the first half Purdia medium 50K, 1 MNQ every night, 2 MNQ on decision nights $657 -$276 no cell nets above zero on the first half Purdia any 50K, 1 MNQ every night, 2 MNQ on decision nights $657 -$276 no cell nets above zero on the first half Earn2Trade low 200K, 1 MNQ above the 200-day average $1,543 $0 200K, 1 MNQ above the 200-day average $1,409 -$113 1.33 Earn2Trade three 200K, 1 MNQ every night, 2 MNQ on decision nights, 1 ZN, mon $2,249 -$396 200K, 1 MNQ every night, 2 MNQ on decision nights, 1 ZN, mon $2,059 -$588 2.67 Earn2Trade medium 200K, 2 MNQ every night, 4 MNQ on decision nights, 1 ZN, mon $3,934 $326 200K, 2 MNQ every night, 4 MNQ on decision nights, 1 ZN, mon $3,513 -$191 5.08 Earn2Trade any 200K, 4 MNQ every night, 8 MNQ on decision nights, 1 ZN, mon $1,573 -$2,364 200K, 4 MNQ every night, 8 MNQ on decision nights, 1 ZN, mon $1,080 -$2,520 8.48 Traders Launch low 300K, 4 MNQ on decision nights $2,159 -$1,202 300K, 4 MNQ on decision nights $1,842 -$1,277 0.41 Traders Launch three 300K, 16 MNQ on decision nights $5,552 -$2,235 300K, 16 MNQ on decision nights $5,201 -$2,051 2.81 Traders Launch medium 200K, 16 MNQ on decision nights $6,499 $1,443 200K, 16 MNQ on decision nights $6,460 $1,635 3.86 Traders Launch any 200K, 32 MNQ on decision nights $5,506 -$407 200K, 32 MNQ on decision nights $5,647 -$272 5.82
OUT = dict(note=NOTE, picks=PICKS, slugs=R.SLUGS, drawn={n: R.drawn(p) for n, p in PICKS.items()},
reads={n: json.loads(r.to_json(orient="records")) for n, r in READS.items()},
sizes={n: json.loads(F.sizes(g).to_json(orient="records")) for n, g in GRIDS.items()},
approaches={n: json.loads(F.by_approach(g).to_json(orient="records")) for n, g in GRIDS.items()},
cells={n: json.loads(F.wide(g).to_json(orient="records")) for n, g in GRIDS.items()})
(F.TOPIC / "results.json").write_text(json.dumps(OUT, indent=1, default=float))
print("results.json written:", {n: len(c) for n, c in OUT["cells"].items()})
results.json written: {'FundedNext Flex': 216, 'Topstep': 292, 'Take Profit Trader': 114, 'Purdia': 74, 'Earn2Trade': 412, 'Traders Launch': 212}
What this doesn't show¶
- A refused payout. Every firm keeps the right to refuse an account or a payout. None is modelled.
- Five slots at once. All slots hold the same trade, so a bad night reaches all of them. The mean a slot is unchanged. The spread of a year's total is wider than separate accounts would give.
- The note trade inside the day. A daily bar has no path. The note's worst point and the night's are added as if they came together, and the two hours between a firm's close and the reopen are not seen.
- Topstep beyond its first tier. The Scaling Plan lets a larger position on after profit. The call-up to a live account closes every Express Funded Account. Neither is modelled.
- Take Profit Trader's news rule. The position must be flat one minute around payrolls and CPI at 08:30 New York. The model holds through. Its other account sizes are not run. A night's high is attached from the futures ledger, not observed.
- Purdia's account path. The two-stage simulator keeps no path, so Purdia has no Figure 2.
- Earn2Trade after the maximum. The firm's page gives a $5,000 "LiveSim Max Withdrawal" and does not say what it bounds. Three review sites read it as the account's total: $4,000 paid, then a move to a Live account. The model ends the account there. The $50 fee on each withdrawal outside the United States is not in the model.
- Traders Launch inside the day. Its page does not say whether the limit is checked inside the day. The model checks it against a night's worst point. Its terms call payouts discretionary.
- The selected effects at a lower size.
2 bplowers the plain index night only. The 200-day rule, the decision night and the note trades enter at the size the record measured. No scenario here sets each to the lower end of its own interval. - A held-out half. Every cell was scored on the whole record before the halves were cut.
- A night's path. Every low inside a night is drawn from 654 futures nights of 2024 to 2026. The nights of 2000 to 2002 and 2008 may have run deeper than any of those.
- The auction short as declared.
rates_calendardeclared one statistic for the auction and scored t 2.27. The short traded here is one of its three legs, read at t 3.54 after the three were seen. - Purdia's renewal price, and FundedNext's commission as text. The first is on no page. The second is read from an image.
- Take Profit Trader's news rule on the note trades, and exchange fees on top of its commissions. Neither is in the model.
- The firms' pages today. Each rules file carries the date it was read. Nothing here re-reads them.
- A test. This is a read. Nothing here has a t-statistic.
Verification. jupyter nbconvert --execute on this notebook, clean, 2026-10-11. Grids are cached in reports/_cache/firm_plans/.