Running profit — your rule vs the fixed version (live)
Measured in R: one R is whatever that day’s stop was risking. It has to be R and not points, because 10 points on Bitcoin and 10 points on SPY are wildly different bets. Above the dashed line is profit. Both lines take the same trades — they only differ on where profit is taken.
Live
If you had put in $100 — Your rule — fixed target
If you had put in $100 — 2R target
If you had put in $100 — 2R target, cost-viable only
If you had put in $100 — 2R target, with the trend
If you had put in $100 — No target — hold to the bell
If you had put in $100 — Hold, wide opening range only
How the $100 is worked out
This is an invented account laid on top of real trades. The trades are real in the one way that counts — the entry, the stop and the target were written down before anyone knew how they ended. The dollars are invented. Nobody ever had $100 in this.
The rule. Risk 1% of the balance on every trade. A trade stopped out loses that 1%; a trade that makes twice what it risked makes 2%. That 1% is a number I chose, and it is the whole scale of the answer: at 0.5% the same trades move the balance half as far, at 2% twice as far. There is no slider, because on this little live data the relationship is exactly linear — a slider would let you make the number bigger without teaching you anything.
Fees are charged, and they decide the sign. Every other number on this site ignores costs, which is fine for a rule measured in R. A balance in dollars is a claim about an account, and accounts pay fees. The stop here is usually well under 1% of the price, so a 0.2% round trip eats roughly a quarter of an R every trade — against a gross edge nearer three hundredths of an R. Leave costs out and the number is not slightly rosy, it is the wrong sign.
Trades on the same day are added up, then applied once. Four coins broke out on the same morning. Compounding them one after another would pretend each later trade risked a balance that already held the earlier ones — across the full record that overstates the 2R version by 59%.
Vietnamese shorts are left out, because HOSE has no short selling and they were never placeable. Live calls only — the backfilled record is history the rule had already seen, and a dollar figure from that is money invented out of hindsight.
Rule vs rule (live)
| Exit rule | Trades | Win rate | Total | Per trade | Profit factor | Target/Stop/Bell |
|---|---|---|---|---|---|---|
| Your rule — fixed target | 162 | 56% | -15.5R | -0.096R | 0.69 | 83/37/42 |
| 2R target | 162 | 35% | -29.1R | -0.180R | 0.58 | 5/51/106 |
| 2R target, cost-viable only | 158 | 34% | -35.0R | -0.221R | 0.49 | 3/51/104 |
| 2R target, with the trend | 57 | 19% | -18.6R | -0.327R | 0.34 | 1/18/38 |
| No target — hold to the bell | 158 | 34% | -33.2R | -0.210R | 0.52 | 0/51/107 |
| Hold, wide opening range only | 26 | 31% | -3.5R | -0.136R | 0.61 | 0/5/21 |
Win rate on its own is a trap. A fixed target that sits very close to the entry wins nearly every time and still loses money, because the stop is far away. Per trade is the number that decides it — and below about 0.15R it is indistinguishable from luck at this sample size.
By market (live)
| Market | Your rule — fixed target | 2R target | 2R target, cost-viable only | 2R target, with the trend | No target — hold to the bell | Hold, wide opening range only | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| trades | win | total | per trade | trades | win | total | per trade | trades | win | total | per trade | trades | win | total | per trade | trades | win | total | per trade | trades | win | total | per trade | |
| United States | 162 | 56% | -15.5R | -0.096R | 162 | 35% | -29.1R | -0.180R | 158 | 34% | -35.0R | -0.221R | 57 | 19% | -18.6R | -0.327R | 158 | 34% | -33.2R | -0.210R | 26 | 31% | -3.5R | -0.136R |
| United States — long only | 70 | 53% | -10.0R | -0.143R | 70 | 34% | -14.6R | -0.209R | 70 | 34% | -14.6R | -0.209R | 34 | 21% | -10.1R | -0.296R | 70 | 34% | -11.5R | -0.165R | 9 | 44% | +1.8R | +0.195R |
| United States — short only | 92 | 58% | -5.5R | -0.060R | 92 | 36% | -14.5R | -0.157R | 88 | 33% | -20.4R | -0.231R | 23 | 17% | -8.6R | -0.372R | 88 | 33% | -21.7R | -0.246R | 17 | 24% | -5.3R | -0.312R |
Four instruments, one of them twice over: SPY and ES=F are the same index through different wrappers, as are QQQ and NQ=F. That is deliberate — the futures trade nearly around the clock while the funds keep exchange hours, so the pair shows how much of the rule's result comes from the instrument rather than from the index underneath it. Treat four instruments as closer to two independent tests than four.
By instrument (live)
| Instrument | Your rule — fixed target | 2R target | 2R target, cost-viable only | 2R target, with the trend | No target — hold to the bell | Hold, wide opening range only | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| trades | win | total | trades | win | total | trades | win | total | trades | win | total | trades | win | total | trades | win | total | |
| ES=F S&P 500 futures | 41 | 61% | -1.3R | 41 | 39% | -5.6R | 39 | 36% | -8.6R | 17 | 18% | -7.0R | 40 | 38% | -6.2R | 7 | 29% | -2.4R |
| NQ=F Nasdaq 100 futures | 40 | 50% | -5.1R | 40 | 30% | -7.2R | 40 | 30% | -7.2R | 13 | 23% | -1.7R | 39 | 28% | -8.4R | 6 | 33% | +1.0R |
| SPY S&P 500 ETF | 41 | 59% | -2.5R | 41 | 39% | -6.3R | 39 | 36% | -9.2R | 13 | 8% | -7.4R | 40 | 38% | -7.3R | 7 | 29% | -3.1R |
| QQQ Nasdaq 100 ETF | 40 | 52% | -6.6R | 40 | 32% | -10.0R | 40 | 32% | -10.0R | 14 | 29% | -2.6R | 39 | 31% | -11.2R | 6 | 33% | +0.9R |
The rule says “aim for 10 points”. Ten points is an ES number, so on everything else the target is the same size of move scaled to that instrument — about a quarter of its typical opening range.
Backfilled history, for context
| Exit rule | Trades | Win rate | Total | Per trade | Profit factor | Target/Stop/Bell |
|---|---|---|---|---|---|---|
| Your rule — fixed target | 210 | 75% | +5.6R | +0.027R | 1.14 | 155/29/26 |
| 2R target | 210 | 50% | +2.4R | +0.011R | 1.03 | 10/52/148 |
| 2R target, cost-viable only | 208 | 50% | +0.5R | +0.002R | 1.01 | 10/52/146 |
| 2R target, with the trend | 65 | 46% | -10.9R | -0.167R | 0.63 | 2/25/38 |
Replayed over past data rather than watched live. Useful as a sanity check, worth less than the live number above.
The two new rules, and what was fixed in advance
Two new rules, and what was decided before the numbers came in. Both take the exact same trades as the 2R rule — same entry, same stop, same target. They differ only in which trades they will accept at all.
Cost-viable only refuses a trade when the round trip would cost more than 0.10R. That number means something precise: it is the amount fees inflate the hit rate you need, so 0.10 says “fees may make this rule at most 10% harder than it looks on paper”. It is a round convention, not a discovery — and it is not the best number on this data. The best is 0.145. Shipping the best-fitting constant is the exact mistake this site exists to warn about, so it is not what shipped.
With the trend refuses a trade taken against the average of the previous 20 session closes. Twenty sessions is the market’s conventional month, settled decades before this data existed. The trend for any session is built only from sessions that had already finished — the check that proves it is in orb.py --selftest, and it fails if the code is ever changed to let a day see its own close.
What the filters actually did. Cost-viability is not a filter outside the US — it is a shutdown: it keeps 212 of 214 US trades but only 3 of 411 in Vietnam and 2 of 240 on the UTC crypto bell, because those stops are never wide enough to carry their own fees. Vietnam’s is structural: the ±7% daily band caps the range, and 0.1% of the round trip is legislated tax.
Neither is better. On the backfilled record both come in behind plain 2R. No variant here will be called better or worse until an interval that accounts for how correlated these trades are excludes zero, and on this much data that will not happen. “Not enough evidence, and here is how many trades it would take” is the claim.
Why this loses — costs against the edge
| Market | Trades | Median stop | Fee | Gross edge | After fees | Win rate needed | Win rate got |
|---|---|---|---|---|---|---|---|
| United States | 210 | 0.69% | 0.029R | +0.011R | -0.022R | 49.2% | 50.0% |
This is why the rule loses, and it is not the exit target. The gross edge is real but tiny. The fee to get in and out is several times larger than it, because the stop sits well under two percent of the price while a round trip costs a fifth to half a percent. You are paying a quarter of your risk for the privilege of taking a bet worth a few hundredths of it.
Win rate needed is what this payoff must achieve just to break even, before any costs — average loss divided by the sum of the average win and the average loss. Win rate got is what actually happened. The gap between them is the entire edge, and the fee column swallows it whole in every market.
The fee model is deliberately optimistic: 0.02% round trip on US instruments, 0.2% on crypto, 0.5% in Vietnam where brokerage on both sides is joined by a 0.1% tax on every sale. Real fills would be worse. No amount of moving the profit target fixes a gap this shape — it would take a wider stop, a cheaper market, or an edge several times bigger.
Activity — what the agent actually did
Written by the agent as it ran, not composed for this page afterwards. Fetches, ranges, breakouts and the runs that found nothing. The newest scheduled run is at the bottom.
Sessions, newest first
| Session | Instrument | Opening range | Side | Entry | Your rule — fixed target | 2R target | 2R target, cost-viable only | 2R target, with the trend | No target — hold to the bell | Hold, wide opening range only |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026-10-05 | SPY | 769.63–770.98 | — | — | range logged, waiting for the close | |||||
| 2026-10-05 | QQQ | 749.08–753.46 | — | — | range logged, waiting for the close | |||||
| 2026-10-05 | NQ=F | 31,044–31,230 | — | — | range logged, waiting for the close | |||||
| 2026-10-05 | ES=F | 7,778–7,791 | — | — | range logged, waiting for the close | |||||
| 2026-10-02 | SPY | 769.07–772.09 | long | 772.13 | -1.00R stop | -1.00R stop | -1.00R stop | refused | -1.00R stop | -1.00R stop |
| 2026-10-02 | QQQ | 749.10–752.59 | long | 753.17 | -1.00R stop | -1.00R stop | -1.00R stop | -1.00R stop | -1.00R stop | refused |
| 2026-10-02 | NQ=F | 31,056–31,202 | long | 31,226 | -1.00R stop | -1.00R stop | -1.00R stop | -1.00R stop | -1.00R stop | refused |
| 2026-10-02 | ES=F | 7,774–7,805 | short | 7,770 | +0.28R target | -0.27R close | -0.27R close | refused | -0.27R close | -0.27R close |
| 2026-10-01 | SPY | 762.45–765.34 | short | 760.89 | +0.23R target | -1.00R stop | -1.00R stop | -1.00R stop | -1.00R stop | -1.00R stop |
| 2026-10-01 | QQQ | 740.35–743.92 | short | 739.20 | +0.36R target | -1.00R stop | -1.00R stop | refused | -1.00R stop | refused |
| 2026-10-01 | NQ=F | 30,700–30,856 | short | 30,657 | +0.37R target | -1.00R stop | -1.00R stop | refused | -1.00R stop | refused |
| 2026-10-01 | ES=F | 7,710–7,740 | short | 7,694 | +0.22R target | -1.00R stop | -1.00R stop | -1.00R stop | -1.00R stop | -1.00R stop |
| 2026-09-30 | SPY | 766.00–767.98 | long | 768.15 | +0.47R target | -1.00R stop | -1.00R stop | refused | -1.00R stop | refused |
| 2026-09-30 | QQQ | 739.76–743.53 | long | 743.58 | -0.76R close | -0.76R close | -0.76R close | -0.76R close | -0.76R close | refused |
| 2026-09-30 | NQ=F | 30,683–30,844 | long | 30,856 | -0.16R close | -0.16R close | -0.16R close | -0.16R close | -0.16R close | refused |
| 2026-09-30 | ES=F | 7,748–7,768 | long | 7,769 | +0.48R target | -1.00R stop | -1.00R stop | -1.00R stop | -1.00R stop | refused |
| 2026-09-29 | SPY | 764.60–766.98 | short | 764.16 | +0.35R target | +0.08R close | +0.08R close | refused | +0.08R close | refused |
| 2026-09-29 | QQQ | 736.27–740.58 | short | 735.67 | -0.40R close | -0.40R close | -0.40R close | refused | -0.40R close | -0.40R close |
| 2026-09-29 | NQ=F | 30,546–30,726 | short | 30,519 | -0.43R close | -0.43R close | -0.43R close | refused | -0.43R close | -0.43R close |
| 2026-09-29 | ES=F | 7,735–7,758 | short | 7,731 | +0.36R target | +0.04R close | +0.04R close | refused | +0.04R close | refused |
| 2026-09-28 | SPY | 766.97–768.61 | short | 765.26 | +0.30R target | -1.00R stop | -1.00R stop | refused | -1.00R stop | refused |
| 2026-09-28 | QQQ | 737.22–741.42 | short | 735.66 | +0.30R target | -0.18R close | -0.18R close | refused | -0.18R close | -0.18R close |
| 2026-09-28 | NQ=F | 30,583–30,759 | short | 30,522 | +0.31R target | -0.19R close | -0.19R close | refused | -0.19R close | -0.19R close |
| 2026-09-28 | ES=F | 7,759–7,775 | short | 7,742 | +0.30R target | -1.00R stop | -1.00R stop | refused | -1.00R stop | refused |
| 2026-09-25 | SPY | 767.75–770.31 | short | 766.93 | -1.00R stop | -1.00R stop | -1.00R stop | refused | -1.00R stop | -1.00R stop |
| 2026-09-25 | QQQ | 741.66–745.42 | short | 740.99 | -1.00R stop | -1.00R stop | -1.00R stop | refused | -1.00R stop | refused |
| 2026-09-25 | NQ=F | 30,768–30,926 | short | 30,740 | -1.00R stop | -1.00R stop | -1.00R stop | refused | -1.00R stop | refused |
| 2026-09-25 | ES=F | 7,767–7,794 | short | 7,760 | -1.00R stop | -1.00R stop | -1.00R stop | refused | -1.00R stop | -1.00R stop |
| 2026-09-24 | SPY | 763.62–765.49 | long | 766.01 | -1.00R stop | -1.00R stop | -1.00R stop | -1.00R stop | -1.00R stop | refused |
| 2026-09-24 | QQQ | 734.63–737.77 | long | 737.89 | +0.52R target | +0.97R close | +0.97R close | +0.97R close | +0.97R close | refused |
| 2026-09-24 | NQ=F | 30,493–30,623 | long | 30,631 | +0.54R target | +0.91R close | +0.91R close | +0.91R close | +0.91R close | refused |
| 2026-09-24 | ES=F | 7,730–7,749 | long | 7,754 | -1.00R stop | -1.00R stop | -1.00R stop | -1.00R stop | -1.00R stop | refused |
| 2026-09-23 | SPY | 770.46–773.05 | short | 769.61 | +0.29R target | +0.53R close | +0.53R close | refused | +0.53R close | +0.53R close |
| 2026-09-23 | QQQ | 742.81–747.12 | short | 740.03 | +0.24R target | -0.16R close | -0.16R close | refused | -0.16R close | -0.16R close |
| 2026-09-23 | NQ=F | 30,833–31,013 | short | 30,718 | +0.25R target | -0.18R close | -0.18R close | refused | -0.18R close | -0.18R close |
| 2026-09-23 | ES=F | 7,799–7,826 | short | 7,791 | +0.28R target | +0.48R close | +0.48R close | refused | +0.48R close | +0.48R close |
| 2026-09-22 | SPY | 773.65–775.14 | short | 773.54 | +0.06R close | +0.06R close | +0.06R close | refused | +0.06R close | refused |
| 2026-09-22 | QQQ | 741.00–745.37 | long | 745.75 | +0.36R target | +0.36R close | +0.36R close | +0.36R close | +0.36R close | +0.36R close |
| 2026-09-22 | NQ=F | 30,764–30,945 | long | 30,960 | +0.38R target | +0.35R close | +0.35R close | +0.35R close | +0.35R close | +0.35R close |
| 2026-09-22 | ES=F | 7,833–7,848 | short | 7,832 | +0.04R close | +0.04R close | +0.04R close | refused | +0.04R close | refused |
| 2026-09-21 | SPY | 766.03–767.72 | long | 767.79 | +0.57R target | +2.00R target | +2.00R target | refused | +3.37R close | refused |
| 2026-09-21 | QQQ | 727.82–732.67 | long | 732.99 | +0.33R target | +1.68R close | +1.68R close | +1.68R close | +1.68R close | +1.68R close |
| 2026-09-21 | NQ=F | 30,216–30,423 | long | 30,437 | +0.34R target | +1.78R close | +1.78R close | +1.78R close | +1.78R close | +1.78R close |
| 2026-09-21 | ES=F | 7,758–7,775 | long | 7,776 | +0.58R target | +2.00R target | +2.00R target | +2.00R target | +3.80R close | refused |
| 2026-09-18 | SPY | 759.56–761.76 | short | 759.21 | +0.39R target | -1.00R stop | -1.00R stop | -1.00R stop | -1.00R stop | refused |
| 2026-09-18 | QQQ | 717.64–719.54 | short | 716.48 | -1.00R stop | -1.00R stop | -1.00R stop | refused | -1.00R stop | refused |
| 2026-09-18 | NQ=F | 29,766–29,845 | short | 29,719 | -1.00R stop | -1.00R stop | -1.00R stop | refused | -1.00R stop | refused |
| 2026-09-18 | ES=F | 7,691–7,714 | short | 7,688 | +0.38R target | -1.00R stop | -1.00R stop | refused | -1.00R stop | refused |
| 2026-09-17 | SPY | 760.40–763.41 | — | — | never closed outside the range | |||||
| 2026-09-17 | QQQ | 713.32–716.37 | long | 716.53 | +0.11R close | +0.11R close | +0.11R close | refused | +0.11R close | refused |
| 2026-09-17 | NQ=F | 29,606–29,737 | long | 29,744 | +0.01R close | +0.01R close | +0.01R close | refused | +0.01R close | refused |
| 2026-09-17 | ES=F | 7,688–7,716 | — | — | never closed outside the range | |||||
| 2026-09-16 | SPY | 758.72–760.43 | long | 760.74 | -1.00R stop | -1.00R stop | -1.00R stop | refused | -1.00R stop | refused |
| 2026-09-16 | QQQ | 707.65–710.25 | long | 710.66 | -1.00R stop | -1.00R stop | -1.00R stop | refused | -1.00R stop | refused |
| 2026-09-16 | NQ=F | 29,373–29,482 | long | 29,499 | -1.00R stop | -1.00R stop | -1.00R stop | refused | -1.00R stop | refused |
| 2026-09-16 | ES=F | 7,669–7,686 | long | 7,690 | -1.00R stop | -1.00R stop | -1.00R stop | refused | -1.00R stop | refused |
| 2026-09-15 | SPY | 758.73–760.34 | short | 757.97 | +0.42R target | +0.23R close | +0.23R close | +0.23R close | +0.23R close | refused |
| 2026-09-15 | QQQ | 707.56–709.53 | short | 706.92 | +0.65R target | +0.90R close | +0.90R close | +0.90R close | +0.90R close | refused |
| 2026-09-15 | NQ=F | 29,372–29,454 | short | 29,343 | +0.67R target | +0.82R close | +0.82R close | refused | +0.82R close | refused |
| 2026-09-15 | ES=F | 7,670–7,687 | short | 7,662 | +0.40R target | +0.22R close | +0.22R close | +0.22R close | +0.22R close | refused |
Showing the latest 60 of 390 — the full history lives in journal.json.