Strasmore Research
Learn am Matt ConnorBy Matt Connor · Updated 2026-08-08

Put-Call Parity Explained With Real Numbers

Put-call parity dey link call, put, stock, and cash. See real option-chain numbers plus how to read the implied dividend and borrow rate from any price gap.

Put-call parity na fixed arithmetic wey tie call, matching put, underlying share, and cash loan together into one price. For European options wey get the same strike and expiration date, call price minus put price equal the discounted difference between stock forward price and that strike. If you apply the relation to a real chain, e go give you the share price wey the options imply, and that price rarely match wetin dey show for the tape. The gap between both na where dividend and financing rate dey.

Wetin put-call parity really dey talk

If you write the relation out, e be C - P = S - PV(K) - PV(D). C na call price, while P na put price for the same strike and expiration. S na share price today. PV(K) na the strike discounted back with financing rate, while PV(D) na present value of dividends wey the share go pay before expiration. Call options carry the right to buy at the strike, while put options carry the right to sell at that price.

The algebra hide one package behind am. Buy the call and sell the put at one strike, and you go end up owning the share at that strike on expiration day, no matter wetin the price do: if price pass the strike, you exercise; if e fall below am, you get assigned. The pair na synthetic long share position, bought on credit, wey you pay for at expiration instead of today, and e no collect dividend meanwhile. Parity only price these two adjustments.

Imagine say share dey $100, one-year call get $100 strike and dey quote at $9, matching put dey $5, and no dividend dey between. The pair cost $4. Add the strike back, and the options imply $104 for a share wey dey quote at $100. That $4 na interest on deferred purchase price for one year, at roughly four percent. These figures na illustration, chosen because the arithmetic round.

The share price wey the options imply

If you rearrange the relation, e go print its own share price: call price minus put price plus the strike. Do that subtraction at every strike for one expiration, and the answers go dey within pennies of each other. That number na synthetic stock price. The distance between am and the close for the tape na basis, or carry, of the synthetic. Interest up to expiration push the basis up. Dividends before expiration pull am down.

Wetin dey inside the parity gap

Na four things, and na only four:

  • Interest up to expiration. To pay the strike later instead of now na loan for the life of the contract, and the pair charge for am.
  • Dividends before expiration. Synthetic holder no collect any, so every dividend wey go ex before contract expire come out of the gap.
  • Borrow cost. Whoever take the other side and short the share go pay stock loan fee, and that fee enter the same gap.
  • Early exercise value for American contracts, wey turn the equality into a band.

The same relation across expirations

Interest dey accrue by day, while dividends land on specific dates, so basis na curve, no be one number. An option chain carry another readout of that curve. Parity tie call and put at one strike to one forward, so pricer wey use the chain’s own rate and dividend go return the same implied volatility for both legs. Any daylight between the legs mean daylight between the assumptions.

This panel dey fixed for the past, so the numbers for this page no dey move: AAPL monthly expirations from July 2026 reach January 2027, read from the June 16, 2026 session, at the strike nearest the close for each one.

QueryCall and put implied volatility wey dey near the money across AAPL monthly expirations, June 16 2026
The exact SQL behind every number
SELECT
    expiry_date,
    days_out,
    concat('$', toString(argMin(strike, atm_gap)))                        AS atm_strike_used,
    round(100 * argMin(call_iv, atm_gap), 1)                              AS call_iv_pct,
    round(100 * argMin(put_iv, atm_gap), 1)                               AS put_iv_pct,
    round(100 * (argMin(call_iv, atm_gap) - argMin(put_iv, atm_gap)), 1)  AS iv_gap_pct
FROM
(
    SELECT
        expiry_date,
        days_out,
        strike,
        call_iv,
        put_iv,
        abs(strike / spot_close - 1) AS atm_gap
    FROM
    (
        SELECT
            toString(expiration_date)                                    AS expiry_date,
            max(dateDiff('day', toDate(date), toDate(expiration_date)))  AS days_out,
            round(toFloat64(strike_price), 2)                            AS strike,
            maxIf(toFloat64(implied_volatility), leg = 'C')              AS call_iv,
            maxIf(toFloat64(implied_volatility), leg = 'P')              AS put_iv,
            max(toFloat64(underlying_close))                             AS spot_close
        FROM
        (
            SELECT
                date,
                expiration_date,
                strike_price,
                implied_volatility,
                underlying_close,
                upper(substring(ticker, length(ticker) - 8, 1)) AS leg
            FROM global_markets.options_greeks
            WHERE underlying_symbol = 'AAPL'
              AND date = '2026-06-16'
              AND expiration_date BETWEEN '2026-07-01' AND '2027-01-31'
              AND toDayOfWeek(toDate(expiration_date)) = 5
              AND toDayOfMonth(toDate(expiration_date)) BETWEEN 15 AND 21
              AND iv_converged = 1
              AND volume > 0
              AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.03
        )
        GROUP BY expiry_date, strike
        HAVING countIf(leg = 'C') > 0
           AND countIf(leg = 'P') > 0
    )
)
GROUP BY expiry_date, days_out
ORDER BY expiry_date
Run this yourself

At 2026-07-17, 31 days remain, and the $300 strike carry call at 21.9 percent against put at 20.5 percent, with gap of 1.4 points. At 2027-01-15, 213 days remain, the gap na 0.3 points. The two legs dey track each other down the whole calendar.

How to extract implied dividend or implied borrow rate

For implied dividend, take two expirations wey dey on both sides of a company’s ex-dividend date, calculate basis for each one, then subtract. Extra interest across the extra days small and you fit calculate am from prevailing bill rate. Wetin remain na the cash wey the chain expect to go ex in between. Compare am with the declared schedule for our ex-dividend dates and options page, and you go see the chain’s own dividend assumption.

For implied borrow rate, run the process backward. Fix dividend at the declared amount and financing at bill rate. Calculate the basis wey both produce, then compare am with the basis wey the chain quote. For a share wey easy to borrow, both go land on top each other. For hard-to-borrow share, quoted basis go sit below the calculated one, and the annualized shortfall na the borrow fee wey the options dey charge.

The first thing na to know which two prices to pull from the screen, and our option chain guide explain the layout.

Where American options break the equality

American options fit get exercised on any day up to expiration. European options fit only get exercised at expiration, and strict parity equality na for European case. For American contracts, e relax into a band, wider for the side wey get early exercise right wey worth money. American call only make sense to exercise early just before dividend wey bigger than its remaining time value. Na why early call exercise dey cluster on the day before ex-dividend date.

The same volatility test dey run across strikes at one expiration, and na there the band show its width.

QueryCall and put implied volatility for matched AAPL strikes, Sep 18 2026 expiry
The exact SQL behind every number
SELECT
    strike,
    round(100 * call_iv, 1)             AS call_iv_pct,
    round(100 * put_iv, 1)              AS put_iv_pct,
    round(100 * (call_iv - put_iv), 1)  AS iv_gap_pct
FROM
(
    SELECT
        round(toFloat64(strike_price), 2)                AS strike,
        maxIf(toFloat64(implied_volatility), leg = 'C')  AS call_iv,
        maxIf(toFloat64(implied_volatility), leg = 'P')  AS put_iv
    FROM
    (
        SELECT
            strike_price,
            implied_volatility,
            upper(substring(ticker, length(ticker) - 8, 1)) AS leg
        FROM global_markets.options_greeks
        WHERE underlying_symbol = 'AAPL'
          AND date = '2026-06-16'
          AND expiration_date = '2026-09-18'
          AND iv_converged = 1
          AND volume > 0
          AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.15
          AND toUInt32(toFloat64(strike_price)) % 5 = 0
    )
    GROUP BY strike
    HAVING countIf(leg = 'C') > 0
       AND countIf(leg = 'P') > 0
)
ORDER BY strike
Run this yourself

The two lines dey move together across the ladder. At 255 strike, the call imply 30.5 percent and the put 29.3 percent, with gap of 1.2 points. Where gap open at far strikes, possible reasons include stale closing print for one side, thin market at that strike, early exercise premium wey the model no carry, or dividend assumption wey differ from the one the chain price.

Conversions and reversals, the flow wey enforce am

Conversion na long shares, short call, and long put at one strike. Reversal na the opposite setup. Both packages stay flat against share price at expiration, and wetin remain na financing and dividend terms. Market makers put them on when the pair stray far enough to cover their costs, and that flow pull quotes back toward the line. The edge belong to desks wey get cheap financing and stock loan book behind them, and this page no be guide to trading am.

How parity different from put/call ratio

People dey confuse the two. Put-call parity na pricing identity between one call and one put at one strike, and na arithmetic. Put/call ratio count volume or open interest across the whole chain, and people read am as sentiment gauge. Parity talk wetin one pair must cost against the share. The ratio talk wetin people trade.

Data notes and method

Figures na daily closing implied volatilities for AAPL contracts on June 16, 2026. We match call to put at each strike, with underlying close from the same session. We include contracts only if volume pass zero that day and implied volatility converge. The strike ladder sample the five dollar grid so e go remain readable, while expiration panel take the strike nearest the close at each monthly expiration. The call or put letter come from the ninth character from the end of the OCC contract symbol. AAPL listed options na American style, so every figure here carry any early exercise premium wey market price that day.

FAQ

Wetin be put-call parity formula?

For European options with the same strike and expiration, call price minus put price equal share price, minus present value of strike, minus present value of dividends paid before expiration. Rearranged: call price minus put price plus strike give the share price wey the options imply.

Put-call parity dey hold for American options?

No be strict equality. Early exercise rights turn am into a band around the European relation.

How I fit calculate implied dividend from option chain?

Take call and put at one strike and expiration. Calculate call minus put plus strike, then subtract share price. That gap na interest up to expiration minus expected dividends. Calculate the interest from bill rate for the same number of days, and wetin remain na the dividend wey the chain dey price.

Why call and put at the same strike get the same implied volatility?

Parity tie the two prices together without volatility term inside the link. So model wey price one from given forward and discount rate go price the other with the same inputs.


Every panel here come with the SQL underneath am. If you want run the same ladder on another name or a later expiration, ask for am in plain English on the Strasmore terminal.