This calculator is designed for CFD (Contract for Difference) instruments including Forex, Commodities, Indices, and Cryptocurrencies. Results may not be accurate for Futures, Options, Stocks CFDs or ETFs.
Back to Calculator

How It Works

1. Notional Volume Calculation

Notional volume represents the total market value of a leveraged position. It's calculated differently depending on the instrument type:

General Formula
Notional (USD) = Lots x Contract Size x Price x FX Rate
Formulas by Instrument Type
Type Examples Formula Explanation
USD Base Pairs USDJPY, USDCAD, USDCHF Lots x 100,000 Base currency is already USD, no conversion needed
USD Quote Pairs EURUSD, GBPUSD, AUDUSD Lots x 100,000 x Close Price Close price represents how many USD per base unit
Cross Pairs GBPJPY, EURJPY, AUDCAD Lots x 100,000 x Base-to-USD Rate Requires FX rate lookup to convert base currency to USD
Commodities & Indices XAUUSD, BTCUSD, GER40 Lots x Contract Size x Close Price x FX Rate Uses specific contract sizes and FX conversion if needed
Contract Sizes
Instrument Contract Size
Forex Pairs100,000 units
Gold (XAUUSD)100 troy ounces
Silver (XAGUSD)5,000 troy ounces
Crude Oil (WTI/USOIL)1,000 barrels
Instrument Contract Size
Bitcoin (BTCUSD)1 BTC
Ethereum (ETHUSD)1 ETH
Indices (GER40, US30)1 unit
Example Calculation
Trade: Buy 0.5 lots of EURUSD, closed at 1.0850
Calculation: 0.5 x 100,000 x 1.0850 = $54,250 USD
2. FX Rate Conversion

When a trade's base currency is not USD, we need to convert it to USD using the exchange rate from the trade's close date.

When FX Conversion is Needed
  • Cross currency pairs (e.g., GBPJPY) - need to convert GBP to USD
  • Non-USD indices (e.g., GER40) - need to convert EUR to USD
How Rates Are Fetched
  1. Historical API - We use the Frankfurter API to fetch historical exchange rates
  2. Date-Based Lookup - Rates are fetched for the exact date the trade was closed
  3. In-Memory Caching - Once fetched, rates are cached to avoid duplicate API calls
  4. Fallback Rates - If the API is unavailable, approximate static rates are used
Why historical rates? Using the exchange rate from the actual trade date provides more accurate notional calculations than using current rates.
3. FX Source Types

Each trade shows an "FX Source" badge indicating how the exchange rate was obtained:

direct
Direct USD Quote

The instrument is already quoted in USD (e.g., EURUSD, XAUUSD). No FX conversion needed - rate is 1.0.

api
Historical API

Fresh rate fetched from the Frankfurter API for the trade's close date. Most accurate source.

cached
Cached API Rate

Rate was previously fetched for the same currency/date combination and reused from memory cache.

fallback
Fallback Rate

API unavailable - using approximate static rate. Results may be less accurate.

Tip: If you see many "fallback" badges, check your internet connection or try again later for more accurate results.
4. Supported Platforms
MT5MetaTrader 5

Export your trade history from the History tab:

  1. Open the History tab in MT5
  2. Right-click and select "Report"
  3. Choose "Open XML" or export as Excel
  4. Upload the .xlsx file
cTradercTrader

Export your trade history from History:

  1. Go to the History section
  2. Select date range
  3. Click "Statement" or export icon
  4. Upload the .xlsx or .csv file