How to Calculate ADR Premium and Discount in Real Time
A step-by-step guide to calculating the premium or discount between an ADR and its underlying foreign shares, including the formula, common pitfalls, and how to monitor spreads in real time.
What Is an ADR Premium or Discount?
An American Depositary Receipt (ADR) should theoretically trade at the same price as its underlying foreign shares — once you adjust for the depositary ratio and the exchange rate. In practice, it almost never does. The difference is the ADR premium (if the ADR is more expensive) or ADR discount (if it's cheaper).
Understanding how to calculate this spread, and what drives it, is foundational for anyone doing cross-listing analysis.
The Basic Formula
The ADR parity price — what the ADR should theoretically cost — is:
ADR Parity = (Foreign Share Price × ADR Ratio) × FX Rate
Where:
- Foreign Share Price = price of the underlying shares in the home market currency
- ADR Ratio = number of underlying shares represented by one ADR (or the fraction, if applicable)
- FX Rate = units of USD per unit of foreign currency
Premium (%) = ((ADR Price - ADR Parity) / ADR Parity) × 100
A positive result means the ADR trades at a premium to its underlying shares. A negative result is a discount.
Worked Example
Let's use a hypothetical UK company listed in London and also as an ADR on the NYSE.
Suppose:
- London shares: GBP 4.20 each
- ADR ratio: 1 ADR = 4 ordinary shares
- GBP/USD exchange rate: 1.27
- NYSE ADR price: USD 21.50
ADR Parity = 4.20 × 4 × 1.27 = 21.34
Step 2: Calculate the premium
Premium = ((21.50 - 21.34) / 21.34) × 100 = +0.75%
The ADR is trading at a 0.75% premium to its London equivalent. Within normal bounds of transaction costs.
Doing It in Real Time
The challenge with real-time ADR spread calculation is data synchronization. The two markets may be in different time zones, using different data sources, with prices updating at different frequencies.
A reliable real-time setup needs:
1. Simultaneous prices: Prices pulled at the same timestamp from both markets. Using one real-time feed and one delayed feed introduces error.
2. Live FX rate: Use a streaming FX rate, not yesterday's close. Currency pairs like GBP/USD move constantly.
3. Confirmed ADR ratio: Depositary ratios can change. Confirm the current ratio from the company's investor relations page or the depositary bank's website before calculating.
4. Adjusted for dividends: Around ex-dividend dates, prices on one side will drop by the dividend amount while the other hasn't adjusted yet. Filter these periods out if your goal is identifying genuine mispricing.
Common Pitfalls
Wrong ratio. This is the most common error. If you assume a 1:1 ratio when the actual ratio is 1:5, your calculated parity will be wildly off. Always verify. Stale FX. Using yesterday's FX rate introduces a baseline error that can be larger than the spread you're trying to measure. For major pairs like GBP/USD or AUD/USD, rate moves of 0.5%+ in a day are common. Not accounting for trading hours. When the home market is closed and the ADR market is open, the ADR price moves while the home price is frozen. The "spread" you calculate during these hours isn't comparable to one measured when both markets are live. Conflating bid-ask spread with premium. A calculated premium smaller than the combined bid-ask spread on both instruments isn't a real premium — it's noise. Look at mid prices, not last-traded prices, for more accurate comparisons. Currency conversion direction. Make sure you're using the right FX rate direction. GBP/USD is GBP per USD (so £1 = $X). Using the inverted rate is a common mistake.When ADR Premiums Persist
Most ADR premiums are transient — they appear, and arbitrageurs trade them away. But some premiums persist:
Restricted shares. If the home country has restrictions on foreign ownership or capital flows (common in some emerging markets), arbitrage is difficult or impossible, so premiums can persist for months or years. Structural demand differences. Some US investors prefer ADRs for compliance or tax reasons even at a premium. Some markets have natural demand for local shares that sustains a discount in the ADR. Liquidity premium. If the ADR is significantly more liquid than the home market shares, a small persistent premium may simply reflect the value of that liquidity. Regulatory differences. Different regulatory requirements, reporting standards, or investor protection rules on each exchange can create structural divergences.The CDI Version of This Math
If you're working with Australian CDIs instead of ADRs, the math is the same — just with the ratio often inverted (CDI < 1 share) and the currency pair reversed (AUD/USD instead of USD/foreign).
For a stock like Life360, where 1 CDI = 1/3 NASDAQ share:
CDI Parity (AUD) = NASDAQ Price (USD) × (1/3) / AUD_USD_Rate
Or equivalently, multiply the CDI price by 3 and convert to USD before comparing to the NASDAQ price. StockResearch.app does this automatically for any cross-listed pair you enter.
Building a Monitoring System
If you want to track ADR premiums for multiple stocks, a simple Python approach:
1. Use yfinance to pull prices for both the ADR and the home market shares 2. Pull the FX rate from a provider like Open Exchange Rates or ECB data feeds 3. Calculate parity and premium for each pair 4. Set alert thresholds (e.g., notify if spread exceeds 2%)
The calculation itself is simple. The data pipeline — ensuring synchronous, clean prices from two markets plus a live FX feed — is where most of the engineering effort goes.
This article is for informational purposes only and does not constitute financial advice. The worked examples use hypothetical prices for illustration. Arbitrage strategies carry significant risk. Always consult a financial professional before trading.