Skip to content

Trading metrics

R-Multiple in Trading: 1R, the Formula and Expectancy in R

An R-multiple in trading is a trade's profit or loss divided by its initial risk, R: the amount the trade would lose if price reached the initial stop. A trade that risks 100 USD and makes 250 USD is +2.5R; a stop-out at exactly the initial stop, before costs, is −1R. Measuring every trade in R puts different position sizes and markets on one scale, and the average R-multiple is the strategy's expectancy in R.

Van K. Tharp's definition reads: "All profits can be expressed as a multiple of the initial risk (R)." His examples score losses the same way, so an exit at the initial stop is a −1R trade.[1] R-multiples belong to the trading metrics library, which shares one set of formulas. All numbers on this page are illustrative. Automation executes a strategy's rules; it does not create an edge.

Illustrative cover for R-multiples: trade results drawn as stacks of equal one-R blocks above and below a zero line, with the official PineConnector logo.
An R-multiple counts a trade's result in units of its initial risk.

R-multiple at a glance

  • Definition: trade result ÷ initial R.
  • 1R: the loss at the initial stop, in account currency. For forex, stop distance in pips × pip value per 1.00 lot × lots.
  • Expectancy in R: the mean R-multiple, (W × AW/R) − (L × AL/R).
  • When the stop moves: keep dividing by the initial R.
  • Typical use: comparing trades of different sizes, building an R-multiple distribution, and feeding expectancy and the System Quality Number.
  • Where to find it: neither the TradingView strategy report nor the MT5 reports document an R-multiple field. Compute it from the trade list with the initial stop recorded at entry.

What is the R-multiple formula?

R-multiple = trade result ÷ initial R

Initial R = |entry price − initial stop| × position size × value of a one-unit price move per unit of size

  • Trade result is the closed trade's net profit or loss in account currency. MetaTrader 5 calculates each deal's result as "profit (loss) - commission - fees - swap".[2] This library divides that net figure.
  • Initial R is the loss the position would take at its initial stop, before costs, written as a positive amount. For a forex position, 1R = stop distance in pips × pip value per 1.00 lot × lots.
  • The initial stop is the stop in force when the position opened. A later breakeven or trailing move does not change it.

Tharp defines the R-value as "the initial risk taken in a given position", set by the initial stop loss. His example buys a stock at $50 with a stop at $47, so R is $3 per share and 1R on 100 shares is $300. An exit at $56 gains $6 per share, a +2R trade.[1]

Two denominators are in use, so name yours. The planned 1R is the cash amount you intended to risk. The position's 1R comes from the actual fill, the accepted volume and the initial stop in force at the broker. Fills and volume rounding make them differ slightly. This library divides by the position's 1R and records the planned amount beside it.

Worked example: R-multiples for three trades of different sizes

Illustrative example, not a recommendation. A USD account trades EURUSD at an assumed pip value of 10 USD per 1.00 lot. Contract size is broker-specific, so check the symbol specification. Costs are left out until the end.

  1. Trade A buys 0.50 lots at 1.10000 with an initial stop at 1.09800, 20 pips away. 1R = 20 × 10 × 0.50 = 100 USD. The trade closes at 1.10500, +50 pips: 50 × 10 × 0.50 = +250 USD. R-multiple: 250 ÷ 100 = +2.5R.
  2. Trade B sells 0.20 lots at 1.10000 with a stop at 1.10500, 50 pips away. 1R = 50 × 10 × 0.20 = 100 USD. The stop fills at 1.10500 for −100 USD: −1.0R.
  3. Trade C buys 1.00 lot at 1.10000 with a stop at 1.09600, 40 pips away. 1R = 40 × 10 × 1.00 = 400 USD. The trade closes at 1.10300, +30 pips: +300 USD. R-multiple: 300 ÷ 400 = +0.75R.

In currency, Trade C looks like the best trade, and the three total +450 USD. In R, Trade A earned the most per unit of risk, and the three total 2.5 − 1.0 + 0.75 = +2.25R, a mean of 0.75R per trade. The currency column mixes two decisions: how the trade went and how much was risked on it. R separates the first from the second, which is why it compares trades across sizes and instruments.

Now add an illustrative 5 USD of commission to Trade A. Its net result becomes 245 USD and its R-multiple 245 ÷ 100 = +2.45R. Costs lower every R-multiple, winners and losers alike.

Illustrative diagram of R-multiples for three EURUSD trades: 1R of 100, 100 and 400 USD, results of +250, −100 and +300 USD, and R-multiples of +2.5R, −1.0R and +0.75R.
Illustrative, before costs, at an assumed 10 USD per pip per 1.00 lot. Trade C makes the most money but earns the least per unit of risk.

How do you log R when the stop moves, you scale out or price gaps?

Keep the initial R as the denominator in every case below. Only the numerator, the trade's result, changes.

  • Trailing or breakeven stop. Trade A rises 40 pips, the stop trails to 1.10300 and the trade exits there: +30 × 10 × 0.50 = +150 USD, or +1.5R. Measured from entry, the trailed stop sits 30 pips in profit. A signed risk to it is −150 USD, which would score this winner −1.0R, and a stop moved exactly to entry leaves zero to divide by. Tharp scores a trade's later gains "based on your original $1,000 risk".[1]
  • Scaling out. Trade A closes 0.25 lots at +20 pips (+50 USD) and 0.25 lots at +60 pips (+150 USD). Log one trade: +200 ÷ 100 = +2.0R. Splitting it into two half-size trades would record +1.0R and +3.0R and double the trade count.
  • Gaps and slippage. Price gaps through Trade B's stop and the fill lands at 1.10600, 60 pips away: −60 × 10 × 0.20 = −120 USD, or −1.2R. Tharp notes that losses "can be bigger than -1R when the market gaps against you", and that slippage and costs have the same effect.[1] See slippage in trading.
  • No initial stop. A trade opened without a stop has no R. PineConnector's no-code order-fill templates, for example, "do not specify a stop loss".[3] Leave such trades out of the R log, or record the stop your rule implied and label it an assumption.

PineConnector's syntax also treats breakeven as a later change, separate from the initial stop. The syntax reference says its breakeven and trailing parameters "configure later stop changes when opening an entry" and do not replace any initial stop required for loss-based sizing.[4] Illustrative message for the TradingView alert's Message field:

LicenseID,buy,EURUSD,vol_lots=0.01,sl_pips=20,betrigger=10,beoffset=2

At an entry of 1.10000 and the assumed 10 USD per pip per lot, 1R = 20 × 10 × 0.01 = 2 USD. After a 10-pip favourable move, the documented example requests a stop at entry + 2 pips, 1.10020; broker rules can reject that modification. An exit there is +2 × 10 × 0.01 = +0.20 USD, or +0.1R before costs. The reference adds that a breakeven price does not ensure zero net loss after costs or execution differences.[4] Automating breakeven and trailing exits covers the mechanics.

What is expectancy in R, and why read the whole distribution?

Expectancy in R = mean R-multiple = (W × AW/R) − (L × AL/R)

W and L are the win and loss rates; AW/R and AL/R are the average win and average loss in R, both positive. A trade that closes at exactly 0R counts in the trade total but in neither W nor L, so L = 1 − W only when there are no breakevens. Tharp writes that "Expectancy is actually the average R-multiple that your system will give you per trade."[1] The expectancy guide gives the currency version of the same formula.

Illustrative, not strategy results. Two logs of 10 trades each have the same 40% win rate:

  • Log A: −1.2, −1.0, −1.0, −1.0, −1.0, −0.8, +0.5, +1.5, +2.0 and +5.0. The winners total 9.0R, so AW = 2.25R. The losers total 6.0R, so AL = 1.0R. Expectancy = (0.4 × 2.25) − (0.6 × 1.0) = 0.90 − 0.60 = +0.3R. Check: +3.0R ÷ 10 = +0.3R.
  • Log B: six trades of −1.0, then +0.5, +0.5, +1.0 and +1.0. AW = 3.0 ÷ 4 = 0.75R and AL = 1.0R. Expectancy = (0.4 × 0.75) − (0.6 × 1.0) = 0.30 − 0.60 = −0.3R.

The win rate is identical, yet the expectancy has the opposite sign. At Log A's averages, the break-even win rate is 1 ÷ (1 + 2.25) ≈ 30.8%. At Log B's, it is 1 ÷ (1 + 0.75) ≈ 57.1%.

Illustrative bar chart of two ten-trade R-multiple distributions with the same 40% win rate: Log A has a mean of +0.3R and Log B a mean of −0.3R.
Illustrative R-multiples, not strategy results. The win rate is identical; the size of the winners decides the sign of the mean.

The distribution also shows what one number hides. Tharp points to the "size, frequency and order of the individual R-multiples", not only their average.[1] Remove Log A's single +5.0R trade and the other nine average −2.0 ÷ 9 ≈ −0.22R. Ten trades cannot settle anything; see how many trades a backtest needs. The same R list feeds the System Quality Number, √N × mean(R) ÷ stdev(R).

R also links results to sizing. With percent-risk sizing, Tharp explains, 1R represents the same share of equity whichever market or date the trade comes from.[1] When every trade risks the same cash amount, currency expectancy equals R expectancy × 1R. At 1R = 100 USD, Log A would average +30 USD per trade. Position sizing methods compares the ways of choosing 1R.

Where do TradingView, MT5 and PineConnector record the pieces?

As of 25 September 2026, no R-multiple column appears in the documented TradingView or MT5 reports, or among PineConnector Analytics' documented metrics. Each supplies part of the calculation.

TradingView strategy report and Pine Script v6

The strategy report's Trades tab can show each trade's entry and exit price, size, net return, and favourable and adverse excursion. The Download icon saves a CSV with every available column.[5] None of those columns records the initial stop. A script can pass the stop as the entry order's comment, which the "Signal" column shows; otherwise, add columns for the stop and for R to the downloaded file.[6]

The "Return" column is not an R-multiple. TradingView defines it as each trade's net return "as a percentage of the trade's size".[5] Illustrative: Trade A's 0.50 lots of EURUSD at 1.10000 are 50,000 EUR, or 55,000 USD at entry. Its +250 USD is about 0.45% of that amount, yet +2.5R of its risk.

In Pine Script v6, functions such as strategy.closedtrades.profit(), strategy.closedtrades.entry_price() and strategy.closedtrades.size() return closed-trade data.[6] No strategy.closedtrades.* function in the v6 reference returns a trade's initial stop, so a script must keep its own record of it. On the default testing range, the trade list keeps only the latest 9000 trades.[5] The TradingView strategy report guide covers the neighbouring fields.

MetaTrader 5 reports and deal history

The MT5 Strategy Tester report and the Trading Report show results in money, percentages and ratios. Examples include Expected Payoff, "the average return of one deal", and average MAE and MFE.[7][8] Dividing a trade's MAE by its R expresses its worst open loss in R; see MAE and MFE.

The deal history holds both stops. MQL5's reference says entry deals use "the Stop Loss values from the original order", while exit deals use "the Stop Loss of a position as at the time of position closing".[9] A different stop on the exit deal shows that the stop moved, and the entry deal still gives the initial R. PineConnector's docs do not say whether the EA attaches the stop to the order or adds it after the fill. Not documented; test on demo and check the entry deal. The MT5 Strategy Tester report guide maps the other fields.

PineConnector alert messages and Analytics

The path runs from idea to measurable rule to TradingView alert to MT5 order. A loss-based volume parameter makes the planned 1R explicit in the alert. Illustrative message for the TradingView alert's Message field:

LicenseID,buy,EURUSD,vol_dollar=100,sl_pips=20

The syntax reference sizes this for a planned loss of about 100 USD at the stop: 100 ÷ (20 × 10) = 0.50 lots before broker volume rounding, at its assumed USD 10 per pip per lot. Loss-based volume needs one explicit stop method in the same message, and the page warns that "Costs, fills, gaps and broker limits can make actual loss differ from the sizing input."[10]

Rounding is where the two denominators part. The reference's illustrative example sizes 1% of 9,100 USD equity, a 91 USD budget, with the same 20-pip stop to 0.455 lots, and says the EA's rounding direction is not established.[10] At 0.45 lots, the position's 1R is 0.45 × 20 × 10 = 90 USD; at 0.46 lots, 92 USD. A clean stop-out is then −1.0R on the position's R, but −0.99R or −1.01R on the planned 91 USD.

Illustrative diagram of where 1R is set and recorded: a rule's 20-pip initial stop, a TradingView alert with vol_dollar=100 and sl_pips=20, 0.50 lots calculated, the MT5 entry deal, a moved stop and the exit deal.
Illustrative; not an executed trade. The alert fixes a planned 1R; the broker's fill, accepted volume and stop fix the position's own 1R.

Each stage is a separate event. The alert condition becomes true and the alert triggers; the webhook is delivered; PineConnector processes the signal; the EA sends an order request; the broker accepts it, and a deal opens the position. A stop that exists only in the Pine strategy is part of TradingView's simulation, not a stop on the MT5 position. For the position to carry its own initial stop, the message requests one with sl_pips=, sl_price= or sl_pct=.[10]

PineConnector's Analytics guide uses R in its expectancy example: 10 USD per trade is 20% of a 50 USD average loss, "also called 0.2R".[11] Dividing by the average loss gives expectancy in R only when every trade risked the same 1R and the average loss equals it. Analytics requires the PineConnector MT5 EA v3.41 or later and, in the published guide, is not available for MT4.[11]

What do R-multiples not tell you?

  • How large 1R was. R hides the stake. Two accounts with identical R-multiples have very different currency drawdowns if one risked ten times as much per trade. Read maximum drawdown alongside it.
  • The plan versus the outcome. A planned risk-reward ratio, such as an illustrative 1:3, is a target. The R-multiple is what happened, after exits, gaps and costs.
  • Time. A +2R trade held for a day and one held for three months look the same in R.
  • Reliability. A mean from ten trades, or one that depends on a single outlier, says little. Report the trade count with every figure.
  • The future. A mean R-multiple summarises past or simulated trades. PineConnector's Analytics guide likewise separates historical results from a forecast.[11]

Frequently asked questions

What is an R-multiple in trading?

An R-multiple in trading is a trade's result divided by its initial risk, R, where R is the amount the trade would lose at its initial stop. A trade risking 100 USD that makes 250 USD is +2.5R; a loss of exactly the planned amount is −1R. R-multiples put trades of different sizes and markets on one scale.

What is 1R in trading?

1R is one unit of initial risk: the loss a trade would take if price reached its initial stop. For a forex trade, 1R equals stop distance in pips × pip value per 1.00 lot × lots. Illustrative: a 20-pip stop on 0.50 lots of EURUSD, at an assumed 10 USD per pip per lot, makes 1R equal to 100 USD.

How do you calculate expectancy in R?

Expectancy in R is the mean R-multiple: add every trade's R-multiple and divide by the number of trades. Equivalently, it is (win rate × average win in R) − (loss rate × average loss in R). Illustrative: 40% of trades average +2.25R and 60% average −1.0R, so expectancy is 0.90 − 0.60 = +0.3R per trade.

Should R use the initial stop or the moved stop?

R uses the initial stop, even after a breakeven or trailing stop has moved it. The moved stop changes the exit, not the unit of risk. Illustrative: a trade that risked 100 USD and exits at a trailed stop for +150 USD is +1.5R. Dividing by the moved stop fails: a stop at entry leaves nothing to divide by, and a stop in profit no longer measures a risk.

Can a loss be bigger than −1R?

Yes. A loss exceeds −1R when price gaps through the stop, when slippage fills the stop at a worse price, or when costs are added to the result. Illustrative: a 50-pip stop on 0.20 lots of EURUSD risks 100 USD at an assumed 10 USD per pip per lot. A gap fill 60 pips away loses 120 USD, or −1.2R.

Reviewed 25 September 2026. Facts were checked against the linked sources on that date. Nothing in this article was tested on a trading account.

Related reading

Sources

  1. Van Tharp Institute – Van K. Tharp, A Short Lesson on R and R-Multiples, with a chapter from Trade Your Way to Financial Freedom (PDF), accessed 25 September 2026.
  2. MetaQuotes – MetaTrader 5 Help: Trading Report (for advanced users), accessed 25 September 2026.
  3. PineConnector – No-code alerts: strategy order-fill templates, accessed 25 September 2026.
  4. PineConnector – Syntax: breakeven and trailing stops, accessed 25 September 2026.
  5. TradingView – Pine Script v6 User Manual: Strategies, accessed 25 September 2026.
  6. TradingView – Pine Script v6 Reference Manual, accessed 25 September 2026.
  7. MetaQuotes – MetaTrader 5 Help: Testing Report, accessed 25 September 2026.
  8. MetaQuotes – MetaTrader 5 Help: Trading Report, accessed 25 September 2026.
  9. MetaQuotes – MQL5 Reference: Deal Properties, accessed 25 September 2026.
  10. PineConnector – Syntax: loss-based sizing, accessed 25 September 2026.
  11. PineConnector – Trading analytics: expectancy example, accessed 25 September 2026.

PineConnector executes the instructions you send it. It does not select trades, manage money, or hold funds. Trading carries risk, and past performance of any strategy does not indicate future results.


Leave a comment

Back To PiCo Blog

Ready when your strategy is

You bring the strategy.We bring the infrastructure.

Connect TradingView to MetaTrader, choose where MT5 runs and put the full PineConnector workflow through its paces from your first month.

Strategy and trading decisions remain yours. The MT5 environment can be ours.

PineConnector Edge

Run the full PineConnector workflow.

$59/mo at launch

Core plan · 1 connection · 1 hosted MT5 environment

Try Core for $7

7 days of Core for $7, then $59/month at the launch price unless you cancel.