Options Analysis Suite
Options analytics
- Category
- Finance
- Primary Subcategory
- Options Analysis & Calculators
Integration details
Description
Options Analysis Suite lets users research options markets and review their synced analysis data in ChatGPT. It supports implied volatility, Greeks, options chains, gamma exposure and regime analysis, FINRA and SEC market-structure data, company fundamentals, pricing-analysis history, FFT scanner results, AI Compute Suite runs, and portfolio and risk snapshots. All tools are read-only and return analyst-oriented summaries for research workflows.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Options Analysis & Calculators
- Secondary Subcategories
- None listed
- Access
- Account required
- First tracked
- 2026-06-09
- Tool count
- 38
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Get alerts for Options Analysis Suite
Get updates when Options Analysis Suite’s Discoverability Score or category rank changes.
ChatGPT Plugin Discovery Score
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Competing in ChatGPT Options Analysis & Calculators
View Category38 tools agents can invoke
Get the user's AI Compute Suite run history — portfolio-wide batch analyses across multiple pricing models. Default response returns compact run summaries, model-dispersion highlights, exposure levels, and representative position/model consensus summaries. Use view='detailed' to inspect per-model outputs for one matched run; detailed view only takes effect when exactly one run matches, and multi-run responses are always summarized.
get_compute_runs
Get the user's synced snapshot history by type. Each type serves a different question: • type="gex" — per-symbol Gamma Exposure snapshots. REQUIRED: `symbol`. Returns the 3 most recent snapshots (no dedupe — rows may be near-duplicates if recorded back-to-back). Includes per-expiration breakdown, call/put walls, gamma flip point, gamma magnet, unusual activity, expected move data, and raw vs in-wall visible combo-strike counts. • type="portfolio" — account-wide portfolio snapshots with market-scaled raw Greeks (no $): first-order delta, gamma, theta/day, vega/1% IV, rho/1% rate; second-order vanna/1% IV, charm/day (delta decay), vomma/1% IV², veta/day (vega decay, sign-flipped for market convention). Default view collapses consecutive identical snapshots to surface the latest distinct states. For $-impact views of the same Greeks, use type="risk". • type="risk" — account-wide risk-analysis snapshots: Value-at-Risk (95%/99%), Conditional VaR, portfolio beta, Sharpe ratio, maximum drawdown, volatility, stress test results, and aggregate Greek $-impact exposure. $-Greeks include first-order dollarDelta, dollarGamma (per 1% move), dollarTheta/day, dollarVega (per 1% IV), dollarRho (per 1% rate) and second-order dollarVanna (per 1% IV move), dollarCharm (daily $Δ decay), dollarVomma (per 1% IV), dollarVeta (daily vega decay). Units & sign convention: var95/var99/cvar95/maxDrawdown/volatility are in PERCENT (e.g., 2.5 = 2.5%); volatility is annualized; var95/var99/cvar95/maxDrawdown are POSITIVE loss magnitudes (e.g., var95=2.5 means a 2.5% loss). beta/sharpeRatio are dimensionless. stressResults[].impact is signed $ P&L; impactPercent is signed % of portfolio. details.historicalVarDetails: worstDay is POSITIVE magnitude of the worst single-day LOSS (worstDay=13.46 means a 13.46% loss, NOT a 13.46% gain); bestDay and avgReturn are SIGNED percent returns. Default view collapses consecutive identical snapshots. For raw-unit Greeks, use type="portfolio".
get_snapshot
Get Schedule 13D/13G beneficial-ownership filings for a symbol. Default response prioritizes the latest above-threshold holder snapshot per filer and summarizes below-threshold amendments separately so current holders stay visible.
get_activist_filings
Get the user's options pricing analysis history — past calculations run in the platform. Each result includes the model used (Black-Scholes, Heston, SABR, etc.), input parameters (spot, strike, volatility, DTE), computed option price, and Greeks. Includes calibration data and model-specific sensitivities when available. Default view collapses near-identical reruns from the same pricing sweep.
get_analysis_history
Get pre-computed daily or weekly aggregates of the user's analysis activity per symbol. Default response returns compact rollup rows plus a cross-period summary of volatility, spot, and model usage trends.
get_analysis_rollups
Get Wall Street analyst ratings, price targets, and consensus estimates for a symbol. Default response keeps the nearest forward estimate periods, price-target summaries, rating snapshot, summarized rating-history streaks, and recent rating changes.
get_analyst_data
Price a European option with Black-Scholes from explicit inputs and return the price, all seventeen Greeks, the expected move and the risk-neutral probability of finishing in the money. Greeks are published in the same convention as the commercial API (`greekConvention: "dapi"`): vega, rho, epsilon and phi per 1 percentage point; theta, charm, color and dcharmDvol per day; veta per percentage point per day; vanna, vomma, zomma and ultima per unit of volatility; delta, gamma, speed and lambda unscaled. The expected move is an at-the-money straddle scaled by 0.85, independent of the strike priced. The probability is N(d2) under the pricing measure, not a real-world probability. Supply exactly one of `t` (years) or `daysToExpiry`. Supply `r` and `q`, or a `symbol` so they are read from stored market data for the option's own tenor; they are never defaulted, and a symbol whose rate or yield cannot be resolved is refused with the reason. Volatility is a decimal (0.25 for 25%). Requires a Pro subscription or above. For the other pricing models, calibration and multi-model runs use the REST API or Python SDK; this tool is Black-Scholes only.
compute_black_scholes
Get company profile data for a symbol with a compact normalized default view. Returns sector, industry, market cap, float metrics, key identifiers, and a trimmed business description.
get_company_profile
Get FINRA OTC (dark pool / non-ATS) and ATS (Alternative Trading System) weekly trading statistics for a symbol. The `view` param controls the granularity: • view="summary" (default) — aggregate weekly OTC + ATS volume/trade trends with a compact summary + trend analysis. • view="dealers" — per-DEALER breakdown of OTC (non-ATS) activity. Top 15 MPIDs per week with participant name, shares, and trades. Answers "who is executing this flow off-exchange, off-ATS?" • view="venues" — per-VENUE breakdown of ATS activity. Top 15 dark-pool venues per week with MPID, venue name, shares, and trades. Answers "which dark pools are matching this ticker?" • view="all" — returns summary + dealers + venues in one payload. Larger — expect more token usage. Optional: `weeks` (1..260, default 12) narrows the history window for dealers/venues/all. High dark-pool activity can signal institutional accumulation or distribution; per-dealer and per-venue views surface who specifically is active.
get_dark_pool_data
Get per-symbol dividend history synced into the platform. Useful for checking dividend cadence, recent ex-dates, and cash amounts when evaluating carry, assignment risk, or discrete-dividend assumptions.
get_dividends
Get END-OF-DAY dealer positioning for a symbol from the most recent session on file, over the 0-60 day expiration window: net GEX and DEX, the dealer regime, the gamma flip, the call wall and put wall (the call wall is the strike with the largest positive call gamma and the put wall the strike with the most negative put gamma (ties go to the lower strike; a side with no such strike leaves that wall null), and nothing orders them, so the put wall can sit above the call wall), the gamma magnet (largest absolute gamma strike), the 30-day expected move (as a decimal fraction of spot, and in dollars), and the top contributing strikes. Covers roughly 5,500 listed equities and ETFs. Positive net gamma means dealers hedge against moves and dampen them; negative means they hedge with moves and amplify them. `dealerRegime` is the sign of the 0-60 day net gamma interpolated at spot between the two strikes that bracket it (the nearest strike's gamma when spot is outside the strike range), not the sign of `netGex` and not which side of `gammaFlip` spot sits on; it can disagree with both (SPY on 2026-09-17: netGex -5.5 billion, spot 763.01 below the flip 764.97, regime positive), and only with fewer than two gamma-bearing strikes in that window is it the sign of `netGex` itself. The gamma flip here is a coarse-grid level from the stored snapshot with no search status or resolution; for the flip as of NOW, repriced from a live chain with its search status, use get_live_dealer_positioning (Pro and above), which is a different claim and is never substituted here. Pass `date` for a past session; omit it for the most recent on file. `date` in the result is the session it describes and is authoritative; do not present it as today's close. `date` is accepted from 1990-01-01 to one day past the current UTC date, the proxy's window, which moves forward with the date; a later weekday date is rejected as INVALID_REQUEST until the window reaches it, marked retryable with the UTC day it can be asked for from, and a later weekend date keeps the rejection as final, since it is never a session. The equity import is scheduled for 01:00 US Eastern the next day and usually lands about 02:30, so in the evening the most recent on file is usually the previous session, and it can be older when an import is late. A not-found for a weekday date inside that window is not final until 09:30 US Eastern on the following calendar day, and is marked retryable until then. That cutoff is this tool's, not a deadline of the producer's, which has none: the import is scheduled for 01:00 US Eastern, retried in half-hour steps to about 06:00, and runs later when it has days to catch up. If that date is a trading session its file usually lands about 02:30 US Eastern the next day (02:31 to 02:34 for every session from 2026-09-08 to 09-17), so before then it is usually not on file yet; a market holiday, a futures contract or a name with no near-term options stays not-found, and this tool cannot tell those apart from the date alone. After the cutoff the response is the proxy's answer for any absent row and says retrying will not succeed; that is the proxy's flag for a row absent on the normal schedule, not a promise that the file can never arrive: a session whose import or exposure computation failed can appear after a later successful import or repair, and nothing here says whether one is coming. Max pain is not here; it is in get_options_snapshot. A symbol with no exposure summary (a futures contract, or a session with no near-term options) reports not-found rather than a neutral regime. `sincePriorSession` compares this session with the one before it on file, from the same stored end-of-day computation over the same 0-60 day window: `prior` holds that session's levels, `change` this session minus that one (null where either is missing), and `dealerRegimeChanged` whether the regime differs. `sessionsSkipped` counts the NYSE sessions between `priorDate` and `date`, none of which has a summary on file: 0 means no session falls between the two, and more means the change spans that many more sessions. Both flips are found on a grid of 60 prices within 20% of each session's spot, about 0.68% of spot apart and re-centred every session, so a flip change smaller than that step can come from the grid rather than the market. `status` is "none-on-file" when no earlier session has a summary and "unavailable" when it could not be read, and this session's values are unaffected either way. It is a close-to-close change on file, not a change to now: the live book comes from get_live_dealer_positioning, over a different window and computation, and differencing the two is not a change. Distinct from get_regime with scope="symbol", which reports the daily regime classification and its authoritative Greek exposures.
get_dealer_positioning
Get the end-of-day options snapshot for a symbol: spot, max pain, net GEX and DEX, the ATM IV term structure (7/30/90 day), IV rank and percentile, historical vol, put-call ratio, volume and open interest. Pass several comma-separated symbols (up to 50) to compare their headline metrics in ONE request instead of calling this repeatedly. This is platform data for any symbol - use get_snapshot instead for the GEX, portfolio and risk snapshots synced from the user's own browser session, which is a different dataset. Set `curves` to summarize the per-strike payloads: the max-pain curve with its true minimum, per-strike GEX or DEX with totals, or the volatility skew. Curves are omitted by default because they are large. The net GEX and DEX here are over ALL expirations on file; get_dealer_positioning reports the 0-60 day window, so the two differ for the same session and neither is wrong. `chainExpiry` is the nearest expiration on file, the same-day one included. `analyticsExpiry` is the expiration max pain and the probability analytics are computed on: the monthly nearest to 30 days out among those at least 7 days out, a non-monthly nearest to 30 days out when no monthly is that far out, and the first listed expiration when nothing is (so on 2026-09-16 with 09-18 and 10-16 listed it is 10-16, and with only 09-18 listed it is 09-18, two days out). Data is end-of-day from the most recent session on file, not intraday. `date` in the result is the session it describes and is authoritative: the equity import usually lands in the early hours US Eastern, so in the evening the most recent on file is usually the previous session, and it can be older when an import is late; futures snapshots are written at the close and can already be the current day's. Use get_live_options_chain for live prices. Any symbol the platform holds an options snapshot for, futures contracts with listed options included. A symbol it holds only a price row for reports that rather than returning empty metrics.
get_options_snapshot
Get earnings history and estimates for a company. Returns actual EPS, estimates, revenue, and surprise percentages. Earnings events are the largest source of overnight gap risk for options — check if an upcoming earnings date falls within an option's expiration window. Shows last 8 quarters by default.
get_earnings
Get the user's FFT (Fast Fourier Transform) scanner results — characteristic function-based option pricing signals across multiple models and expirations. Shows which models detected opportunities, calibration quality, and pricing anomalies.
get_fft_results
Get FINRA short-side data for a symbol. Two related but distinct series: • type="volume" — DAILY short-volume activity. Compact summary-first view (latest day + trailing averages + recent-trend flag) by default. • type="interest" — BIWEEKLY short-interest settlement reports (position-based, not flow-based). Compact summary-first view (latest settlement + trailing averages + rising/falling trend) by default. Short-percent-of-float is enriched from the company profile when the FINRA feed omits it. Symbol is required for both.
get_short_data
Get SEC Failure-to-Deliver (FTD) data for a symbol. Default response returns a compact summary with recent history, notable spikes, and threshold overlap. Default window is 180 days because SEC FTD publication lags by about 21 days.
get_fail_to_deliver
Get company fundamentals: market cap, P/E ratio, EPS, revenue, profit margins, dividend yield, beta, sector, and industry. Useful for assessing whether an options strategy aligns with the fundamental picture. Default response returns compact company metadata, curated TTM ratios/key metrics, and one summarized recent statement entry per financial statement.
get_fundamentals
Get historical options Greeks (delta, gamma, theta, vega) for a symbol. Shows how sensitivity profiles and dealer hedging pressure have shifted over time. Large windows return a compact recent/trend summary by default. Where the answer carries provenance, fetchedAt is the close (16:00 New York) of the newest session in it, the time the data describes, not when it was imported; receivedAt is when the proxy answered.
get_greeks_history
Get historical implied volatility (IV) and historical volatility (HV) for a stock or ETF. Shows how option-implied expected moves and realized moves have evolved. High IV relative to HV suggests options are expensive; low IV relative to HV suggests options are cheap. Large windows return a compact recent/trend summary by default. Where the answer carries provenance, fetchedAt is the close (16:00 New York) of the newest session in it, the time the data describes, not when it was imported; receivedAt is when the proxy answered.
get_iv_history
Get the IV surface/skew across strikes and expirations for a symbol. End-of-day data from the most recent session on file by default; `date` in the result is the session it describes and is authoritative (the equity import usually lands in the early hours US Eastern, so in the evening this is usually the previous session, and it can be older when an import is late). Set `date` to read a specific session, as get_options_chain does; for a symbol whose ticker has changed (FB to META), a date before the change reads the history under the ticker of that day here and the requested ticker's rows in get_options_chain, so the two need not agree there; a date with no file for the symbol (a weekend, a holiday, a day the import missed) is an error, not the nearest session. Default response returns a compact term-structure and smile summary over six expirations sampled across the curve: one per tenor bucket first, then the earliest remaining up to six, the same rule get_options_chain uses; `expirationCount` and `rowCount` count every expiration and row in the file, the skipped same-day one included. The expiry that ended that session (zero days to expiry) is skipped whenever a later one exists, because at zero time its wings and its smoothed IV are not a surface; `surfaceMeta.sameDaySkipped` says when that happened. Per node, `iv` is the first usable value, in order, of the smoothed surface value, the call mid IV and the put mid IV; `putIV` and `callIV` are the mid implied volatilities of each side, each null where the stored value is outside the usable band (finite, above 0, at most 5, that is 500%), so a stored 0 or 10 reads as absent; `ivSource` beside each `iv` (and `atmIvSource` on the term-structure and skew rows) says which of the three it is: "smoothed", "call-mid", "put-mid", or null. The band rejects stored sentinels, not noise: on a thin name a side mid IV can be in band beside a quote with no bid and disagree severalfold with the next strike, and the stored smoothed value can be one number across every strike of an expiration, which is the stored surface, not a rounding. IVs are rounded to four decimals (the stored smoothed value carries three, so it shows three). `skewSummary[].putCallSkew` is the put-wing mid IV at the strike nearest 95% of spot among strikes below the ATM strike, minus the call-wing mid IV at the strike nearest 105% of spot among strikes above it (the ATM strike, the one nearest spot, is never a wing; ties go to the lower strike); `putRelativeStrike` and `callRelativeStrike` on each skew row say how far from spot each wing actually sits, which on a coarse strike grid can be 76% and 114%. It is null when either wing's mid IV is unusable, and an expiration with no strike beyond the ATM on one side has no skew row at all; `putCallSkewBasis` says so beside it; it is NOT the same measure as get_options_chain's `putCallSkew`, which is 25-delta wings, and the two can differ severalfold on one expiration. Nothing stands in for an absent side. The smoothed value can sit outside both sides, near expiry and on a thin name at any tenor; that is the smoothing, not an error. Set `full` for the whole grid.
get_iv_surface
Get insider trading activity for a company. Default response focuses on economically meaningful open-market buys and sells, groups repeated filing rows into event-level summaries, and summarizes awards/exercises/tax withholding separately.
get_insider_trading
Get LIVE dealer positioning for a symbol, computed in real time from the broker credential stored on your Options Analysis Suite account. Returns net GEX and DEX plus net vega, vanna, charm and vomma; the gamma flip (the repriced regime-change level), the call wall and put wall (the gamma levels that act as resistance and support), a gamma magnet, gamma concentration, a dealer regime of positive or negative gamma, and per-strike gamma and delta contributions around spot. Positive net gamma means dealers hedge against moves and dampen them; negative means they hedge with moves and amplify them. The gamma flip is found by repricing the book across a range of spot levels. `coverage.gammaFlipMethod` says how: "repriced" recomputed gamma from implied volatility for every leg; "frozen-gamma" means no leg had a usable IV, so every published gamma was held constant across the sweep; "mixed" means some legs were repriced and the rest held constant. A held gamma is an approximation that can materially move the level or create one where there was none, and a usable IV is finite, above 0 and at most 5 (500%): a broker-published IV of 0 or above that band counts as absent. Say which method was used when quoting the level. The gamma-flip search samples prices within 20% of spot. A pair of crossings within one sampling interval can be missed; no detected flip does not prove that no crossing exists within or beyond that range. `coverage.gammaFlipResolution` is the local sampling bracket width where the flip was found, not a confidence interval or an error bound. The reported flip is the nearest crossing detected by that search, and the resolution is null when no level is reported. `coverage.gammaFlipSearchStatus` describes the search on supported legs: "found" detected a crossing, "not-found" detected none in the sampled range, and "unresolved" means numerical signs or crossing order could not be established reliably. An unresolved null gives no conclusion about whether a crossing exists; a null status means the response did not report a recognized search status. Computed over the nearest four expirations of the live chain, so it reflects the current session rather than the most recent session on file. Outside trading hours the quotes are the broker's last, but time to expiry is measured from the wall clock when the chain rows are built, moments before `asOf`, so the repriced flip and the time-sensitive totals drift a little between calls with no new quotes; that is the clock, not the market. Metric coverage and statuses distinguish complete, partial, unmeasured, empty and unknown results. Partial values sum only supported option legs; they are not measurements of the whole book. Unmeasured or unknown values are null. Gamma-derived levels require complete coverage. `coverage.gammaFlip` counts every leg that entered the sweep, repriced or held, so it can read complete while `gammaFlipMethod` is "mixed"; the method, not the count, says whether those legs were repriced, held, or both. EXPENSIVE: each call is charged five weighted units against the 10-unit-per-minute live-broker limit, so at most two calls a minute. A cold request reads the expirations list and up to four chains; actual upstream request counts vary with the provider and cache state. Do not call it in a loop or for a list of symbols. The risk-free rate and dividend yield are resolved from real market data and never defaulted, because the gamma flip is a repricing that depends on them; `resolved` reports what was used. Requires a Pro subscription or above and a broker connected under Account -> Broker. For the most recent session on file's positioning over 0-60 days, free and without a broker, use get_dealer_positioning; its gamma flip is a coarse-grid level and is a different claim from the repriced one here.
get_live_dealer_positioning
Get a LIVE options chain for one expiration, fetched in real time from the broker credential stored on your Options Analysis Suite account. This is the only tool that returns intraday option-chain prices; every other option-chain tool returns end-of-day prices from the most recent session on file. get_regime with scope="intraday" provides intraday exposure, not chain prices. Requires a Pro subscription or above and a broker connected under Account -> Broker. Returns near-the-money strikes, the ATM pair, 25-delta wings and whole-chain volume/open-interest totals. A null field means the broker published nothing for it, which is different from zero. `mid` is null unless there is a two-sided market; `mark` is the broker's own valuation, not an executable quote. `iv` is the broker's published implied volatility where it is usable (finite, above 0 and at most 5, that is 500%); a published 0 or a value above that band is a solver sentinel, not a volatility (brokers emit them for deep in-the-money contracts near expiration and after the close), and is reported as null and counted in totals.<side>.contractsWithoutUsableIv. The delta and the quote beside it are still the broker's and are kept. The Greeks are the broker's as published and are not checked against the quote or the IV beside them. A delta of exactly 0 or 1 can be a genuine limit deep in or out of the money, and it can be the broker's solver (a 755 put quoted 0.63 with iv 0.164 carried delta 0); this tool applies no check that tells the two apart, so treat such a delta as suspect and read it with the quote and IV beside it. `asOf` is when the chain was FETCHED, not a quote time: outside regular trading hours the quotes are the last ones the broker holds, a bid can sit below intrinsic value, and this tool does not date the quotes individually. Omit `expiration` for the front month; an unlisted expiration returns the available dates. Rate limited to 10 requests per minute because each call spends your own broker quota. A repeat for the same symbol and expiration within 15 seconds is answered from a short cache, with the same `asOf`, and still counts as a request. There is no end-of-day fallback: if the broker cannot answer, this reports the failure and whether retrying can help.
get_live_options_chain
Get market calendar events by type. Each type has its own default date window, shaping, and optional filters: • type="economic" - upcoming macro events (FOMC, CPI, NFP, GDP, etc.) that move options vol. Default from=today, to=30d ahead, with a maximum 90-day date range. Supports country (e.g. US, EU, UK). The default view focuses on higher-signal catalysts. • type="ipo" - upcoming and recent public listings. Default from=30d ago, to=60d ahead, limit=50. Optional symbol filter applied after fetch. • type="dividend" - cash dividend events (ex-date, record date, payment date). Default from=7d ago, to=30d ahead, limit=100. Optional symbol filter. • type="split" - stock splits (ratios + dates). Default from=30d ago, to=60d ahead, limit=100. Optional symbol filter. Irrelevant sub-params are ignored (e.g. country on type=ipo, full on type=dividend).
get_market_calendar
Get regime data at one of three scopes. Pick the scope that matches the question; irrelevant sub-params are ignored. • scope="market" — MARKET COMPOSITE stress regime (aggregate across SPY/QQQ/IWM/DIA, not per-symbol). Returns composite stress score, confidence, key drivers, feature z-scores. The label's entry and exit levels are below. Accepts `date` (YYYY-MM-DD, default latest) and `include_symbols` (default false; true also returns up to the top 8 symbols per classification tier sorted by absolute stress score, with raw vector internals stripped). • scope="symbol" — per-symbol daily regime + authoritative Greek exposures (net gamma/delta/vega/vanna/charm/vomma, call wall, put wall, gamma flip, gamma magnet (`exposures.gammaMagnet`, the strike with the largest absolute net gamma, named as on get_dealer_positioning and get_live_dealer_positioning), top 10 gamma strikes). REQUIRED: `symbol`. Accepts `days` (default 1 = latest, max 30) and `full` (default false; true keeps less-summarized history with vector internals stripped). This is the correct scope for "what are SPY's Greek exposures?" — do NOT use get_options_analytics_history for current exposures. • scope="intraday" — intraday regime scan history for a symbol: 5 scans/day (open, morning, midday, afternoon, pre-close), each with stress scoring, regime classification, and compact Greek exposure snapshots. REQUIRED: `symbol`. Accepts `days` (calendar days back from the current UTC date, cutoff day included, so N spans N+1 dates: 2 on 2026-09-18 returned 09-16, 09-17 and 09-18; default 5, max 90), `date` (overrides days), and `interval` (filter to a single scan). Scans come newest date first and, within a date, by scan time ascending (not by interval: a rerun scan sits after the ones before it), so the newest scan is the last entry of the first date; `scansMeta.order` says so. `scanTime` is the run's start; each symbol's row lands when its own calibration finishes, minutes later for a slow name, so a scan can be absent for a while after its stamp. A scan stored since the producer began recording it carries `priorLabel`, the label its hysteresis was judged against (null when it had none), and `priorLabelSource`, "earlier scan" or "daily label" (null with no prior); older scans carry neither. On every scope, `stressScore` is a raw composite regime score, not a 0-100 index, and `label` is a state with hysteresis, not a band read off the score. Entry levels: NORMAL -0.5, ELEVATED 0.5, STRESS 1.5, CRISIS 2.5, and CALM below -0.5 with no prior; exit levels: NORMAL -1.0, ELEVATED 0.0, STRESS 1.0, CRISIS 2.0. Against the prior label the producer had (for the daily symbol and market scopes, the latest earlier daily label stored for the same symbol, symbol tier and model version; for an intraday scan, the previous scan of the day while the scan worker still holds it, else that same daily label; the worker's store of the day's scans is a file on its disk that a redeploy between two scans wipes, so the scan after one takes the daily label (SPY's 2026-09-17 midday scan, ELEVATED at 0.5987 with confidence 0.9414, was judged against the 2026-09-16 daily label ELEVATED, not the morning scan's NORMAL)), a score reaching a higher state's entry level moves the label up; otherwise the label is kept until the score falls below its exit level, and then it drops to the highest lower state whose entry level it still meets. Without a usable prior label, including when the prior could not be read, the label is the highest state whose entry level the score meets. So a score inside one band can carry the label above it: SPY's 2026-09-18 midday scan, 0.4229, is ELEVATED because the day's open scan took the 2026-09-17 daily label, ELEVATED at 0.506, and no scan since fell below 0.0. `stressScoreNote` on every response carries the short form of this rule. Feature z-scores are winsorized to -5..5, so no |z| exceeds 5 and a value at that edge may have been clipped. On the market scope, the composite's own `market.drivers` carry a `contribution` of weight times |z|, unsigned and sorted by size, so that column does not sum to `stressScore` (apply the sign of `z` to each); every other driver list, the per-symbol breakdown under `include_symbols` included, and the symbol and intraday scopes, carries weight times z, signed. The daily scan's call wall, put wall, gamma flip, gamma magnet and regime use the 0-60 day window, like get_dealer_positioning's, but the scan takes its own rate and dividend inputs (a tenor-weighted FRED rate and an estimated yield, against the snapshot's median rate and yield from the options data), so its gamma flip differs from get_dealer_positioning's for the same session (SPY 2026-09-17: 765.14 here, 764.97 there), and its `topStrikes` are over the whole book, so per-strike values differ too. On every scope the call wall is the strike with the largest positive call gamma and the put wall the strike with the most negative put gamma (ties go to the lower strike; a side with no such strike leaves that wall null), and nothing orders them, so the put wall can sit above the call wall (KBE on 2026-09-17: call wall 66, put wall 68, spot 66.77). A null `exposures.gammaFlip` on any entry means the producer's coarse-grid sweep within 20% of spot found no zero crossing, or its profile was zero at every sampled price, or no open interest sat within its window, or the stored spot was not a positive number; it is not a level of zero. `confidence` (0 to 1) says how secure the label is, not how severe the regime: how deep the score sits inside its band, whose lower edge is the label's exit level when the label was kept and its entry level otherwise (just entered from either direction, or no usable prior), and whose upper edge is the next state's entry level, or the previous label's exit level when it was just entered from above (CALM and CRISIS measure from their one edge over 1.5), as d, the distance to the nearer edge over half the band, through (1 - e^(-2.5 d)) / (1 - e^(-2.5)) (SPY's 2026-09-17 morning scan, 0.0138 NORMAL after the open's STRESS: band -0.5 to 1.0, 0.8929, times 0.85 for the change, 0.759); times the share of calibration models that succeeded raised to the power 1.5; times 0.85 when the label differs from its prior or had none; for the market composite's own `confidence` the share is symbols scored over symbols in the composite, and the rows of the `include_symbols` breakdown keep model coverage. `modelCoverage` {succeeded, attempted} on every symbol and intraday entry is that share's numerator and denominator (KBE 2026-09-17: 2 of 8, so 0.25 to the 1.5 caps its confidence at 0.125); the composite stores no such counts. The prior label a row was judged against is not stored for daily rows or for intraday scans stored before the producer began recording it, so those entries do not say whether their label was kept or which prior they took (newer intraday scans carry `priorLabel` and `priorLabelSource`), and on the symbol and intraday scopes confidence is computed from the unrounded score, so a recomputation from the four-decimal `stressScore` can differ in the last digit (the 2026-09-18 open scan, 1.3496, recomputes to 0.4295 against the stored 0.4296); the market composite rounds its score before computing confidence, so no such gap arises there. `exposuresNote` on the symbol, intraday and include_symbols shapes says which fields are over the 0-60 day window and which over the whole exposure input (the breakdown's rows carry no topStrikes, and their note names none). The symbol history past one day runs oldest first; `historyMeta.order` says so. `exposures.regime` on any entry is the sign of the 0-60 day net gamma interpolated at spot between the two strikes that bracket it (the nearest strike's gamma when spot is outside the strike range), not the sign of `exposures.netGamma` and not which side of the gamma flip spot sits on; it can disagree with both (SPY's 2026-09-17 afternoon scan: netGamma -7.9 billion, regime positive), and only with fewer than two gamma-bearing strikes in that window is it the sign of `exposures.netGamma` itself. That field is the net gamma of the whole exposure input with no 60-day cutoff: every stored row for the daily scan; for the intraday scan, only the rows its normalizer retains from the broker chain, which drops the same-day expiration, every leg with a zero bid, no Greeks or no mid implied volatility, and every strike without a usable delta, and an expiration whose chain fetch failed is absent altogether.
get_regime
Get the calibrated parameters and fit quality for the eight pricing models (Black-Scholes, Heston, SABR, Variance Gamma, Merton, Kou, Bates, eSSVI) for one symbol. Answers "what parameters were fitted, and how well did each model fit" - use get_regime instead for which market regime a symbol is in, which is a different question and a different dataset. Returns each model's latest parameters with its IV RMSE, and a price RMSE for every model except eSSVI, which is fitted on the implied-volatility surface and stores none (priceRmse is null there by design, not a failed fit), plus a short error history showing whether the fit is stable. failedQualityCheck true means the fit was REJECTED: it did not converge, or fewer than three options could be repriced, or its error exceeded the threshold. Only the first substitutes the parameters; the other two leave a real fitted set that was then rejected. Either way the fit was not accepted, so do not present those parameters as a good fit for this symbol. Coverage is the regime universe of about 124 symbols; a symbol outside it returns an empty history rather than an error. Requires a Pro subscription or above.
get_regime_fits
Get recent news headlines for a stock. Useful for understanding catalysts behind price or volatility moves, and for assessing event risk before entering an options position. Default response relevance-ranks the latest raw feed against the company profile and suppresses filing-style ownership updates when stronger catalyst news is available.
get_news
Get daily end-of-day options analytics snapshots for a symbol - historical trend data going back years. Covers ATM IV, HV, IV rank/percentile, VWIV, skew, GEX/DEX/VEX, net vanna/charm/vomma, put/call ratio, max pain, the 30-day expected move (`expectedMove30dFraction`, a decimal fraction of spot: 0.018 = 1.8%), term structure, and risk-free rate. Best for trend analysis over time. For current authoritative Greek exposures and dealer-positioning levels like call wall, put wall, gamma flip, and gamma magnet, use get_regime with scope="symbol" instead. Up to 5000 days. Large windows return a compact recent/trend summary by default. The raw shape lists every row in the window oldest first; the summary keeps the newest `dataMeta.recent` rows in `data`, newest first, and `count` is the rows in the whole window, not in `data`; `dataMeta.order` on either shape says which way it runs; summary points are compact: twenty fields, IVs and ratios rounded to four decimals, prices to two, the slope and rate to five, exposures to whole numbers, and `latest`, `earliest` and `trendSample` are the same compact shape. Where the answer carries provenance, fetchedAt is the close (16:00 New York) of the newest session in it, the time the data describes, not when it was imported; receivedAt is when the proxy answered.
get_options_analytics_history
Get the end-of-day options chain snapshot from the most recent session on file by default. Default view summarizes expirations, ATM term structure, skew, and representative near-money contracts across the curve while avoiding same-day expiry noise when later expirations exist; set date to query a specific session. This data is end-of-day from the most recent session on file, NOT live; `date` in the result is the session it describes and is authoritative (the equity import usually lands in the early hours US Eastern, so in the evening this is usually the previous session, and it can be older when an import is late). Use get_live_options_chain instead whenever the answer needs to be current: an explicit ask for live, current or intraday prices, and equally any request for the quote, bid, ask or mark on a specific contract, which is a question about now even without those words. It fetches from the user's own connected broker, needs a Pro subscription or above, and says so plainly if they do not have one. Stay here for what the chain looked like at a past session, or to compare expirations. `expirations` and `nearAtmPairs` are a sample of up to six expirations across the curve, one per tenor bucket first and then the earliest remaining, skipping the expiry that ended that session whenever a later one exists; `expirationCount` counts every expiration in the file, that one included, and the near-money contract lists can draw on expirations outside the sample. `impliedVolatility` on a contract is the side's own mid IV where usable (finite, above 0, at most 5) and otherwise the smoothed surface value standing in, as the platform fills it; every IV here carries its source beside it (`ivSource` on a contract, `atmCallIvSource`, `atmPutIvSource`, `put25DeltaIvSource`, `call25DeltaIvSource` on an expiration: "mid", "smoothed", or null for no usable IV). "mid" names the side's stored mid IV column (the vendor's c_mid_iv or p_mid_iv), not the contract's `mid` price beside it, which is (bid + ask) / 2 of the stored quote and null when a side is unquoted, so a "mid" IV can sit beside a null `mid`. The band rejects stored sentinels, not noise: on a thin name a side mid IV can be in band beside a quote with no bid and disagree severalfold with the next strike. `putCallSkew` is the 25-delta put IV minus the 25-delta call IV only when both are side mids, otherwise null; `putCallSkewBasis` says so beside it, because get_iv_surface's `putCallSkew` is a different measure (the strikes nearest 95% and 105% of spot on either side of the ATM strike) and the two can differ severalfold on one expiration. `put25DeltaStrike`, `put25DeltaDelta`, `call25DeltaStrike` and `call25DeltaDelta` are the strike and delta of the contract each wing actually is: the out-of-the-money contract whose delta is nearest 0.25 in magnitude, however far from it that is, which on a coarse strike grid can be the ATM strike itself (a $5 stock with 50-cent strikes), and an in-the-money one when no out-of-the-money contract exists on that side. `atmAverageIv` is the mean of the ATM call and put IVs, or the one that is usable when the other is not, whatever their sources.
get_options_chain
Run one of the 16 options-market screeners (plus market-trends and an earnings-calendar view). Choose the screener via the `screener` enum; pass sub-params only for the screener that needs them. Irrelevant sub-params are ignored. • most-active / highest-oi / highest-iv / unusual / gex — main tabs. Use `view` (ticker|contract, default ticker). Support `index` (all|sp500|sp400|sp600|etf). Note: `index=etf` returns rows only in `view=contract`; ticker view's aggregator does not include ETF rows. For `unusual`, the `threshold` param's meaning depends on view: contract view = min volume/OI ratio (float, default 1.0); ticker view = min unusual-contract breadth count (integer, default 1). • dod-change — day-over-day leaderboards. Requires `metric` (gex|iv|put-call|skew|regime). Optional `direction` (up|down|all) for gex/iv/put-call. To get DoD skew or regime views, use dod-change with `metric=skew` or `metric=regime` — the `regime-stress` / `put-skew` screener ids always return the level leaderboard, never the change view. • vrp — volatility risk premium. Requires `side` (high|low). • max-pain — requires `mode` (pinning: spot near max pain + high gamma concentration; divergence: spot vs max pain in implied-move σ units). • unusual-directional — requires `side` (call|put). • market-trends — market-wide avg IV / volume / P/C time series. Optional `days` (passthrough to proxy; proxy default 365, capped at 730). For token-budget reasons, an LLM may want to pass a smaller `days` (e.g. 30–90). • earnings-calendar — upcoming earnings reports. Defaults to the next 14 days from today, matching the Morning Report window. Optional `symbol` to filter to a single ticker; optional `days` to widen/shorten the window (1..90). • Everything else takes only `limit`. Returns the raw proxy payload; shape varies by screener. Ranking endpoints typically return `{ data: Row[], currentDate, priorDate?, metric, ... }` where Row includes the ranking metric plus supporting fields (spotPrice, totalOi, atmIv30d, label/stress, etc.). Contract-view endpoints return per-contract rows. `market-trends` returns time-series aggregates. `earnings-calendar` returns a bare array of {symbol, date, time, ...} rows. See the per-screener column notes at optionsanalysissuite.com/screeners.
run_screener
Get background information about the Options Analysis Suite platform - the 17 available pricing models (10 vanilla + 7 exotic), the 17 Greeks computed across them, and platform capabilities. Call this when you need context about the platform to give better answers.
get_platform_info
Query your analysis history with filters. Find specific analyses by greek values, volatility ranges, or other criteria. For example: "analyses where delta > 0.7" or "all Heston runs with IV below 30%". Default view collapses near-identical reruns from the same pricing sweep so the results stay diverse and readable.
query_analysis
Get recent SEC EDGAR filings for a symbol. Useful for finding 10-K, 10-Q, 8-K, proxy, insider, offering, and activist filings with direct SEC URLs. Default response returns a compact filing list with dates, form types, descriptions, accession numbers, and filing links.
get_sec_filings
Get historical OHLCV price data for a stock or ETF with a compact trend summary plus the requested daily bars.
get_stock_prices
Get per-symbol stock split history synced into the platform. Useful for checking historical split ratios and labels when reconciling price history, options deliverables, or unusual chart moves.
get_stock_splits
Get SEC Regulation SHO threshold-list history for a symbol with a compact status summary by default. Highlights whether the symbol is currently on the list, recently cleared, or only appeared historically in the requested window.
get_threshold_history
Get current and recent trading halts. Default view condenses duplicate feed rows, prioritizes the latest active halt state, and highlights material recent news/regulatory events.
get_trading_halts
Get Treasury rate data. Pick the view that matches the question: • view="benchmark" — current platform risk-free rate served at /risk-free-rate (currently a 10Y-based Treasury rate used for options pricing). No params. If you need shorter maturities (1M, 3M, 6M, 2Y, 5Y), use view="curve" instead. • view="curve" — full US Treasury yield curve with a compact current-curve summary by default. Returns key maturities, inversion flags, spreads, and small trend samples.
get_rates
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Options Analysis Suite alternatives on ChatGPT?
As of 2026-09-28, Options Analysis Suite competes with GEXLOG Market Briefings, OptionClaws, OptionsAhoy, OptionsCalc, Parity in ChatGPT Options Analysis & Calculators, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.