Trading Glass
FeaturesPricingAcademyBlogChartJournal
Loading
All Courses
Distribution of Trade ReturnsRisk of RuinPosition Sizing Based on Confidence IntervalsOptimal Withdrawal & Growth StrategyTrade Expectancy TreesValue at Risk & CVaR
Academy/Trading Intelligence/Trade Distribution Modeling

Trade Expectancy Trees

Trading Intelligence

9 min read

var95cvar95

Visualize probable outcomes using branching decision trees to model strategy behavior and master your mental game.

Loading

Related Topics

Distribution of Trade Returns

9 min

Risk of Ruin

9 min

Position Sizing Based on Confidence Intervals

8 min

Capital at Risk

9 min

Previous Topic

Optimal Withdrawal & Growth Strategy

Next Topic

Value at Risk & CVaR

Trading Glass

Next-generation charting order flow platform with rotation view, cluster visualization, and real-time analytics for professional traders and quantitative analysts.

Product

  • Features
  • Pricing
  • Chart
  • Journal

Resources

  • Academy
  • Blog
  • Documentation
  • API Reference
  • Support

Company

  • About
  • Contact

Legal

  • Privacy Policy
  • Terms of Service
  • Cookie Policy

© 2026 Trading Glass. All rights reserved.

PrivacyTerms

A trade expectancy tree is a probability tree that maps every realistic exit scenario for a trade — full take-profit, partial profit + runner, breakeven stop, full stop-loss — assigns each branch an empirical probability from your journal, and computes expected value as the sum of P × R across all leaves. Unlike a single EV number, the tree exposes which paths produce the EV and how often you'll experience each one.

Most traders blow up not from bad systems — but from being surprised by normal randomness. The fix isn't more discipline; it's a tree. Sketch every exit before you click buy.

Prerequisites: Distribution of Trade Returns (where branch probabilities come from) and Position Sizing Based on Confidence Intervals (how to handle uncertainty in those probabilities).

Why a tree, not a single EV number

You probably know your win rate, average win, and average loss already. Collapsed into one line:

EV = (P_win x R_win) + (P_loss x R_loss) = (0.45 x 2) + (0.55 x -1) = +0.35R

P_win = empirical win rate from journalR_win = average R-multiple on winnersP_loss = empirical loss rate (1 minus P_win)R_loss = average R-multiple on losers (negative)

That number is correct. It is also the laziest possible model of what your strategy actually does. A real trade has more than two terminal states. It can hit TP1 and stop out the runner. It can hit breakeven on a wick. It can full-SL on a gap. Folding all of those into "win" or "loss" throws away the structure that makes pre-trade planning possible.

The tree replaces the binary outcome with a leaf for every distinct exit you actually use:

BranchProbabilityR-payoffP × R
Full TP0.30+2.0+0.60
Partial TP + runner0.15+1.2+0.18
Breakeven stop0.200.00.00
Full SL0.35–1.0–0.35
EV1.00+0.43R

Same setup, more honest model. The EV is now +0.43R instead of +0.35R because the runner branch and the BE stop are not "wins" or "losses" — they are their own outcomes, and pretending otherwise distorts both the EV and the volatility.


Where the branch probabilities come from

Branch probabilities are not free. They come from your journal — and only your journal. Hypothetical numbers from a course or a Twitter post are useless for sizing real trades. The procedure:

  1. Pull every closed trade for one specific setup (mixing setups merges different distributions and corrupts the tree).
  2. Tag each closed trade by exit reason: full_tp, partial_runner, be_stop, full_sl. Add a fifth tag — catastrophic — for any trade that exceeded its planned 1R loss due to slippage, gap, or outage.
  3. Count the bucket sizes. Divide each by the total to get branch probabilities.
  4. Inside each bucket, average the realized R-multiple. That is the leaf payoff.
  5. Validate: the probabilities must sum to 1.0. The full-TP leaf should have R close to your planned R-target. If not, your stops or targets are mis-set.

Excel skeleton: column A is the leaf label, B is the probability, C is the R-payoff, D is =B*C. EV is =SUM(D:D). Validation cell: =SUM(B:B) should equal exactly 1.0. For a 2-trade tree, joint probability is =B2*B3 and joint payoff is =C2+C3. Python equivalent is six lines using itertools.product.


The probability-estimation trap

Your branch probabilities are estimates, not constants. They have confidence intervals, and those intervals are usually wider than traders want to admit.

With 50 closed trades distributed across 4 branches, you have roughly 12 samples per branch. The 95% confidence interval on each probability is approximately ±15 percentage points. A "TP1 = 30%" branch could really be 15% or 45%. Plug both extremes back into the EV calculation and your number swings from +0.18R to +0.68R — a 3.7× range on the same data.

EV swing range

On 50 closed trades across 4 branches, plus or minus 15pp 95% CI per branch produces an EV that can read +0.18R to +0.68R on the same data.

3.7x

Minimum sample per branch: 30 closed trades. That puts a 4-branch tree at 120 closed trades minimum before the numbers stop being noise. Below that floor, the tree gives you a precise-looking EV that hides huge uncertainty. See Position Sizing Based on Confidence Intervals for the sizing-side handling of this same problem.


Two trades, four leaves

Once you have a single-trade tree, you can chain it to model sequences. The 2-trade tree from the original binary model:

        ┌─ Win ─ Win → +4R
        │
   ┌────┤
   │    └─ Win ─ Loss → +1R
Start
   │    ┌─ Loss ─ Win → +1R
   └────┤
        └─ Loss ─ Loss → –2R

Outcome probabilities:

Two-trade outcome probabilities at 45% per-trade win rate.

WW (both win)20.25%WL or LW (mixed)49.5%LL (both lose)30.25%

The arithmetic is correct, but the framing matters. P(LL) over a 2-trade window is 30.25%. That is not the same as "1 in 3 sequences will be a back-to-back loss" over a longer run. Over a 50-trade run, the expected number of LL pairs is roughly 49 × 0.30 ≈ 15, and the probability of seeing at least one streak of 4+ losses in that run is around 70%. The tree gives you the per-window probability; streak risk requires a separate calculation.

Two assumptions are also worth flagging here. The product P(W) × P(W) only works if trades are independent. For correlated setups (same session, same regime, same parent thesis), they usually aren't, and the joint probability skews higher than the multiplied number suggests.


Beyond five trades: trees vs Monte Carlo

A 4-branch tree over N trades has 4^N leaves. By N = 5 that's 1,024 leaves, by N = 10 it's over a million, and the tree stops being readable. Two paths forward:

ToolInputOutputWhen to use
Probability treeBranch P + R-payoffsClosed-form EV, exact leaf P≤ 5 trades, exit-rule design
Monte CarloBranch P + N samplesPath distribution, drawdown %, time-to-recovery50+ trades, equity-curve risk
Payoff matrixStrategy × scenario gridPer-state EVComparing strategies, regime analysis

The tree gives you exact closed-form probabilities for every outcome. Monte Carlo samples sequences from the same branch probabilities and gives you the shape of the path — drawdowns, time-to-recovery, longest losing streak. Use the tree to design and EV-rank exit rules. Use Monte Carlo to size risk against the equity curve.


What the tree does not tell you

  1. Whether your branch probabilities are stable. Regime shifts (trend → range, low-vol → high-vol) can move "TP1 hit rate" by 20 percentage points or more. Re-estimate branch probabilities at least quarterly, and any time you notice the equity curve diverging from the modeled EV.
  2. Whether trades are independent. The 2-trade tree above multiplies P(W) × P(W). For correlated setups this overstates uncertainty in one direction and understates it in the other. If you're running the same setup five times in one session, those are not five independent draws.
  3. The size of the tail. The base 4-branch tree assumes the worst case is full-SL at –1R. Slippage, gaps, and exchange outages can produce losses larger than that. Add a fifth branch — catastrophic > 1R — with whatever probability your venue and instrument have historically shown. Even at 1% probability with a –5R payoff, that branch costs you –0.05R of EV.

The real value of drawing the tree before you enter is not the EV number. It is that you cannot draw a TP1 branch without specifying where TP1 is. You cannot draw a runner branch without committing to the trail rule. The tree is a pre-commitment device disguised as a math exercise — every leaf forces you to name an exit and assign it a probability before the trade is live and emotion takes over.


FAQ

What is a trade expectancy tree?

A trade expectancy tree is a probability tree where each branch represents a distinct exit scenario for a setup — typically full TP, partial TP + runner, breakeven stop, and full stop-loss. Each branch carries an empirical probability and an R-payoff, and the lesson's expected value is the sum of P × R across all leaves.

How do you calculate expected value from a trade tree?

Multiply each branch's probability by its R-payoff and sum across all branches. For a 4-branch example with 30% full TP at +2R, 15% runner at +1.2R, 20% BE at 0R, and 35% SL at –1R, EV = 0.30·2 + 0.15·1.2 + 0.20·0 + 0.35·(–1) = +0.43R per trade.

How is a trade expectancy tree different from a Monte Carlo simulation?

A tree gives closed-form, exact probabilities for every leaf — best for ≤ 5 trades and for designing exit rules. Monte Carlo samples sequences from the same branch probabilities and produces a distribution of paths — best for 50+ trades and for sizing drawdown risk on the equity curve. They use the same inputs but answer different questions.

How many trades do I need before my branch probabilities are reliable?

Roughly 30 closed trades per branch. For a 4-branch tree that means 120 closed trades minimum on a single setup. Below that, each branch's 95% confidence interval is wide enough (±15 percentage points or more) that the computed EV can swing by 3× or more on the same data.

How likely is a back-to-back loss with a 45% win rate?

P(LL) over any 2-trade window is 0.55 × 0.55 = 30.25%. Over a 50-trade run, the expected number of LL pairs is roughly 49 × 0.30 ≈ 15, and at least one streak of 4+ losses occurs in about 70% of 50-trade samples. The per-window probability and the streak risk are different calculations.

Can I use one tree across multiple setups?

No. Mixing setups merges different branch distributions and corrupts the EV. Build one tree per setup. If two setups share the same exit rules but different entries, they may share the same tree shape but their probabilities will differ.


Up next in Module 5

Value at Risk & CVaR — Quantifying Tail Risk. A trade expectancy tree gives you the full leaf distribution. Value at Risk & CVaR collapses the worst leaves into single risk numbers you can size against. The tree shows you which paths are possible; VaR and CVaR tell you how bad the bottom of the distribution is.

For ruin probability and capital-scaling that uses these branch probabilities directly, see Risk of Ruin.