How a challenge is graded
- Your challenge has its own books
- What counts as a scored call
- The forecast score
- The exact formula
- What that means for how you trade
- How current the number you are looking at is
- How drawdown is measured
- How profit is measured
- No single day may be more than half your profit
- What ends a challenge
- One deliberate piece of slack, in your favour
- About "a day"
- It is a UTC day, and it does not begin at your midnight
- Some cohorts run a shorter day
- Who decides, and what you have to trust
- The daily loss limit is stricter than it looks, on purpose
Four criteria, all of them measured from your own fills, all of them computed by one rule that is applied identically to every trader. This page says exactly what each one means, because two of them do not mean what they mean at other firms.
Your challenge has its own books
A paid challenge is a separate ledger, not a view over your general balance. Every fill you make carries the challenge it belongs to, and settlement, refunds on voided rounds and grading all route to that ledger.
So free practice cannot contaminate a challenge result, and trading you did before you bought the challenge cannot move its drawdown. If you have practised badly for a week, your challenge still starts clean.
What counts as a scored call
Not every trade is a call. A position has to clear four filters before it counts toward your call count and your forecast score.
| Filter | The bar | Why |
|---|---|---|
| It belongs to this challenge | this ledger only | practice does not count either way |
| It resolved inside your window | between the start and the end | |
| It risked real size | at least $0.50 of cost | a one-cent position is not a forecast |
| It is not a hedge | at most half the position on the other side | both-siding a round removes the risk you are being scored on |
| It was entered early enough | at least 30 seconds before the round resolves | entering seconds before settlement is reading the result, not forecasting it |
That last filter is worth pausing on, because it used to be missing. It applied to the free public leaderboard and not to the paid grader, which meant the challenge somebody paid $75 to be graded on was looser than the free board. Entries placed next to settlement inflated both the call count and the score on the one grade that decides a funded seat.
The forecast score
Your forecast score runs 0 to 100 and measures edge, meaning how much better your entry price was than the outcome that actually happened, with a penalty for a small sample.
For each scored call, edge is the outcome minus what you paid per share. Buy at 40 cents on something that resolves yes, and your edge on that call is +60 cents. Buy at 40 cents on something that resolves no, and it is -40 cents.
The score is not your average edge. It is the lower end of a confidence interval around your average edge, shrunk further when you have few calls.
The exact formula
Nothing about this is secret, and it was wrong to leave you to work it out from deltas. Over the calls that passed the four filters above, with n of them:
edge = outcome (1 or 0) - price paid per share, per scored call
lcb = mean(edge) - 1.645 * sd(edge) / sqrt(n) (sd = 0.25 when n = 1)
score = 100 / (1 + e^(-20 * lcb * n/(n+20)))lcb is a lower confidence bound: the value your true mean edge is about 95% likely to be above, not the mean you happened to record. n/(n+20) is the shrinkage that stops a tiny sample from saturating the curve. Both halves of the score are computed by the same code the grader runs, and the same numbers are published by fortell_challenge_catalog and carried on every fortell_brief and fortell_progress result, so an agent can reproduce them.
Some points on the curve:
| Calls | Lower bound on edge | Score |
|---|---|---|
| 1 | +20.9c (one call at +62c of observed edge, against the n=1 prior) | 55 |
| 5 | +20c | 69 |
| 30 | +5c | 65 |
| 30 | +15c | 86 |
What that means for how you trade
Three properties follow from the formula, and all three are deliberate.
It is a lower bound, so a small sample is punished. The
1.645 * sd / sqrt(n)term is large whilenis small, so the score climbs with a real edge held over many calls rather than with one good call. There is no way to reach the bar quickly.The shrinkage means early calls barely move it.
n/(n+20)is 0.05 at your first call and 0.6 at your thirtieth. Before that term existed, a single call with +62 cents of edge scored 99, which is exactly backwards. The same call now scores 55.Inconsistency is punished automatically. One enormous win widens
sd(edge), which drags the lower bound down. That is why there is no separate rule capping how much of your profit may come from one day. The statistics already do it.
And the filter that catches people out: a call that is not scored is worth nothing here. A hedged call, a call under $0.50, and a call entered inside 30 seconds of the close are all absent from n and from mean(edge) entirely. They are not scored as zero, they are not scored at all, while they have still spent your per-round cap and your loss budget.
A genuine edge held over the required number of calls clears the bar comfortably. Three lucky trades do not.
How current the number you are looking at is
Your profit and your drawdown move the instant a round settles, because they are computed from your own fills. Scored calls and the forecast score need one more thing: the round's resolved winner and its closing line, which a background job writes down every three minutes. So for a minute or two after a settle, your profit will have moved and your call count will not have.
That is the job catching up, not a call that failed to count, and you should not have to guess which. Every payload that carries the two figures also carries when they were last complete and how many settled rounds are still outstanding.
How drawdown is measured
This one is different from most firms and the difference is in your favour.
Your equity is marked, not cash only. It is your challenge cash, plus what your open positions are currently worth, so it moves while a round is still running rather than jumping at settlement.
Drawdown is measured peak to trough as a fraction of the peak, and it only ever ratchets up:
peak = the highest your equity has ever been, starting at your challenge capital
drawdown = the largest (peak - equity) / peak you have ever reachedThe important part is / peak rather than / starting capital. If you run a $500 Standard challenge up to $698, your floor moves up with you and sits at $523.50, not at $375. Earlier versions divided by the starting balance, which meant the grader failed you at $573 while the chart on your own dashboard drew the floor at $523.50. One rail, three different formulas, and the one that ended runs was the strict outlier.
This costs Fortell nothing, which is why it can be the generous version. Your peak is never below your starting capital, so the worst case is a trader who never profits, whose floor is 25% below where they started, which is exactly the cover Fortell reserved.
How profit is measured
Profit is your marked equity minus your starting capital, as a percentage of your starting capital. +4% of a $500 Standard challenge is +$20. Open positions count at their current value, so you do not have to be flat at the deadline.
No single day may be more than half your profit
Your best day may account for at most 50% of what the whole run made. Standard and Pro are both 50%.
It is a bar to clear, not a rule to breach. Being over it does not end your run and does not fail you. It sits with scored calls, the forecast score, drawdown and profit: you have not passed yet, and you keep trading exactly as before. That is the same way FTMO and Topstep run theirs.
It comes down by earning on another day, never by stopping. The share is your best day over what the run made in total, and that total nets your losing days in. So a losing day shrinks the total and pushes the share up; the only move that helps is profit on another day. Until a run is in profit overall there is nothing to concentrate and this criterion is met.
A day here is the same day your loss cap resets on, and a day's figure is the profit or loss on positions that closed in it, so an open position counts for nothing until it settles. The parts add up to the whole: every round trip is booked exactly once, in the day it closed, and those days sum to the run's realised result.
Why the forecast score does not already cover this. The score reads the edge on each call, which is what the round resolved to minus the price you paid per share. It never reads how much you staked. A $1 call and a $20 call move it by exactly the same amount. So thirty small calls on favourites plus one maximum-size longshot that lands can produce an entirely ordinary score while nearly all of the profit came off the one call, and the per-round size limit does not help: it bounds what you may stake, not what a longshot returns. This is the criterion that reads dollars.
What ends a challenge
Checked continuously, in this order.
Blowing the drawdown limit ends it immediately, with the breach recorded.
Blowing the daily loss limit ends it immediately.
Meeting all five criteria passes it, either at the end of the window or from day 7 onward, whichever comes first. A pass is permanent.
Reaching the end of the window without meeting all five fails it.
Otherwise nothing is decided and your live progress is updated.
A breach ends the run on the spot. It did not always: the copy promised that while the code only failed people at the end of the window, so a blown account kept trading for days. Daily loss is a hard breach rather than a soft warning for the same reason. Losses land when a position settles, which is long after you bought it, and one trader sat at $45.63 of loss against a $30 limit. A limit you can exceed and which then merely complains is not a limit.
One deliberate piece of slack, in your favour
If your window closes while a round you traded has not resolved yet, that round is a call that is missing from your count right now and will be there in a minute. Failing you on that would be the deadline racer's worst case: sitting one call short with a round that settled twenty seconds before the bell.
So a fail waits while such a round exists, up to six hours. A pass is never held back, because more resolutions can only add calls. A breach is a breach either way, because breaches are computed from your equity rather than from your call count.
About "a day"
The daily loss limit resets, the window is counted, and the day-7 early-pass door opens, all in the same unit. On mainnet that unit is a real 24-hour day.
It is a UTC day, and it does not begin at your midnight
This is the single most expensive thing to get wrong on this page, so it is stated before anything else about the unit. The boundary is fixed to UTC. It falls at 00:00 UTC, the same instant for every trader on earth, and it is not your local midnight unless you happen to live on UTC.
Worked through for a reader five and a half hours ahead of UTC:
Your daily loss allowance turns over in the early morning, five and a half hours after your own midnight, and not at midnight.
A loss you take at 2am is charged to the day that is still running, not to the new one.
A day you started well can end badly at 5am and reset half an hour later.
Nothing about the rule changes with where you are. What changes is which of your waking hours fall inside one unit, and that is worth working out once, at the start, rather than discovering it from a number you think is broken.
You should not have to do the arithmetic in the product itself. Wherever Fortell shows you this limit, it also states when the current window ends as a wall clock in your own time zone rather than leaving you to convert one. Where a figure is described as "today" or "so far today", that is this unit and not your calendar day.
Some cohorts run a shorter day
Some beta cohorts run on a compressed clock, where a "day" is shorter so a 14-day challenge finishes in an afternoon. Your challenge records which clock it was sold under and is graded on that one throughout. This matters if you are comparing your result to somebody else's: a pass rate measured on one clock is not the same quantity as a pass rate measured on the other, and Fortell does not pool them.
A shorter unit is still anchored to UTC. It does not start when you started, and it does not start at your midnight either; it just means more boundaries per calendar day.
Who decides, and what you have to trust
Worth stating plainly rather than leaving you to discover it.
The grade is computed off chain. A service reads your fills out of a database, applies the rule, and writes down pass or fail. No Solana program checks the grade. The program that funds your seat is told you passed and believes it.
The programs say so themselves. The instruction that converts your entry fee once you pass carries this comment in its source, and it is the honest version of the boundary:
Deliberately NOT permissionless: this is only correct once the trader has PASSED, and the chain cannot know that.
That is a design decision rather than an oversight. The inputs to a grade are venue prices, round resolutions and fourteen days of fill history. Putting that on chain would mean an oracle for every input plus a verifiable replay of the whole calculation, which is a far bigger thing to trust than the thing it would remove.
What this does and does not put at risk. A wrong grade costs a trader a seat, and there is no on-chain appeal. That is the sharp end and it is real. What a wrong grade cannot do is move money anywhere unusual: the amount reserved for your seat was fixed on chain when you paid, the seat's address is determined by your own wallet, and the seat that gets funded is inside the same risk engine as every other. Nobody driving the grader can change your tier, rotate an administrator, or send capital to an address of their choosing.
What makes it checkable. You can replay your own grade. Fortell publishes an endpoint that returns your challenge call by call, using the same calculation the grader uses, so you can see which trades counted, what edge each one had, and how the score was built. That is reproducibility rather than proof, and the difference is worth naming: you are checking that the rule was applied to your fills, not that the fills are what a third party recorded.
The daily loss limit is stricter than it looks, on purpose
Two things about it that catch people out.
It counts realised losses, not paper ones. Staking $40 on a round is not losing $40. An earlier version treated it as one, so a challenge that staked $40 across two buys breached a $30 cap while both were still open, and then settled up $53.53. It ended the day ahead and had already been marked failed.
But the check that refuses your next order counts worst case. When you place an order, the software asks whether your realised loss today, plus everything you could still lose on what is open, plus this order, would exceed the cap. In a binary market a position can go to zero, so its worst case is the whole of what you paid for it.
Those two are different quantities on purpose. What you have lost is what the grader fails you on and what your dashboard shows. What you have committed is what decides whether the next order is allowed. Without the second one, a Standard trader could hold five $20 rounds at once against a $30 daily cap, because nothing had settled and the realised figure still read zero. That happened: two $20 buys fourteen seconds apart, both accepted while the daily loss showed $0, both lost, and the challenge failed with "daily loss limit breached ($40.00 of $30)". Every number on the trader's screen read inside its limit for nine minutes, and the block arrived after the breach it exists to prevent.
Committing risk is not the same as losing money. Nothing about the second check books a loss, ends a challenge or changes your displayed profit and loss. It holds room aside while an order is being sized, and a winning settle hands all of it straight back.