What Is Option Rho? The Interest Rate Greek
Option rho measures how interest rate changes move option prices. See why it is nearly invisible on a 30 day call and material on a two year LEAPS.
Option rho measures how much an option's price moves when the risk-free interest rate moves, quoted as the price change per one percentage point of rate. Rho is positive for calls and negative for puts. On a 30-day at-the-money contract it is the smallest number on the greeks line, and on a two-year LEAPS it is large enough to shift the premium by several percent.
What is option rho, and why is it positive for calls?
Rho belongs to the option greeks, the sensitivities that each measure one input at a time. Delta covers the share price, vega covers implied volatility, theta covers the passage of time, and rho covers the interest rate a pricing model uses to discount cash that changes hands in the future. The option greeks explained walks through the rest of the set.
The sign falls out of what a call option is: a deferred purchase. A call buyer has fixed the price of the shares today and pays for them later, at exercise or at expiration. Until that day the strike money sits in the buyer's account earning interest. The longer the deferral and the higher the rate, the more that arrangement is worth, and the model prices the call higher for it. That is a positive rho.
A put is the mirror image: a deferred sale. A put holder waits to receive the strike in cash on a future date, and a fixed sum arriving later is worth less at a higher discount rate. Put prices carry that as a negative rho.
Why does rho scale with time to expiration?
Write the Black-Scholes rho term out and it is the strike, multiplied by the years remaining, multiplied by a discount factor, multiplied by the model's probability that the strike ever gets paid. The years-remaining piece is the one that changes by an order of magnitude across the contracts on a retail screen. One month of deferred payment is worth roughly one twenty-fourth of two years of it.
A worked example puts a size on that. These are round hypothetical inputs rather than quotes from any contract: a $100 share, a $100 strike, 25 percent volatility, no dividends, and a starting rate of 4 percent. Rho is quoted per one percentage point, and the price change is what a full 100 basis point rise does to each contract.
- 30-day call: about $3.02, rho near +0.04. After the rate change it prices near $3.06, four cents richer, 1.4 percent of the premium.
- 30-day put: about $2.69, rho near -0.04. After the same change it prices near $2.65.
- 730-day call: about $17.68, rho near +0.96. After the same change it prices near $18.65, 97 cents richer, 5.5 percent of the premium.
- 730-day put: about $9.99, rho near -0.89. After the same change it prices near $9.13, about 86 cents lighter, 8.6 percent of the premium.
Same share price, same strike, same volatility. The calendar is the only difference, and rho on the two-year call runs about 23 times the 30-day figure. The panel below measures the same effect across real SPY contracts, with average rho in each maturity bucket divided by the average in the 21 to 45 day bucket.
The exact SQL behind every number
SELECT
b.dte_bucket AS dte_bucket,
round(b.call_rho / f.front_call_rho, 2) AS call_rho_ratio,
round(b.put_rho / f.front_put_rho, 2) AS put_rho_ratio,
b.contract_count AS contract_count
FROM
(
SELECT
multiIf(days_to_expiry <= 45, '21-45d',
days_to_expiry <= 90, '46-90d',
days_to_expiry <= 180, '91-180d',
days_to_expiry <= 365, '181-365d',
days_to_expiry <= 545, '366-545d',
'546-760d') AS dte_bucket,
min(days_to_expiry) AS sort_key,
avgIf(rho, startsWith(lower(toString(option_type)), 'c')) AS call_rho,
avgIf(rho, startsWith(lower(toString(option_type)), 'p')) AS put_rho,
count() AS contract_count
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date >= '2026-05-01'
AND date < '2026-08-01'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 21 AND 760
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.03
GROUP BY dte_bucket
HAVING countIf(startsWith(lower(toString(option_type)), 'c')) > 0
AND countIf(startsWith(lower(toString(option_type)), 'p')) > 0
) AS b
CROSS JOIN
(
SELECT
avgIf(rho, startsWith(lower(toString(option_type)), 'c')) AS front_call_rho,
avgIf(rho, startsWith(lower(toString(option_type)), 'p')) AS front_put_rho
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date >= '2026-05-01'
AND date < '2026-08-01'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 21 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.03
) AS f
ORDER BY b.sort_keyEvery row prints as a multiple of the front-month bucket, which takes the model's units out of the comparison. Average call rho in the 546 to 760 day bucket runs 20.26 times the 21 to 45 day figure, and the put side runs 18.12 times its own front-bucket average. The curve is close to a straight line in time remaining, which is what the formula sets up.
What happens to rho as a LEAPS ages?
Buckets are a snapshot. Following one expiration through a year shows the same thing happening to a single set of contracts. The panel tracks the near-the-money SPY calls expiring in January 2027, week by week, against a rolling 21 to 45 day series on the same underlying.
The exact SQL behind every number
SELECT
toString(toMonday(date)) AS week,
round(avgIf(rho, expiration_date = '2027-01-15'), 3) AS leaps_call_rho,
round(avgIf(rho, days_to_expiry BETWEEN 21 AND 45), 3) AS front_call_rho
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND startsWith(lower(toString(option_type)), 'c')
AND date >= '2025-08-04'
AND date < '2026-08-01'
AND iv_converged = 1
AND volume > 0
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
AND (expiration_date = '2027-01-15' OR days_to_expiry BETWEEN 21 AND 45)
GROUP BY week
HAVING countIf(expiration_date = '2027-01-15') > 0
AND countIf(days_to_expiry BETWEEN 21 AND 45) > 0
ORDER BY weekIn the first week on the chart the January 2027 strikes average 5.125. By the last week they average 1.789, with under six months of life left, while the rolling near-dated series reads 0.274 in that same week. Nothing about those contracts changed except the calendar in front of them. The pattern is the one described in how option greeks change over time, and it is why LEAPS contracts are where rate sensitivity turns up first.
Which strikes carry the most rho?
Rho moves with the model's probability that the strike is actually paid. A deep in-the-money call is close to certain to be exercised, and close to the whole strike is being deferred, which puts its rho at the top of the chain. A far out-of-the-money call has little chance of ever paying the strike, and its rho stays small. The panel groups long-dated SPY contracts by where the strike sits against the share price.
The exact SQL behind every number
SELECT
multiIf(toFloat64(strike_price) / toFloat64(underlying_close) - 1 < -0.10, 'strike 10%+ below',
toFloat64(strike_price) / toFloat64(underlying_close) - 1 < -0.05, 'strike 5-10% below',
toFloat64(strike_price) / toFloat64(underlying_close) - 1 < -0.02, 'strike 2-5% below',
toFloat64(strike_price) / toFloat64(underlying_close) - 1 < 0.02, 'strike within 2%',
toFloat64(strike_price) / toFloat64(underlying_close) - 1 < 0.05, 'strike 2-5% above',
toFloat64(strike_price) / toFloat64(underlying_close) - 1 < 0.10, 'strike 5-10% above',
'strike 10%+ above') AS moneyness_bucket,
round(avgIf(rho, startsWith(lower(toString(option_type)), 'c')), 3) AS call_rho,
round(avgIf(rho, startsWith(lower(toString(option_type)), 'p')), 3) AS put_rho,
count() AS contract_count
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date >= '2026-05-01'
AND date < '2026-08-01'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 366 AND 760
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) <= 0.20
GROUP BY moneyness_bucket
HAVING countIf(startsWith(lower(toString(option_type)), 'c')) > 0
AND countIf(startsWith(lower(toString(option_type)), 'p')) > 0
ORDER BY min(toFloat64(strike_price) / toFloat64(underlying_close))In the lowest bucket, strikes at least 10 percent under the share price, average call rho reads 6.411 and average put rho on those same strikes reads -2.391. At the other end, strikes at least 10 percent above the share price, the call figure is 3.433 and the put figure is -7.572. The two lines cross the strikes in opposite directions. These panels print rho on the scale of the daily per-contract model that computes it, so read the sign and the shape here and take the dollar interpretation from the worked example above. Deep in-the-money LEAPS, which pair a long calendar with a high exercise probability, sit at the extreme of both panels.
How much do interest rates actually move?
Rho is quoted per percentage point, and a percentage point is a large step in rate terms. The panel measures the start-to-end change in the 2-year and 10-year Treasury yields for each calendar year, in basis points, where 100 basis points is one percentage point.
The exact SQL behind every number
SELECT
toString(toYear(date)) AS year,
round((argMax(yield_2_year, date) - argMin(yield_2_year, date)) * 100, 0) AS change_2y_bps,
round((argMax(yield_10_year, date) - argMin(yield_10_year, date)) * 100, 0) AS change_10y_bps
FROM global_markets.treasury_yields
WHERE date >= '2014-01-01'
AND date < '2026-08-01'
AND yield_2_year > 0
AND yield_10_year > 0
GROUP BY year
ORDER BY yearIn 2014 the 2-year yield's start-to-end change measured 28 basis points. In 2026, through the most recent day in the window, it measured 81. Some years on the chart finish within a few dozen basis points of where they opened, and a few carry changes of several hundred. A two-year contract held through one of the larger years carries a rate exposure worth tracking. A weekly option held through the same year does not.
Where interest rates show up in real option prices
Two places make rho tangible. The first is the box spread, a four-leg combination whose payoff at expiration is a fixed amount of cash wherever the share price lands. With the stock exposure netted away, the rate term is all that remains, and the price of the box implies a borrowing or lending rate. The implied loan rate inside a box spread takes one apart step by step.
The second is early exercise on a deep in-the-money put. Exercising delivers the strike in cash today rather than at expiration, and cash in hand earns interest for the remaining life of the contract. Once that interest outweighs the option's remaining time value, an American-style put is worth more exercised than held. That is a rho argument in disguise. European-style contracts carry no such choice, a difference covered in American versus European options.
FAQ
What is rho in options trading?
Rho measures the change in an option's price for a one percentage point change in the risk-free interest rate. Calls carry positive rho and puts carry negative rho, and both grow with the time left to expiration.
Is rho positive or negative for puts?
Negative. A put holder waits to receive the strike in cash. A higher discount rate lowers the present value of that future payment, and the put price carries the difference as negative rho.
Does rho matter on short-dated options?
Very little. In the hypothetical above, a full 100 basis point rate change is worth about four cents on a 30-day $3 option. Delta, gamma, theta, and vega each move a short-dated contract far more in an ordinary session.
Which options have the highest rho?
Long-dated in-the-money calls. Rho scales with the years remaining and with the model's probability that the strike is ever paid, and both sit near their maximum for an in-the-money LEAPS.
How is rho different from vega?
Vega measures sensitivity to implied volatility; rho measures sensitivity to the interest rate. Implied volatility can move several points in a week, while the rate input travels the slower path the yearly panel above draws.
How these panels are built
The options panels cover SPY contracts with a converged implied volatility solve and non-zero volume on the day, held near the money except where the panel groups by strike. The tenor and strike panels run over May through July 2026. The weekly trace runs from August 2025 through July 2026 and pins one expiration, 15 January 2027, so its strikes track the share price while the expiry stays fixed. Rho comes from a daily per-contract model solve and prints on that model's scale, which is why the tenor panel indexes each bucket against the front-month bucket instead of quoting a raw level. The worked example is hypothetical arithmetic on round inputs, not a quote from any contract.
Every panel here carries the exact SQL underneath it. Open one, swap in another ticker or expiration, and ask the same question on the Strasmore terminal.