Risk/Reward Ratio

The ratio of potential loss to potential gain on a trade. A 1:2 ratio means you risk 1 to make 2. Traders fixate on win rate when they should be thinking about this — a 30% win rate with a good ratio beats a 70% win rate with a bad one.

The risk/reward ratio describes the relationship between how much you stand to lose (your stop distance) and how much you stand to gain (your target distance). A 1:2 ratio means your target is twice as far from your entry as your stop. A 1:3 means three times as far.

This matters because it directly determines what win rate you need to break even. If your average winner is twice your average loser, you only need to win one in every three trades to be profitable. That is a powerful idea: you can be wrong more often than you are right and still make money, provided your winners are large relative to your losers.

Why it matters — the expectancy equation

Most traders focus on win rate. Win rate is a vanity metric. Expectancy is what actually determines whether a strategy is profitable:

Expectancy = (Win Rate × Avg Win) − (Loss Rate × Avg Loss)

The break-even win rate for any R:R ratio is: `1 / (1 + R:R)`. At 1:2, you need 33%. At 1:3, you need 25%. At 1:1, you need 50%.

In Pine Script, ATR is the most practical way to set both stop and target distances. Instead of choosing an arbitrary 20-point stop, you set the stop at 1× ATR and the target at 2× ATR. Now the distances automatically adapt to the instrument's current volatility — wider in high-volatility conditions, tighter in low-volatility ones. The R:R ratio stays constant while the absolute distances flex with the market.

//@version=6
strategy("Risk/Reward Demo", overlay=true,
         default_qty_type=strategy.percent_of_equity,
         default_qty_value=10)

atrValue      = ta.atr(14)
rrRatio       = input.float(2.0, "Reward:Risk Ratio", minval=1.0, step=0.5)
riskMultiple  = input.float(1.0, "Risk (ATR multiple)", minval=0.5, step=0.5)

longCondition = ta.crossover(ta.ema(close, 9), ta.ema(close, 21))

if longCondition
    stopDist   = atrValue * riskMultiple
    targetDist = atrValue * riskMultiple * rrRatio

    strategy.entry("Long", strategy.long)

    // loss and profit are in ticks (price units / mintick)
    strategy.exit("Exit", "Long",
         loss   = stopDist   / syminfo.mintick,
         profit = targetDist / syminfo.mintick)

// Display current ATR-based levels on chart
entryPrice = strategy.position_avg_price
if strategy.position_size > 0
    line.new(bar_index[1], entryPrice - atrValue * riskMultiple,
             bar_index,    entryPrice - atrValue * riskMultiple,
             color=color.red,   style=line.style_dashed)
    line.new(bar_index[1], entryPrice + atrValue * riskMultiple * rrRatio,
             bar_index,    entryPrice + atrValue * riskMultiple * rrRatio,
             color=color.green, style=line.style_dashed)

Key takeaway: R:R is only meaningful in combination with your actual win rate. A 1:3 R:R that wins 20% of the time has negative expectancy and loses money. Always evaluate the full equation: `(Win Rate × Avg Win) − (Loss Rate × Avg Loss)`. Chasing a higher R:R by moving your target further away is only useful if your win rate holds — which it usually does not as target distance increases.