Put-Call Ratio
Calculate the put-call ratio of every expiry, by volume and by open interest. The ratio is the number of puts divided by the number of calls: a ratio above one means more puts are traded or held than calls, which is usually read as hedging demand or bearish sentiment, and an unusually low ratio as complacency. The volume ratio reflects today’s trading; the open interest ratio the positions that remain.
Also known as: PCR, put/call ratio, options sentiment.
Put-Call Ratio in Python or via the MCP
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_put_call_ratio as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(["AAPL", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")
toolkit.options.get_put_call_ratio(number_of_expirations=3)
Or, after setting up the Finance Toolkit MCP, ask:
What are the put-call ratios of volume and open interest of Apple and Tesla options for their next three expirations?
Which returns:
| Days to Expiration | Call Volume | Put Volume | Volume Put-Call Ratio | Call Open Interest | Put Open Interest | Open Interest Put-Call Ratio | |
|---|---|---|---|---|---|---|---|
| (‘AAPL’, ‘2026-10-26’) | 2 | 90053 | 85187 | 0.946 | 14688 | 22097 | 1.5044 |
| (‘AAPL’, ‘2026-10-28’) | 4 | 27330 | 21152 | 0.7739 | 17505 | 10137 | 0.5791 |
| (‘AAPL’, ‘2026-10-30’) | 6 | 76540 | 134401 | 1.756 | 81432 | 86739 | 1.0652 |
| (‘AAPL’, ‘All’) | nan | 193923 | 240740 | 1.2414 | 113625 | 118973 | 1.0471 |
| (‘TSLA’, ‘2026-10-26’) | 2 | 149535 | 129459 | 0.8657 | 68890 | 34714 | 0.5039 |
| (‘TSLA’, ‘2026-10-28’) | 4 | 32602 | 24491 | 0.7512 | 14542 | 15028 | 1.0334 |
| (‘TSLA’, ‘2026-10-30’) | 6 | 121542 | 101610 | 0.836 | 104417 | 97818 | 0.9368 |
| (‘TSLA’, ‘All’) | nan | 303679 | 255560 | 0.8415 | 187849 | 147560 | 0.7855 |
Parameters
get_put_call_ratio accepts the following parameters.
| Parameter | Type | Description | Example |
|---|---|---|---|
expiration_dates | list[str] | None | The expiries to use. Defaults to None, the nearest number_of_expirations expiries. | ["2027-12-17", "2028-01-21"] |
number_of_expirations | int | The number of nearest expiries to use when no dates are given. Defaults to 6. | 4 |
rounding | int | None | The number of decimals to round the results to. Defaults to None, which uses the Toolkit’s rounding. | 2 |