Calculate the move the options market expects up to every expiry, from the price of the at-the-money straddle (buying the call and the put at the strike closest to the current price):

\[\text{Implied Move} = (\text{Call Price} + \text{Put Price}) / \text{Stock Price}\] \[\text{Expected Range} = \text{Stock Price}\; \text{±} \;\text{Straddle Price}\]

The straddle pays the absolute move, so its price is the market’s expected size of the move, regardless of direction. With around_earnings=True the first expiry after the next earnings date is used, which gives the move the market prices for the earnings announcement (an expiry on the announcement day itself settles at that day’s close, before the usual after-the-close announcement).

Also known as: expected move, straddle move, earnings move, implied earnings move.

Implied Move in Python

Install the Finance Toolkit with:

pip install financetoolkit -U

Then call get_implied_move as shown below.

from financetoolkit import Toolkit

toolkit = Toolkit(["AAPL", "NVDA"], api_key="FINANCIAL_MODELING_PREP_KEY")

toolkit.options.get_implied_move(around_earnings=True)

Which returns:

  Earnings Date Days to Expiration Straddle Strike Straddle Price Implied Move Lower Price Upper Price
(‘AAPL’, ‘2026-11-06’) 2026-11-02 13 350 16.85 0.0485 330.88 364.58
(‘NVDA’, ‘2026-11-20’) 2026-11-18 27 210 20.5 0.0972 190.46 231.46

Parameters

get_implied_move accepts the following parameters.

ParameterTypeDescriptionExample
expiration_dateslist[str] | NoneThe expiries to use. Defaults to None, the nearest number_of_expirations expiries.["2027-12-17", "2028-01-21"]
number_of_expirationsintThe number of nearest expiries to use when no dates are given. Defaults to 4.4
around_earningsboolWhether to use the first expiry after the next earnings date instead. Defaults to False.False
roundingint | NoneThe number of decimals to round the results to. Defaults to None, which uses the Toolkit’s rounding.2
Share