Forex Position Size Calculator
FOREX · RISK-BASED SIZING · LIVE ACCOUNT-CURRENCY CONVERSION
Size a forex position from your risk amount, entry, and stop, in lots and units, converted to your own account currency via a live FX rate.
Risk amount is in your account currency. A live rate converts it against USD to size the position.
Why this needs a live rate
Sizing a position from a risk budget means answering one question: how many units do I need so that a stop-out loses exactly my risk amount? That requires knowing what 1 pip is worth in the currency your risk budget is denominated in, almost always your account currency, not the pair's own quote currency. Unlike pip value or margin, there's no meaningful quote-currency-only version of this calculator: the live conversion is the whole point.
The formula
- Stop distance (pips) = |entry − stop| / pip size
- Pip value per unit (account currency) = pip size × live FX rate
- Units = risk amount / (stop distance × pip value per unit)
Worked example
EUR/USD, entry 1.1000, stop 1.0950 (50 pips), risking $100, account in USD:
- pip value per unit = 0.0001 × 1 (USD/USD) = $0.0001
- units = 100 / (50 × 0.0001) = 20,000 units = 0.2 standard lots
This matches the standard trader rule of thumb: EUR/USD's pip value per standard lot is $10, so risking $100 over 50 pips is 100 / (50 × 10) = 0.2 lots.
Where to go next
Once you have a position size, check the margin required to open it, or your risk/reward ratio before entering. To see what one pip is worth for your pair and lot size, or how pip size works (0.0001, or 0.01 for JPY pairs), use the Pip Value Calculator.
Use via API or MCP
This calculation is available as a deterministic API call for bots and AI agents.
EMBED ON YOUR SITE
<!-- TradingCalc widget: please keep the link below exactly as given (address and words) --> <div class="tradingcalc-widget" data-widget="forex-position-size-calculator"><a href="https://tradingcalc.io/forex-position-size-calculator?utm_source=embed&utm_medium=backlink&utm_campaign=forex-position-size-calculator">Forex Position Size Calculator by TradingCalc.io</a></div> <script async src="https://tradingcalc.io/embed.js"></script>
Free, no signup. Keep the text link in the code exactly as given, with its address and its words: it is the attribution and it points visitors to the full calculator. Change colors, size and start values or read the installation guide and FAQ.
What assumptions and edge cases does this calculator use?
The pair is BASE/QUOTE with two different ISO 4217 currency codes, in any letter case; crypto tickers and precious metals (XAU, XAG, XPT, XPD) are refused. A pip is 0.01 for a pair quoted in JPY and 0.0001 for every other pair, and a standard lot is 100,000 units. Entry, stop and the risk amount must be above zero, and a stop equal to the entry is refused because there is no distance to size from. The risk amount is in your account currency, converted with a live rate. Units are not rounded to your broker lot step. Not covered: slippage on the stop, spread, commission, and margin limits.
Why does this calculator need my account currency, when others don't?
Sizing from a risk budget requires knowing what 1 pip is worth in the currency that budget is denominated in, almost always your account currency. Pip Value and Margin Required can give a correct answer in the pair's own quote currency alone; this calculator genuinely can't.
What if my account currency matches the pair's quote currency?
The live rate is exactly 1 (an "identity" conversion, no external fetch needed), and the math reduces to the standard rule of thumb: risk amount divided by (stop distance in pips × pip value per lot).
Does leverage affect my position size here?
No. Position size from a risk budget is independent of leverage: it's driven entirely by your stop distance and risk amount. Leverage determines how much margin that position needs, not how large it should be. Check margin required separately.
What happens if entry equals stop?
There's no risk distance to size from, so the calculator reports an error rather than a division-by-zero result. Move your stop away from entry to get a valid size.