Open interest · does the majority guess the direction?

When there are more calls than puts — or more than usual — does the price then go up, and when puts lead, down? Two sources. OCC, the clearing house, publishes the open interest of the whole US market every day (2021 on): how many calls and puts are open. For single tickers no history of open interest exists, and it cannot be counted from trades: a trade does not say whether a position opens or closes. So for QQQ, SPY, IWM, TSLA and NVDA the page uses the daily volume of their options instead (Massive, every trade of the near-the-money contracts up to 45 days), and from 5 October 2026 it collects OCC open interest by strike every day for a later test.

Sessions: 01 Oct 2020 — 16 Oct 2026 · built 17 Oct 2026.

By year

Following the signal

Most stable variants of this source

Every signal

Open interest by strike (OCC), collected every day

OCC keeps no history of open interest by strike, so the page stores it every morning from the positions of 2 October 2026. When about sixty sessions are collected, the same test can be run on the open interest of each ticker.

How it is calculated
  • Open interest of the market. OCC “Daily Open Interest”: open calls and puts of equity options (stocks and ETFs) and of index options at the end of each session, from January 2021. OCC publishes a session’s figures the next morning.
  • Option volume of a ticker. Massive day bars of every standard contract of the ticker with a strike within ±15% of its unadjusted closes over the 45 days before its expiry, over those 45 days: the contracts traded each session, split by days to expiry (0, 1–7, 8–45) and by the strike against that session’s close (out of or in the money). Far strikes and longer options are left out. Volume from October 2020.
  • Signals. “More calls than puts”: calls / puts above 1 + the threshold bets on a rise, below 1 / (1 + threshold) on a fall. “Above their usual”: the logarithm of calls / puts against its mean and spread over the previous 20, 60 or 120 sessions (a z-score); above +threshold bets on a rise, below −threshold on a fall. “Added in a day” (open interest only): calls added minus puts added that session, as a z-score the same way.
  • A bet and a hit. The signal of a session is known that evening (volume) or the next morning (open interest); the bet starts at the next session’s open (adjusted prices) and is judged at the close 1, 5, 10 or 20 sessions on. A hit is a move of the bet’s sign. “By chance” is what bets with the same share of “up” would hit at random: q·p + (1 − q)(1 − p), q — the share of up bets, p — the share of rises. A hit rate below it means the signal works the other way round.
  • Separate windows. Over 5–20 sessions neighbouring bets share most of their days, so they are not independent. The “separate windows” count only bets that start after the previous one has ended; their z-score says how far the hit rate is from chance in standard errors (|z| ≥ 2 is rarely chance, but the page tests many variants).
  • Best variant. Among the variants of the chosen source and ticker: first those whose separate windows are at least 2 standard errors from chance, and of them the one whose worst year (at least 60 bets, at least 4 such years) is best in its own direction — guessing or guessing the other way round; a signal betting the same way in over 95% of its bets is left out. The page opens on the variant ranked first over all sources. It is picked on the same years it is shown on.
  • Reproduction. scripts/collect_open_interest.py market | series | prices | volume, scripts/build_open_interest_page.py; the timer pogosov-open-interest runs them every morning and evening (New York).