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
No live trades. This rule refused every signal on this page — that is the answer, not a pending result.
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 | 265 | 74% | -3.0R | -0.011R | 0.93 | 193/27/45 |
| 2R target | 265 | 42% | -8.7R | -0.033R | 0.90 | 11/49/205 |
| 2R target, with the trend | 150 | 37% | -19.4R | -0.129R | 0.64 | 3/27/120 |
| No target — hold to the bell | 265 | 42% | -3.1R | -0.012R | 0.96 | 0/49/216 |
| Hold, wide opening range only | 64 | 48% | +2.0R | +0.031R | 1.15 | 0/3/61 |
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 | |
| Vietnam (HOSE) | 265 | 74% | -3.0R | -0.011R | 265 | 42% | -8.7R | -0.033R | — | — | — | — | 150 | 37% | -19.4R | -0.129R | 265 | 42% | -3.1R | -0.012R | 64 | 48% | +2.0R | +0.031R |
| Vietnam (HOSE) — long only | 114 | 72% | -7.0R | -0.062R | 114 | 31% | -18.4R | -0.161R | — | — | — | — | 71 | 24% | -23.0R | -0.324R | 114 | 31% | -13.3R | -0.116R | 28 | 39% | -1.0R | -0.035R |
| Vietnam (HOSE) — short only | 151 | 75% | +4.1R | +0.027R | 151 | 51% | +9.7R | +0.064R | — | — | — | — | 79 | 48% | +3.6R | +0.046R | 151 | 51% | +10.2R | +0.067R | 36 | 56% | +2.9R | +0.082R |
Vietnam gets two lines because it has to. There is no short selling on HOSE, so every short the rule finds there is a trade it could not place — and shorts are about two thirds of them. The long-only line is the honest one. Two more things the top line cannot show you: HOSE moves inside a ±7% daily band, which quietly caps how far a winner can run, and buying and selling the same stock the same day needs intraday trading that most cash accounts do not have.
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 | |
| FPT.VN FPT Corporation | 31 | 65% | -2.1R | 31 | 52% | -0.2R | — | — | — | 20 | 50% | -0.0R | 31 | 52% | +0.5R | 5 | 60% | +0.6R |
| VNM.VN Vinamilk | 33 | 82% | +0.7R | 33 | 52% | +3.0R | — | — | — | 22 | 59% | +4.0R | 33 | 52% | +1.6R | 2 | 50% | +0.5R |
| VIC.VN Vingroup | 34 | 65% | -1.4R | 34 | 50% | +1.1R | — | — | — | 18 | 33% | -4.3R | 34 | 50% | +3.6R | 12 | 67% | +2.3R |
| HPG.VN Hoa Phat Group | 29 | 76% | +0.1R | 29 | 45% | -0.6R | — | — | — | 15 | 47% | +1.0R | 29 | 45% | -0.4R | 10 | 50% | +0.2R |
| VCB.VN Vietcombank | 35 | 80% | +1.0R | 35 | 40% | -2.9R | — | — | — | 20 | 20% | -5.9R | 35 | 40% | -2.9R | 8 | 50% | -0.3R |
| SSI.VN SSI Securities | 35 | 83% | -0.0R | 35 | 34% | -4.1R | — | — | — | 20 | 30% | -5.3R | 35 | 34% | -4.1R | 11 | 36% | +0.3R |
| MWG.VN Mobile World | 35 | 74% | +0.6R | 35 | 37% | +0.4R | — | — | — | 16 | 31% | -1.6R | 35 | 37% | +1.4R | 7 | 43% | +0.0R |
| E1VFVN30.VN DCVFM VN30 ETF | 33 | 64% | -1.8R | 33 | 30% | -5.4R | — | — | — | 19 | 21% | -7.3R | 33 | 30% | -2.9R | 9 | 33% | -1.7R |
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 | 411 | 80% | +27.2R | +0.066R | 1.69 | 326/25/60 |
| 2R target | 411 | 48% | +36.8R | +0.090R | 1.33 | 25/73/313 |
| 2R target, cost-viable only | 3 | 67% | -0.1R | -0.032R | 0.68 | 0/0/3 |
| 2R target, with the trend | 142 | 45% | +3.5R | +0.025R | 1.08 | 9/31/102 |
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 |
|---|---|---|---|---|---|---|---|
| Vietnam (HOSE) | 411 | 1.15% | 0.435R | +0.090R | -0.379R | 41.4% | 48.4% |
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 | VNM.VN | 57,600–58,000 | short | 57,400 | +0.17R target | +0.33R close | refused | +0.33R close | +0.33R close | refused |
| 2026-10-05 | VIC.VN | 224,100–230,000 | long | 230,100 | +0.18R target | +0.32R close | refused | refused | +0.32R close | +0.32R close |
| 2026-10-05 | VCB.VN | 57,100–57,400 | short | 57,000 | +0.25R target | +0.00R close | refused | +0.00R close | +0.00R close | refused |
| 2026-10-05 | SSI.VN | 19,700–20,100 | short | 19,650 | +0.00R close | +0.00R close | refused | +0.00R close | +0.00R close | +0.00R close |
| 2026-10-05 | MWG.VN | 73,700–74,700 | — | — | never closed outside the range | |||||
| 2026-10-05 | HPG.VN | 20,350–20,800 | — | — | never closed outside the range | |||||
| 2026-10-05 | FPT.VN | 62,200–62,600 | short | 62,100 | +0.40R target | +0.40R close | refused | +0.40R close | +0.40R close | refused |
| 2026-10-05 | E1VFVN30.VN | 33,800–34,100 | short | 33,780 | -0.84R close | -0.84R close | refused | -0.84R close | -0.84R close | refused |
| 2026-10-02 | VNM.VN | 58,500–59,000 | short | 58,300 | +0.14R target | +1.43R close | refused | +1.43R close | +1.43R close | refused |
| 2026-10-02 | VIC.VN | 216,500–220,000 | short | 216,000 | -1.00R stop | -1.00R stop | refused | -1.00R stop | -1.00R stop | refused |
| 2026-10-02 | VCB.VN | 57,400–57,600 | short | 57,300 | +0.33R target | -1.00R stop | refused | -1.00R stop | -1.00R stop | refused |
| 2026-10-02 | SSI.VN | 20,000–20,200 | short | 19,950 | +0.20R target | +1.00R close | refused | +1.00R close | +1.00R close | refused |
| 2026-10-02 | MWG.VN | 72,700–73,400 | short | 72,600 | +0.25R target | -0.75R close | refused | refused | -0.75R close | refused |
| 2026-10-02 | HPG.VN | 19,900–20,150 | short | 19,850 | +0.17R target | -0.67R close | refused | -0.67R close | -0.67R close | -0.67R close |
| 2026-10-02 | FPT.VN | 62,700–63,200 | short | 62,600 | +0.33R target | +0.83R close | refused | +0.83R close | +0.83R close | refused |
| 2026-10-02 | E1VFVN30.VN | 33,850–34,190 | short | 33,780 | +0.15R target | -1.00R stop | refused | -1.00R stop | -1.00R stop | -1.00R stop |
| 2026-10-01 | VNM.VN | 58,900–59,600 | short | 58,800 | +0.12R target | +0.25R close | refused | +0.25R close | +0.25R close | refused |
| 2026-10-01 | VIC.VN | 222,400–227,700 | short | 222,100 | +0.20R target | +0.38R close | refused | +0.38R close | +0.38R close | +0.38R close |
| 2026-10-01 | VCB.VN | 57,800–58,200 | short | 57,700 | +0.20R target | +0.20R close | refused | +0.20R close | +0.20R close | refused |
| 2026-10-01 | SSI.VN | 20,100–20,250 | long | 20,500 | -1.00R stop | -1.00R stop | refused | refused | -1.00R stop | refused |
| 2026-10-01 | MWG.VN | 72,000–72,500 | long | 73,500 | -0.60R close | -0.60R close | refused | -0.60R close | -0.60R close | refused |
| 2026-10-01 | HPG.VN | 20,050–20,200 | — | — | never closed outside the range | |||||
| 2026-10-01 | FPT.VN | 62,900–63,100 | short | 62,700 | +0.00R close | +0.00R close | refused | +0.00R close | +0.00R close | refused |
| 2026-10-01 | E1VFVN30.VN | 34,100–34,540 | short | 34,050 | +0.12R target | -0.35R close | refused | -0.35R close | -0.35R close | -0.35R close |
| 2026-09-30 | VNM.VN | 60,200–60,800 | short | 59,900 | +0.11R target | +0.56R close | refused | +0.56R close | +0.56R close | refused |
| 2026-09-30 | VIC.VN | 229,500–232,400 | short | 229,000 | +0.32R target | +0.32R close | refused | +0.32R close | +0.32R close | refused |
| 2026-09-30 | VCB.VN | 58,100–58,500 | short | 58,000 | +0.00R close | +0.00R close | refused | +0.00R close | +0.00R close | refused |
| 2026-09-30 | SSI.VN | 20,250–20,550 | short | 20,200 | +0.14R target | +0.29R close | refused | +0.29R close | +0.29R close | +0.29R close |
| 2026-09-30 | MWG.VN | 72,100–72,900 | short | 71,900 | +0.20R target | -0.50R close | refused | -0.50R close | -0.50R close | -0.50R close |
| 2026-09-30 | HPG.VN | 20,300–20,500 | short | 20,250 | +0.20R target | +0.40R close | refused | +0.40R close | +0.40R close | +0.40R close |
| 2026-09-30 | FPT.VN | 63,300–64,000 | short | 63,200 | +0.25R target | +0.25R close | refused | +0.25R close | +0.25R close | refused |
| 2026-09-30 | E1VFVN30.VN | 34,500–34,590 | short | 34,470 | +0.50R target | -0.67R close | refused | -0.67R close | -0.67R close | refused |
| 2026-09-29 | VNM.VN | 60,100–60,500 | short | 59,900 | +0.17R target | -0.67R close | refused | -0.67R close | -0.67R close | refused |
| 2026-09-29 | VIC.VN | 230,100–232,100 | short | 229,900 | -0.05R close | -0.05R close | refused | -0.05R close | -0.05R close | refused |
| 2026-09-29 | VCB.VN | 58,100–58,300 | short | 58,000 | +0.33R target | +0.00R close | refused | +0.00R close | +0.00R close | refused |
| 2026-09-29 | SSI.VN | 20,000–20,300 | — | — | never closed outside the range | |||||
| 2026-09-29 | MWG.VN | 71,600–72,200 | — | — | never closed outside the range | |||||
| 2026-09-29 | HPG.VN | 20,150–20,400 | — | — | never closed outside the range | |||||
| 2026-09-29 | FPT.VN | 63,600–64,100 | short | 63,500 | +0.33R target | +0.50R close | refused | +0.50R close | +0.50R close | refused |
| 2026-09-29 | E1VFVN30.VN | 34,400–34,580 | short | 34,390 | +0.32R target | +0.00R close | refused | +0.00R close | +0.00R close | refused |
| 2026-09-28 | VNM.VN | 59,200–59,800 | long | 60,400 | -0.08R close | -0.08R close | refused | refused | -0.08R close | refused |
| 2026-09-28 | VIC.VN | 229,000–233,100 | — | — | never closed outside the range | |||||
| 2026-09-28 | VCB.VN | 57,700–58,200 | short | 57,600 | -1.00R stop | -1.00R stop | refused | -1.00R stop | -1.00R stop | refused |
| 2026-09-28 | SSI.VN | 20,400–20,750 | short | 20,200 | +0.09R target | +0.09R close | refused | +0.09R close | +0.09R close | +0.09R close |
| 2026-09-28 | MWG.VN | 72,600–73,400 | short | 72,400 | +0.20R target | +0.40R close | refused | refused | +0.40R close | +0.40R close |
| 2026-09-28 | HPG.VN | 20,500–20,800 | short | 20,450 | +0.14R target | +0.71R close | refused | +0.71R close | +0.71R close | +0.71R close |
| 2026-09-28 | FPT.VN | 63,100–64,800 | — | — | never closed outside the range | |||||
| 2026-09-28 | E1VFVN30.VN | 34,390–34,800 | — | — | never closed outside the range | |||||
| 2026-09-25 | VNM.VN | 60,600–61,000 | short | 60,400 | +0.17R target | +1.00R close | refused | +1.00R close | +1.00R close | refused |
| 2026-09-25 | VIC.VN | 228,200–232,000 | short | 228,100 | -1.00R stop | -1.00R stop | refused | -1.00R stop | -1.00R stop | refused |
| 2026-09-25 | VCB.VN | 58,100–58,500 | short | 58,000 | +0.20R target | +0.00R close | refused | +0.00R close | +0.00R close | refused |
| 2026-09-25 | SSI.VN | 20,800–20,950 | short | 20,750 | -1.00R stop | -1.00R stop | refused | -1.00R stop | -1.00R stop | refused |
| 2026-09-25 | MWG.VN | 72,500–73,000 | long | 73,400 | +0.22R target | +0.00R close | refused | +0.00R close | +0.00R close | refused |
| 2026-09-25 | HPG.VN | 20,800–20,950 | short | 20,700 | +0.20R target | +0.20R close | refused | +0.20R close | +0.20R close | refused |
| 2026-09-25 | FPT.VN | 65,200–65,900 | short | 65,100 | +0.25R target | +0.50R close | refused | +0.50R close | +0.50R close | refused |
| 2026-09-25 | E1VFVN30.VN | 34,700–34,830 | short | 34,680 | -1.00R stop | -1.00R stop | refused | -1.00R stop | -1.00R stop | refused |
| 2026-09-24 | VNM.VN | 60,300–60,800 | long | 61,000 | -0.57R close | -0.57R close | refused | refused | -0.57R close | refused |
| 2026-09-24 | VIC.VN | 231,100–235,900 | short | 230,800 | +0.22R target | +0.16R close | refused | +0.16R close | +0.16R close | refused |
| 2026-09-24 | VCB.VN | 58,200–58,700 | short | 58,100 | +0.00R close | +0.00R close | refused | +0.00R close | +0.00R close | refused |
| 2026-09-24 | SSI.VN | 20,600–20,850 | long | 21,100 | +0.10R target | -0.50R close | refused | refused | -0.50R close | -0.50R close |
Showing the latest 60 of 800 — the full history lives in journal.json.