- 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
- 46
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Options Analysis Suite
Get updates when Options Analysis Suite’s Discoverability Score or category rank changes.
Competing in ChatGPT Options Analysis & Calculators
View Category46 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. A calibration status of success means the model produced usable fitted parameters; how well they fit is in its confidence and warnings, so a success can carry a warning such as few prices staying within bid/ask. calibratedModelCount counts the models carrying a calibration, including MonteCarlo-Heston, which reuses Heston's fit and has no calibration outcome of its own, so it can exceed the number of outcomes.
get_compute_runs
Get the user's synced snapshot history by type. Price or stress type="strategy" with compute_scenario by its `strategyKey`, without retyping legs. No broker call. • type="gex" - per-symbol Gamma Exposure snapshots. REQUIRED: `symbol`. The 3 most recent (no dedupe: back-to-back records can be near-duplicates), with the per-expiration breakdown, call/put walls, gamma flip, gamma magnet, unusual activity, expected move, and raw vs in-wall visible combo-strike counts. • type="portfolio" - account-wide portfolio snapshots with market-scaled raw Greeks: 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). Its `delta` is share-equivalent, summed across underlyings with no price weighting, while `details.greeks.dollarDelta` (and `dollarGamma`) weights each position by its own underlying's price, so the two can differ in size and even in sign when positions span underlyings priced far apart. For $-impact views use type="risk". • type="risk" - account-wide risk-analysis snapshots: Value-at-Risk (95%/99%), Conditional VaR, beta, Sharpe ratio, maximum drawdown, volatility, stress test results, and $-Greeks: first-order dollarDelta, dollarGamma (per 1% move), dollarTheta/day, dollarVega (per 1% IV), dollarRho (per 1% rate); second-order dollarVanna (per 1% IV), dollarCharm (daily $Δ decay), dollarVomma (per 1% IV), dollarVeta (daily vega decay). var95/var99/cvar95/maxDrawdown/volatility are in PERCENT (2.5 = 2.5%), volatility annualized, and var95/var99/cvar95/maxDrawdown are POSITIVE loss magnitudes; beta and sharpeRatio are dimensionless; stressResults[].impact is signed $ P&L and impactPercent signed % of portfolio; details.historicalVarDetails.worstDay is the POSITIVE magnitude of the worst single-day LOSS (13.46 is a 13.46% loss, NOT a gain), while bestDay and avgReturn are SIGNED percent returns. A figure or stress row with contractStatus "rejected" (calculationAccepted false) is display-only, whether its inputs were fallback or degraded or changed after it was computed (a stale_snapshot reason; displayReasons say which): it is not a valid risk result, so report it as unavailable. For raw-unit Greeks use type="portfolio". GREEK TAGS (portfolio and risk): a record tagged greekTimeConvention "time-passing" (greekTimeBasis "calendarDay", brokerThetaBasis "assumedCalendarDay") states each Greek field only when it covers every position it is due from (every option; delta also every share, coin or futures contract) and null otherwise, never a partial sum; its greekCoverage gives each field's {included, total} (null on a risk record whose Greek inputs were rejected, every Greek field null); its time Greeks (theta, charm, veta) are one CALENDAR day passing, the broker's theta as published, and its vanna, charm, vomma and veta are priced at each option's matched risk-free rate and its underlying's dividend yield. A record WITHOUT those tags is legacy: its vanna, charm, vomma and veta (risk: dollarVanna, dollarCharm, dollarVomma, dollarVeta) were written as 0 with no rate behind them - not data, report them as unavailable - and its other fields summed whatever positions supplied them. Portfolio and risk collapse consecutive identical snapshots by default. • type="strategy" - the strategy definitions sent from the Strategy page's AI Assistant panel ("Send to assistant"): symbol, label, the legs (strikes, expirations, premiums with where each came from - market, last, manual or theoretical - implied vols, and each option leg's `rate` with `rateSeries`, the Treasury series matched to its own expiration; null for a manual page's one rate, absent on older definitions) and the page's inputs (spot, rate and dividend yield, each with its source; the rate's `rateSeries` for the shortest option leg; the volatility mode the legs were priced with and the model). Definitions only, never computed outputs. Optional `symbol` filter; newest first; the newest hundred are kept.
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 on the platform's Analysis page. Only calibrated models (Heston, SABR, jump diffusion, Variance Gamma, Dupire local volatility) and standard Monte Carlo runs are recorded; a Black-Scholes, Black76, Binomial, PDE or exotic-payoff calculation is not, and compute_black_scholes prices one on demand. A newer jump-diffusion record names its jump model, as Jump Diffusion (Merton), (Kou), (Bates) or (Variance Gamma), and a newer record's calibrationSummary.params holds only the model's fitted parameters; an older one shows plain Jump Diffusion, and its params can also list pricer settings or other jump models' defaults. The model filter matches every jump model, so read the label. Each result includes the model used, 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. Rollups count only what the Analysis page records: calibrated models and standard Monte Carlo.
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, the analysts' monthly rating counts and their 12-month history, recent individual price targets, recent rating changes, and the quantitative rating. `ratingCounts` is how many analysts rate the stock strong buy, buy, hold, sell and strong sell in the newest monthly count, with its `month` and `total`; it is given only while that month is at most two months back (otherwise it is null and `ratingCountsNote` names the newest month on file, or says the counts have not been fetched yet or none are on file). `ratingHistory` holds the 12 months to the newest count, newest first, and `ratingHistoryMeta.missingMonths` names the months in that span with no count on file. `priceTargets` lists individual targets published in the last 12 months, newest first: the `firm`, the `analyst` (null when not named), the `priceTarget`, a `splitAdjustedPriceTarget` when it differs, and the `priceWhenPosted`; `priceTargetsMeta.publishedLast12Months` counts the year's targets on file, the year's whole count only when `countComplete` (the list on file reaches back past the year; otherwise the year holds at least that many). `priceTargets` is null, with `priceTargetsNote`, when individual targets have not been fetched yet. `ratingSnapshot` and the `historicalRating` streaks are a quantitative model grade from six valuation and financial measures, each scored 1 to 5, not analysts' ratings. `estimates` lists forward periods first, soonest first, then past periods newest first, so the nearest forward periods are the ones kept when the list is capped. Each rating streak runs from `fromDate`, its oldest observation, through `throughDate`, its newest, and the streaks are newest first. `estimatesCurrency` gives the currency the company's newest statement reports in, with that statement's date, and the one the listing trades in: the estimates carry none of their own and are normally in the reporting currency, but are refreshed apart from the statements, so around a change of reporting currency the two can disagree; `estimatesCurrencyNote` says so when the reporting currency differs from the listing's, in which the price targets are.
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 and color per day; veta per percentage point per day; dcharmDvol per day per unit of volatility; vanna, vomma, zomma and ultima per unit of volatility; delta, gamma, speed and lambda unscaled. The five time Greeks are what one day of time passing does (`greekTimeConvention: "time-passing"`): theta the change in price (negative for a long option losing value), charm in delta, color in gamma and veta in vega; dcharmDvol is the change in that daily charm per unit of volatility, which is the day's change in vanna. 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%). 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. It also returns `esg`: the environmental, social, governance and overall ESG scores (0 to 100) of the latest ESG disclosure on record, which are derived from one SEC filing (its form, the period it covers, its filing date and EDGAR link; not necessarily the company's newest filing), and the ESG risk rating with its fiscal year and industry rank; a disclosure over two years old or carrying placeholder scores, and a rating for a fiscal year more than two years back, are withheld and named in `esg.withheld`. `esg` is null with `esgNote` when none is on record (ETFs have none) or the read failed. For a fund, `etf` carries its facts (expense ratio in percent, AUM, NAV with `factsSourceUpdatedAt`, the data source's refresh time), its latest holdings file as reported (`holdingsInFile`, `holdingsBasis` direct / countMismatch / unknown with `basisEvidence`, `topHoldings` with `matchKind` and any `splitWarnings`), sector and country weights; `holdings: {offset, limit}` pages ranks 1-100 with `holdingsMeta` (beside a page, `etf.topHoldings` is left out: the page is the list). A group whose identity changed since it was read is withheld with a note. A fund with no profile on record, or whose profile read failed, answers with `etf` and `profileStatus`.
get_company_profile
Get trades by members of Congress (Senate and House) and their spouses and dependents, from their STOCK Act periodic transaction reports. scope="symbol" (default) gives one company's: `summary` (transactions, purchases, sales, other, members, by chamber, first and last trade, last disclosed) over every transaction on file, and the newest `trades` first. scope="market" gives the trades first disclosed over the last `days` days of disclosures on file (1-365, default 30; an amended report re-listing an older trade is not new), of a `chamber` and `kind`: `summary`, `topCompanies` (the tickers traded most, with purchases, sales and members) and the newest disclosures first. Each trade: `member` with `party` on the trade date (`caucus` for an independent who caucuses with a party), `chamber`, `seat` (state, and district for the House) and `label` (e.g. D-CA-31), `symbol` (the company that traded under the ticker on the trade date; `symbolFiled` when the report named another ticker; null for a bond, fund or private stock, with the report's `asset`), `assetType`, `type` (Purchase, Sale (Full), Sale (Partial), Sale, Exchange), `owner`, `amountRange` (the report's range: text, min, max), `tradeDate`, `disclosedDate` (the first disclosure), `disclosureLagDays`, `report` (the filing's URL) and `alsoInLaterReports`. `coverage` gives the disclosures on file per chamber, `tradesMeta` how many are shown of how many, and `congressNote` the rules (ranges, amendments counted once, party by date, ticker matching by date). `congressStatus` says when none are on record.
get_congress_trades
Get the format reference for custom indicator scripts on the Stock Charts page - the exact text the page's Copy-AI-prompt button gives a model, so you can write or convert an indicator the user pastes into the page. Call without a section for the index of fetchable sections (the whole reference is about 100 KB, over one answer's budget), then fetch sections by id: 'format.*' for the API, 'ta' for the technical-analysis library, 'examples' or one example, 'pineConversion' to convert Pine Script / ThinkScript / Python.
get_custom_indicator_spec
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 gamma magnet, the 30-day expected move, and the top contributing strikes. No broker credential is required. 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, which is a different claim and is never substituted here. get_options_snapshot and get_options_analytics_history report net GEX and DEX over ALL expirations, so they differ from these for the same session and neither is wrong. Long-dated contracts carry large delta, so the two can differ even in sign (SPY 2026-09-29: net DEX -16,795,316,756 over all expirations against +16,246,461,968 over 0-60 days). Here 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 is the largest absolute gamma strike; the 30-day expected move is a decimal fraction of spot and in dollars. 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. `date` in the result is the session it describes and is authoritative; do not present it as today's close. The equity import usually lands about 02:30 US Eastern the next day, so in the evening the most recent on file is usually the previous session (the `date` parameter gives the window, the retry rules and why a session can be missing). 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: none falls between). 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; 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. Numbers go out at 15 significant digits at most, each change computed as the exact difference of the two stored values before that rounding. 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: each row carries spot, ATM IV, IV rank and percentile, 20- and 60-day realized vol, IV minus each realized vol (`ivMinusHv20d`, `ivMinusHv60d`, the raw volatility risk premium), the 30-day expected move, net GEX and DEX, the 25-delta skew, put/call ratio, volume and open interest. With `rankBy` the rows come sorted by that metric (largest first unless `order` is "asc"), a symbol without the metric last and named in `rankMeta.unrankedSymbols`; without it they stay in the order asked for. 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. Long-dated contracts carry large delta, so the two can differ even in sign (SPY 2026-09-29: net DEX -16,795,316,756 over all expirations against +16,246,461,968 over 0-60 days). `chainExpiry` is, for a stock, ETF or index, the nearest expiration at least a day after the session (the snapshot is stored after that session's own expirations settle; null, with no chain, when none is that far out); a futures contract's snapshot is taken intraday and can name the session's own expiration. `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. With `includeMoves: true`, also returns the realized and implied moves around each of the last eight past reports: both one-session moves (prior close to report-day close, and report-day close to next close, because the report's time of day is often not on file; `timing` says when it is), the implied move from the stored at-the-money straddle on the session before the report when that chain is on file (`impliedSource: "straddle"`, within the last twelve months of stored chains) else from the stored ATM IV as a one-day approximation (`"atmIv"`) else null with the reason, the IV crush across the report on one tenor, and realized-over-implied ratios; the summary counts each implied source. A symbol with no report on file, or an outage of the price history, is reported under `moves` with its code while the history still returns. With `transcript`, also returns under `transcript` a generated summary of an earnings call - never the transcript itself - checked against the call (every quote word for word with its speaker, every figure present in the call): the prepared remarks by speaker, each analyst question with the gist of the answers, the guidance given, and up to five short quotes. `transcript: {}` gives the newest call with a summary; `fiscalYear` with `quarter` names one call; `query` instead returns the summary lines containing every query word, across the newest calls (`calls`, default 4, max 8) or in the one named call. Coverage today is mostly each company's latest call; `callsOnFile` lists the calls on file with their summary state, and a refusal (no call on file, no summary for that call) is reported under `transcript` with its code while the history still returns.
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. Each position's per-model Greeks are the pricer's raw output for one share of one contract, not sized by quantity or the 100 multiplier and not signed by long or short: delta and gamma as usual, vega and rho per 1.00 change (100x a per-1% figure), and theta per year in the mathematical direction, the opposite sign of the usual daily decay figure: the web app's equity convention divides by 252 trading days and flips the sign, so 141.92 per year is about -0.56 a day (usually positive for a long option, though not always: a deep in-the-money put can be negative). For Heston and Bates, vega is the sensitivity to the starting volatility only, a different quantity from the other models' vega, so the two are not comparable and either can be the larger. A model marked actionable false (calibrationStatus and qualityReasons say why, e.g. calibration_failed) priced from default parameters after its calibration failed: its price and signal are shown but are not counted in the position's agreement or average model price, and its Greeks can be empty. Positions saved before 2026-10-01 carry no such mark, and their agreement and average can include such a model.
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. It also returns `valuation`: `peers`, the trailing P/E beside the company's sector's and industry's P/E among the companies listed on its own exchange (NYSE, NASDAQ and AMEX only) with `premiumPct` for each, and `marketCap`, the latest market cap with its change over one and five years from weekly history; a part with nothing to show is null with a note saying why. `currencies` gives the currency the newest statement on file reports in, with that statement's date (each statement names its own in `reportedCurrency`; the TTM amounts and per-share figures carry none: they are normally in the company's reporting currency, this one, but are refreshed apart from the statements, so around a change of reporting currency the two can disagree), and the one the listing trades in (the profile and the market-cap history), with `currencyNote` when they differ. When the symbol has no fundamentals record the answer is `fundamentalsStatus` (naming an exchange-traded product as one), not a payload. The TTM figures are refreshed both with the company's statements (`fetchedAt`) and from daily files (`ttmBulkAsOf`, the files' own date); the two stamps record those refreshes, not which one wrote the figures shown.
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. Use scope="market" for filings across companies; get_sec_filings for other SEC filings. Reads stored data; no broker credential needed. Default response focuses on purchases and sales (Form 4 codes P and S, made on the open market or privately: the code alone does not say which, though a filing's footnotes sometimes do), groups repeated filing rows into event-level summaries, and summarizes awards/exercises/tax withholding separately: `summary` counts the purchases and sales among the company's newest filing lines on file (up to 500; `summary.period` gives the dates they span), with their values to the cent and the net, `insiderTradesMeta` says what is listed, and `insiderTradesStatus` says when nothing is on record (naming an exchange-traded product as one, by the profile's fund flag). Lines filed under an issuer CIK other than the company profile's (a predecessor's after a reorganization or redomicile, a former holder of the ticker's, or another issuer this company or its insiders report holding; the CIK alone does not say which) are left out of the list and the summary: `summary.otherIssuerLines` counts them, `otherIssuers` gives each CIK's lines, dates, security names and purchases and sales, and `full` returns the raw lines with each one's `companyCik`. A share count or price a line does not carry is unknown, never 0 (each count below appears only when nonzero): an event's `sharesTransacted` sums the lines with a share count (null when none has one), its `totalValue` sums its priced lines, and `linesWithoutShares` and `linesWithoutPrice` (shares, no price) count the lines left out; `purchaseValue` and `saleValue` (in `summary` and `otherIssuers`) sum the events with a value and `purchasesWithoutValue` and `salesWithoutValue` count those without (0 with no events; null, and `netValue` null, when events exist but none has a value); `purchasesPartiallyValued` and `salesPartiallyValued` count the events valued only in part, listed or not. Beside any of these counts, `purchaseValue`, `saleValue` and `netValue` cover the valued lines only. `quarterlyStatistics` counts the company's own reported Form 4 and Form 5 lines (another issuer CIK's left out; with no profile CIK on record, `quarterlyStatisticsMeta.issuer` is "unconfirmed" and the lines, naming one issuer at most, are counted as the company's) by transaction-date quarter, newest first, from every page of filings the sync read (for a busy company deeper than the 500 lines listed): per quarter, `purchases` and `sales` (codes P / S in the company's shares: lines, distinct `filings` and `reporters`, `shares`, and the `value` of the `pricedLines`), P / S lines on other securities, and other acquisitions and dispositions, each counted apart; Form 3 holdings are left out, and an amendment is not reconciled with the filing it amends. The `provisional` quarter is the current one, which later filings can change; a quarter is listed only when every filing for it was read (`quarterlyStatisticsMeta`: `readToEnd`, `oldestFilingRead`, `completeFrom`), so a quarter listed with zero lines had none. `quarterlyStatisticsNote` says when they are not computed yet or cannot be given. scope="market" instead reads every covered company's insider filings over the last `days`, ending on the newest filing day on file: `totals` (purchases and sales: each its lines and dollar value, and the net), `topPurchases` and `topSales` (the ten companies with the most value of each), and the window's individual Form 3, 4 and 5 lines, newest filing day first, ungrouped, as `kind` and `limit` choose; `tradesMeta` appears when the window holds more than are listed (by `limit`, or with `trimmedForSize` by the response size budget). A market line is valued only when it is the company's listed stock and, where a close is on file, priced near it: `valueWithheld` marks a line with a price and shares left unvalued and `issuerUnconfirmed` a line whose filing names an issuer that could not be confirmed as the company (never valued, never totaled); `note` has the rule.
get_insider_trading
Get a company's (or an ETF's) institutional ownership from quarterly Form 13F filings: who owns it among investment managers and how that changed. For the newest quarter on file: `institutions` (managers holding shares), `shares`, `reportedValue`, `pctOfMarketCap` (the reported value over the market cap on file within a week before the quarter end, `marketCapDate`; `marketCapSharedWith` and `marketCapNote` when another security of the company, the same issuer number and name on file, carries about the same market cap, so it is likely the company's whole market cap), `changeFromPriorQuarter`, `positionChanges` (new, closed, increased and decreased positions), `calls` and `puts` (managers and the shares underlying, counted apart from shares), `coverage` (`institutionsWithSharesOnAnotherBasis`: in `institutions` and `reportedValue`, those shares not in `shares`; `managersUnplaced`: managers with lines that may be the company's but could not be matched, those lines in nothing; every `history` quarter carries its own), and `filedThrough` (the newest filing date read); `topHolders` by shares, each with its `priorShares` (null when the manager has no comparable report for the quarter before, or its earlier or current quantity is not known, as `change` says; 0 when its comparable report listed none), `change`, and `someSharesOnAnotherBasis` when `reportedValue` includes shares not in `shares`; and `history`, the newest quarters on file, newest first and the newest included (as many as `quarters` asks, 8 at most). `newerQuarterNote` says when a newer quarter on file holds none of the symbol. The figures are as of each quarter end and filed up to 45 days later, so they are weeks to months old by design. `institutionalNote` gives the rules: restated filings applied, values as reported, shares that more than one manager reports counted twice, changes only among comparable reports. `institutionalStatus` says when no quarter on file holds the symbol, or when the 13F read failed (the ETF holders, read apart, still answer). `etfHolders` lists the ETFs whose latest holdings file shows the security itself, by reported value, with `etfHoldersMeta` (the basis and what is excluded); shares, value and weight are as reported in each fund's file, `holdingsUpdated` the data source's update of the file, and `splitWarnings` flags a split close to or after the file's date.
get_institutional_ownership
Get one session's LIVE intraday bars (1, 5, 15 or 30 minutes) for a stock, ETF or index from the broker credential stored on your Options Analysis Suite account, with the session VWAP and its one-standard-deviation band, a session summary (open, high, low, close, volume) and any Stock Charts indicators asked for, computed on the same bars. This is the only tool with intraday price bars and a session VWAP; get_stock_prices is end-of-day bars, and get_live_quote is the quote now with the session range but no bars. Requires a broker credential saved to the account under Account -> Broker -> Stored broker credentials; a broker connected only in the browser on the website is not visible to this tool. Tradier and Schwab only: tastytrade, Public and moomoo are refused as BARS_NOT_SUPPORTED (no REST candles on tastytrade or Public; moomoo disabled here), naming the two that can, before anything is spent; name `provider` when more than one credential is stored. Tradier's 30-minute bars aggregate its 15-minute bars on the New York half hour; no 1-hour bars. `date` is a New York trading day (default today, or the most recent trading day before it when today is not one); `session` is "regular" (09:30 to 16:00 New York, the default) or "extended" (04:00 to 20:00). The window ends at the close or now, whichever is earlier, so a call during the session returns the bars so far. Bar times are ISO on the New York wall clock with the offset and only bars that START inside the window are returned (16:00 is dropped from regular hours). VWAP is the typical price (high, low and close over three) weighted by volume, cumulative from the first usable session bar (`vwap.anchor`; with `session: "extended"` that is the first pre-market bar, so ask for "regular" for the regular-hours VWAP), with `stdev` the volume-weighted standard deviation about it and `upper`/`lower` one deviation either side, as Stock Charts computes it; each bar carries its own `vwap` as of that bar. When the broker publishes no volume (an index such as SPX: null volume, never a zero-fill), `vwap.value` is null with `reason: "no-volume"`, never zero. The bars go out as `bars.columns` and `bars.rows`, newest last, at most `maxBars` (default 120) and fewer when the response budget binds, dropping the OLDEST; `barsMeta` says how many were returned of how many, whether and by what they were trimmed, and the first returned bar's time. The summary, the VWAP line and each indicator's latest value cover the whole session. `asOf` is when the bars were FETCHED. A repeat (same symbol, date, interval, session, broker and account) within 15 seconds can be answered from a short in-memory cache with the same `asOf`, spending no broker request, so it is not charged and is answered even when the budget is spent; the cache is per proxy instance, so a repeat can also be fetched afresh, and another account's call never shares it. Cold-call estimate, not actual spend or a cap: 1 request on Tradier or Schwab, each metering 120 a minute shared with the other live tools. `rateLimit`: proxy snapshot per account and broker, shared by live tools; includes other calls and reservations. Null means unknown. `limit` minus `remaining` is not this call's spend. After this call, it gives `remaining` of `limit` in broker requests (`provider` names the broker), resetting in `resetSeconds`; an error after the live-broker limiter ran carries it beside `code` (a charged failure, or its own RATE_LIMITED refusal, which charges nothing), one refused before it (a malformed date, a missing credential) none. There is no end-of-day fallback, and no broker text is passed on: a failure's code says what failed and whether retrying helps - BROKER_RATE_LIMITED (retryable; wait `retryAfterSeconds` when given), BROKER_UNAVAILABLE (`brokerFailure` says how: "http-status" with `brokerStatus`, "timeout", "unreadable-response", "no-usable-answer" or "other") or BROKER_REJECTED (the broker refused the request itself: not retryable, another broker may answer). Every number goes out at 15 significant digits at most.
get_intraday_bars
Get LIVE dealer positioning (GEX, gamma exposure) for one symbol, computed in real time from the broker credential stored on your Options Analysis Suite account: net GEX and DEX, net vega, vanna, charm and vomma, the repriced gamma flip, the call wall and put wall, a gamma magnet, gamma concentration, a dealer regime (normally the sign of net gamma at spot; net GEX is the fallback with fewer than two gamma-bearing strikes or no recognized regime, and the flip side does not determine it) and per-strike rows near spot. For the most recent session on file (0-60 days), free and without a broker, use get_dealer_positioning; its coarse-grid gamma flip is a different claim from the repriced one here. Requires a broker credential saved to the account under Account -> Broker -> Stored broker credentials; a broker connected only in the browser on the website is not visible to this tool. Per expiration it adds its own GEX, DEX and gross-gamma share (0DTE concentration), its at-the-money straddle expected move and the earnings and ex-dividend dates on file, also in the top-level `events` (none on file, here or in a separate earnings or dividends lookup, is not none scheduled: a fund rarely has earnings on file, and its ex-dividend date often appears only on or after the day, so for a fund neither rules one out); `spotSides` splits open interest above and below spot (a squeeze argument's inputs). The gamma flip is the crossing nearest spot that a sampled search found (a fine step, 0.0005% of spot growing to at most 0.02% farther out), not necessarily the only one; a null flip beside a complete `levelStatus.gammaFlip` is the result of a search over every counted leg (read `coverage.gammaFlipSearchStatus` when reported), not withheld and not proof of no flip. It reflects the current session, not the most recent session on file; on moomoo, option quotes are real time only once the account holds assets or a US position, and until then may be about 15 minutes delayed, unmarked. Without `expiration` it covers the first four listed expirations that may still trade (on a monthly-listed name that can span months; get_dealer_positioning covers 0-60 days from the most recent session on file; its window and session can differ from this live answer, so comparing them does not isolate today's longer-dated book); with `expiration` every total (netCharm included), level and row is computed over that one listed date alone, the way to see a same-day (0DTE) or single-week book. EXPENSIVE: broker requests spend your broker's own quota (120 requests a minute on Tradier and Schwab, 600 on Public, 120 on tastytrade, 30 on moomoo), shared with the other live tools. Cold-call estimates, not actual spend or upper bounds: a default call reads the expirations list and four chains: 9 requests on Tradier and Public, 5 on Schwab, 49 reserved on tastytrade and settled to the real count, and 9 reserved on moomoo and settled to what it spent (about three fully cold calls a minute on its 30, more once its contract lists are cached for the day); with `expiration` it reads the list and one chain: 3 on Tradier and Public, 2 on Schwab, 13 reserved on tastytrade, and 3 reserved on moomoo and settled to what it spent. Counts vary with the broker's caches, and a long tastytrade or moomoo chain reserves more once its count is known and is refused RATE_LIMITED when the budget cannot hold it. Do not call it in a loop or for a list of symbols. A repeat within 15 seconds for the same symbol, broker, `expiration`, `r` and `q` can be answered from a short cache, uncharged, with the same `asOf`; `strikeRange`, `strikeWindowPct` and `strikeWindowDelta` only choose which computed rows are returned, so widening a cached window spends no broker requests.
get_live_dealer_positioning
Scan one expiration of the LIVE options chain, read with the broker credential stored on your Options Analysis Suite account, for candidate trades of one strategy, priced from the broker's current quotes. Requires a broker credential saved to the account under Account -> Broker -> Stored broker credentials; a broker connected only in the browser on the website is not visible to this tool. Each candidate carries its legs' quotes (each leg's `spreadPct` is its bid-ask spread already in percent of the mid: 0.54 is 0.54%, not 54%) and Greeks, its net credit or debit at the mid and at the natural, max profit, max loss, breakevens, return on risk, a risk-neutral probability of profit, position Greeks and liquidity; the answer adds the expiration's expected move (its at-the-money straddle, call mid plus put mid, unscaled), its dealer levels (gamma flip, call wall, put wall, gamma magnet) and every strike's distance from spot. Strategies: single calls and puts, long and short; credit and debit vertical spreads; iron condors and iron butterflies; straddles and strangles. A covered call or cash-secured put is the short_call or short_put here, without the stock or cash leg, which is not modelled. On moomoo, option quotes are real time only once the moomoo account holds assets or a US position, and until then may be about 15 minutes delayed, unmarked. EXPENSIVE. Cold-call estimates, not actual spend or upper bounds: a scan reads the expirations list and the scanned chain in your broker's own requests (3 on Tradier and Public, 2 on Schwab, 13 reserved on tastytrade and settled to the real count, and on moomoo 3 reserved and settled to what it spent), and up to four more chains with `levels: "window"`. The budget is your broker's own quota (120 requests a minute on Tradier and Schwab, 600 on Public, 120 on tastytrade, 30 on moomoo), shared with the other live tools. Another scan of the same expiration within 15 seconds (same account, broker, `levels` and supplied `r` and `q`), with any other strategy or filters, can be answered from the cached chain with the same `asOf`, quotes and expected move, uncharged and even on a spent budget (the cache is per proxy instance, so a repeat can also be read afresh). Do not call it in a loop or for a list of symbols. For dealer levels alone use get_live_dealer_positioning (live) or get_dealer_positioning (the most recent session on file, 0-60 days, free, no broker).
scan_option_strategies
Get a LIVE options chain for one expiration, fetched in real time from the broker credential stored on your Options Analysis Suite account; on moomoo, option quotes are real time only once the moomoo account holds assets or a US position, and until then may be about 15 minutes delayed with nothing in the data saying so. This is the only tool with intraday option-chain prices; for end-of-day prices from the most recent session on file use get_options_chain. No end-of-day fallback is made here: a broker that cannot answer is reported as a failure, with whether retrying can help. get_regime with scope="intraday" gives intraday exposure, not chain prices. Requires a broker credential saved to the account under Account -> Broker -> Stored broker credentials; a broker connected only in the browser on the website is not visible to this tool. Returns near-the-money strikes, the at-the-money pair, the 25-delta wings and whole-chain volume and open-interest totals; each contract row carries its quote, implied volatility and Greeks. A zero bid leaves a contract's `mid` null (averaging it with the ask makes no mid), and a chain of at least 20 contracts whose every contract reads zero open interest goes out with null open interest and `openInterestUnpublished`: an unpublished figure, not an empty book, so its nonempty sides' open-interest totals are unknown. A bid can sit below intrinsic value against `spotPrice` during trading hours too; this is not necessarily a data error. Broker requests spend your broker's own quota (120 requests a minute on Tradier and Schwab, 600 on Public, 120 on tastytrade, 30 on moomoo), shared with the other live tools. Cold-call estimates, not actual spend or upper bounds: a cold call reads the expirations list and the chain, 3 requests on Tradier and Public and 2 on Schwab, and the list is then cached 15 minutes, so another date costs 2 and 1; on tastytrade a chain is 2 plus one per 100 contracts listed for the date across every root, and on moomoo 2 reserved and settled to what it spent (its contract list, cached for the day and shared across accounts, costs nothing once cached, then one snapshot per 400 codes, the underlying's among them), each plus 1 for an uncached expirations list.
get_live_options_chain
Get a LIVE quote for one underlying (a stock, ETF or index such as SPX or VIX), fetched in real time from the broker credential stored on your Options Analysis Suite account (`provider` names the broker): last, bid, ask, bid and ask sizes, mid, the broker's mark, the session's open, high and low, the previous close, volume, the broker's quote and trade times, and the day change (`change` and `changePercent`: the broker's own, or computed against the previous close; `changeBasis` says which). This is the only tool with the underlying's current quote and session range; get_live_options_chain reports a spot at fetch time with no range, and get_stock_prices is end-of-day bars with the prior close. Requires a broker credential saved to the account under Account -> Broker -> Stored broker credentials; a broker connected only in the browser on the website is not visible to this tool. No end-of-day fallback: a failed fetch returns an error; read `code` and `retryable` when present. No broker error text is passed on. `asOf` is when the quote was FETCHED, not a quote time; the broker's own clocks are `quoteTime` and `tradeTime`, and on tastytrade `quoteTime` is a market-data clock that moves without new prices, so it does not date the bid, ask or last; on moomoo `quoteTime` is its snapshot's update time and it gives no `tradeTime`. Cold-call estimate, not actual spend or an upper bound: 1 request on every broker, against your broker's own quota, which the live tools share; a repeat for the same symbol and broker by the same account within 5 seconds can be answered from a short cache, uncharged, with the same `asOf`. A RATE_LIMITED refusal comes from the platform's limiter before any broker request is sent: with `rateLimit`, `rateLimit.provider` names the broker whose request was refused; another stored broker has its own budget, though shared limiter capacity can also cause refusal.
get_live_quote
Rank a WATCHLIST of 1 to 50 symbols LIVE by their 25-delta skew and net GEX (gamma exposure), each with its change since the prior session's close, computed in real time from the broker credential stored on your Options Analysis Suite account: the live counterpart of run_screener's end-of-day put-skew board and its dod-change boards for skew and gex (the website's Put Skew Leaders, Biggest Skew Change and Biggest GEX Change), for the symbols you name. Requires a broker credential saved to the account under Account -> Broker -> Stored broker credentials; a broker connected only in the browser on the website is not visible to this tool. Both sides of every change use this platform's own model (implied volatility solved from bid/ask mids, then Black-Scholes delta and gamma), not the broker's Greeks, so the change is like for like; skew is the 25-delta put IV minus the 25-delta call IV at the listed expiration nearest 30 days out among those at least 7 days out (`skew10d` the same at 10-delta, same expiration), and net GEX is in dollars per 1% move over the nearest four expirations that may still trade. Outside regular hours the chain is valued at the session's 4:00 PM New York close on quotes that can be stale or one-sided; on moomoo, option quotes are real time only once the moomoo account holds assets or a US position, and until then may be about 15 minutes delayed, unmarked. BUDGET: fresh fetches spend your own broker quota and MAY SPEND ALL OF IT. Further requests to that broker can then be refused (RATE_LIMITED) until the window resets; cache-only answers can still be served. Per-broker quota: 120 requests a minute on Tradier and Schwab, 600 on Public, 120 on tastytrade, 30 on moomoo. Cold-call estimates per symbol, not actual spend or caps: both metrics need the expirations list (1, cached 15 minutes) and four GEX chains, 9 requests on Tradier, Public and moomoo (moomoo reserved and settled to what it spent), 5 on Schwab, 49 reserved on tastytrade and settled to the real count; one more chain when the skew expiration is outside those four, as it often is on a symbol with weekly or daily expirations (2 more on Tradier and Public, so 11 a symbol; 1 on Schwab; 12 reserved on tastytrade; 2 reserved on moomoo), and one more when the first skew candidate fails its checks; `metrics` "skew" alone is the list and one chain (3 on Tradier and Public, 2 on Schwab, 13 reserved on tastytrade, 3 reserved on moomoo). A long list takes several calls: with both metrics Tradier's 120 a minute covers about ten symbols and Schwab's about twenty, Public paces to about one symbol a second, moomoo's 30 about three fully cold ones (more once its contract lists are cached for the day), and tastytrade's reservation of 49 or more a symbol leaves room for two at a time. Call again with the SAME list after `retryAfterSeconds`, not in a tight loop. A cached metric younger than `maxAgeSeconds` is reused at no cost; its `ageSeconds` is the rounded computation age at the response's `asOf`, not a quote age. Later calls refresh the oldest rows their budget covers, so on a long list a row can be older than `maxAgeSeconds` (fifty symbols on Tradier take about five minutes a round): ask for fewer symbols for fresher rows. A failed credential-use audit ends the whole call; no further symbol is sent. A volatility index such as VIX, or an index whose stored dividend yield is unavailable, is refused per symbol in `errors` (RESOLUTION_FAILED) before anything is spent on it; get_live_dealer_positioning takes a supplied `q` for it. An `errors` entry's `status` is this tool's for that symbol, not an HTTP status from the broker: 404 NO_EXPIRATIONS means no usable expiration dates were obtained, not that the broker returned a 404 (`brokerStatus` carries the broker's). Use run_screener (put-skew, dod-change) for the market-wide end-of-day boards, get_options_snapshot for the end-of-day skew and GEX of up to 50 symbols at no broker cost, and get_live_dealer_positioning for one symbol's full live positioning (the broker's Greeks) with the gamma flip and walls.
rank_live_skew_gex
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 six scopes. Pick the scope that fits the question: market, symbol, intraday, volatility, sectors or cot. scope="market": the MARKET COMPOSITE stress regime, an aggregate of SPY, QQQ, IWM and DIA (not per-symbol): stress score, a Calm-to-Crisis label, confidence, drivers and feature z-scores, the latest by default or one `date`; without `date`, the composite's own newest intraday scan is preferred when its market date is the same as or later than the daily row's (`scanSource` says which), and a symbol's scans of the current session are scope="intraday". scope="symbol": one symbol's daily regime plus its Greek exposures (net gamma, delta, vega, vanna, charm and vomma; call wall, put wall, gamma flip, gamma magnet, top gamma strikes); requires `symbol`; `days` returns the newest stored sessions, 1 to 30, default 1 = the latest. For a symbol's CURRENT exposures use this scope, not get_options_analytics_history (a daily history over all expirations). The dedicated positioning tools are get_dealer_positioning (end of day, 0-60 day window) and get_live_dealer_positioning (live); this scan's levels are its own computation and can differ from theirs. scope="intraday": a symbol's intraday regime scans, 5 a day (open, morning, midday, afternoon, pre-close), each with stress score, label and compact exposures; requires `symbol`; `days` is a calendar window back from the current UTC date (default 5, max 90) or `date` one session; `interval` filters by scan interval across the window; `migration` adds each level's move since the previous scan. scope="volatility": the VIX term structure at the latest close (VIX1D, VIX9D, VIX, VIX3M, VIX6M and VVIX), its shape (contango, backwardation or mixed) and ratios. scope="sectors": each sector's or industry's (`kind`) P/E and average daily price change on the NYSE, NASDAQ and AMEX for one day; `group` adds that group's daily history over `days`. scope="cot": CFTC Commitments of Traders positioning (futures only, weekly): with `symbol` (a futures ticker or root) its family market's trader groups, speculative line, 3-year range and recent reports; without `symbol`, every market's speculative line, most extreme first, with optional `sector`. volatility, sectors and cot answer the newest data on file; `date` is not supported there.
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. `daysFailingQualityCheck` counts a model's fits in the window that failed the check and `daysQualityCheckUnreported` the ones that did not report it (`failedQualityCheck` null), which are unknown, not passing: only the rest of `fitDays` passed. Each model's `paramsAtBounds` names the parameters its latest fit finished exactly on an optimizer bound: such a parameter may be held there by the bound rather than set by the market, so treat it with caution even when `failedQualityCheck` is false (SPY's Kou p at 0.05 and eta1 at 30 on 2026-09-30). It records where the fit finished, not how it got there: a parameter can also finish on a bound it started at. An empty list means none, and null means the fit did not report it: only Merton, Kou and Bates fits report bounds, so it is always null for the other five models, and for Merton, Kou and Bates fits recorded before their calibration did. Coverage is the regime universe of about 124 symbols; a symbol outside it returns an empty history rather than an error.
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. The GEX and DEX here are over ALL expirations on file, while get_dealer_positioning reports the 0-60 day window, so the two differ for the same session and neither is wrong. Long-dated contracts carry large delta, so the two can differ even in sign (SPY 2026-09-29: net DEX -16,795,316,756 over all expirations against +16,246,461,968 over 0-60 days). 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 broker, through a credential stored on the account. 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 stored call-side or put-side mid IV column), 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. Open interest or volume a contract does not carry is unknown, never 0: each total (`totalCallOpenInterest` and the other summary totals, `callOpenInterest` and the others on an expiration) sums the contracts that carry one and is null when none does, `contractsMissingOpenInterest` and `contractsMissingVolume` ({ calls, puts }) count the contracts left out and appear only when some are, and a put/call ratio is null unless both its totals are known; a chain with no contracts has every total null. Without a spot price there is no ATM strike (`atmStrike` and the ATM fields are null) and no near-money contract, and a 25-delta wing is chosen by delta alone.
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, epsEstimated, epsActual, revenueEstimated, revenueActual} rows, with no time of day and no fiscal period; the estimates and actuals are null where the source has none. 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. Only calibrated models (Heston, SABR, jump diffusion, Variance Gamma, Dupire local volatility) and standard Monte Carlo runs are recorded; a Black-Scholes, Black76, Binomial, PDE or exotic-payoff calculation is not, and compute_black_scholes prices one on demand. A newer jump-diffusion record names its jump model, as Jump Diffusion (Merton), (Kou), (Bates) or (Variance Gamma), and a newer record's calibrationSummary.params holds only the model's fitted parameters; an older one shows plain Jump Diffusion, and its params can also list pricer settings or other jump models' defaults. The model filter matches every jump model, so read the label.
query_analysis
Get recent SEC EDGAR filings for a symbol. Useful for finding 10-K, 10-Q, 8-K, proxy, insider, offering, merger and activist filings with direct SEC URLs. Default response returns a compact filing list with dates, form types, descriptions, accession numbers, and filing links, plus `dealFlags`: `merger`, the newest merger, tender offer or going-private filing (S-4, F-4, 425, merger proxies, SC TO-T, SC 14D9, SC 13E3) within 120 days, and `offering`, the newest shelf registration (S-3, F-3) or securities offering (424B prospectus) within 30 days, each with what it is, its EDGAR link, the other companies the filing names (`counterparties`, with their tickers) and `flagUntil`, the day it lapses; `indexThrough` is the last EDGAR daily index read. A shelf or prospectus may register debt as well as stock: the filing says which. The filing behind a flag can be another company's (an S-4 filed under the acquirer's CIK names this company as its target), so it need not appear in `recentFilings`. A fund or ETF is left out of the company filer map the flags are read from, so `dealFlags` is null with `dealFlagsNote`. scope="market" instead lists the merger, tender offer and going-private filings of the last `days` (1-90, default 30) that name a covered US-listed company, newest first, every party with its tickers; `limit` caps the list and `filingsMeta` says when it is trimmed.
get_sec_filings
Reprice a multi-leg options strategy across spot moves, implied-volatility shocks and days elapsed, and return a P&L grid, the base position Greeks, and optionally how the strategy fits beside the positions you already hold (`portfolioFit`). It makes no broker call. For one European option without a grid, use compute_black_scholes. Legs are supplied in the call (up to ten: calls, puts and stock), or by `strategyKey`: a strategy the user sent from the Strategy page (listed by get_snapshot type "strategy"), whose symbol, legs, premiums, vols, rates and spot are read from the record with source "record" and the record's date, a value supplied in the call still winning. Spot and each leg's IV are taken as supplied, else resolved from the stored end-of-day snapshot and chain for the symbol with their source and date named; r and q are supplied or resolved, never defaulted (the `r` and `q` parameters say how), each option leg pricing at its own rate (`legs[i].r`), held across the whole grid, with `inputs.r` the shortest option leg's; a request with an input that cannot be resolved is refused naming every missing field. Vol shocks are in vol points (0.20 plus 5 points is 0.25); days elapsed are on dayCount, and a leg whose time has elapsed is valued at its intrinsic, never through the pricer's one-minute floor. Cells are pnl[spotMove][ivShock][daysElapsed] in currency: signed quantity times the multiplier (100 per contract, 1 per share) against each leg's entry premium. A supplied or record entry premium carries `impliedVol` (the vol that premium implies at the leg's own model) and `volGapPoints` (that vol less the leg's, in points); both are null with `impliedVolReason` when no vol prices the premium ("below-zero-vol-value", "above-max-vol-value") or vols are not told apart there ("not-identifiable": a deep in-the-money American leg worth its intrinsic across many vols), and a premium equal to the leg's own price is its own vol with no gap. Past a point the answer warns: the base P&L then carries a gap that is the premium disagreeing with the vol (a broker's IV snapshot can lag its quote), not a move. Greeks are in the commercial API's convention (`greekConvention: "dapi"`), summed as signed quantity times 100 per option leg; a stock leg adds its shares to delta. The five time Greeks are what one day of time passing does to the position (`greekTimeConvention: "time-passing"`). Units: theta, charm and color per day; vega, rho, epsilon and phi per percentage point; veta per point per day; dcharmDvol per day per unit of volatility, not per point (divide by 100 for one point); vanna, vomma, zomma and ultima per unit of volatility, not per point (per point: vanna and zomma divided by 100, vomma by 10,000, ultima by 1,000,000); delta, gamma and speed unscaled. `lambda` is the position's own elasticity, delta times spot over the position's value, for a net-debit position, and null for a credit or flat one. European legs are Black-Scholes and American legs the Leisen-Reimer binomial tree. An American leg's Greeks are finite differences of its own tree (its bumps shrink near expiry and at very low vol, so such a leg is measured at its own scale; the `legs` parameter gives them), so they are the American contract's and not the European twin's: near the money, where the twin's vanna and vomma are close to zero, the early-exercise premium's own sensitivities dominate them. On an at-the-money SPY put a month out the default 100 `steps` put vomma, speed, zomma and color within about a tenth of a converged tree and ultima within about a third (200 steps: a tenth); third-order Greeks of a leg near its exercise boundary are indicative. For the other pricing models, calibration and multi-model runs use the REST API or Python SDK.
compute_scenario
Get historical OHLCV price data for a stock or ETF with a compact trend summary plus the requested daily bars. Each bar's `confirmed` is true when a verified price-history snapshot stands behind it and false when none does yet, which is the case for most symbols until their history has been verified; the price is the stored price either way, and `unconfirmedSessions` counts the false ones. It is null for an index, future or crypto symbol, which carry no confirmation, and for every bar when the symbol's history state could not be read (`historyState` null), which means unknown, not unconfirmed. `historyState` is "current", "pending_split" (a split is due and its refresh has not run, so bars before it may be on the pre-split scale), "held" (the price history is held for review) or "not_applicable" (null when it could not be read), with `historyNote` explaining the two that need it. `interval` is daily (default), weekly or monthly, and `days` then counts bars of that interval (a weekly bar is dated on its week's Monday, a holiday week included, a monthly one by its month's first day); `summary.interval` echoes it, and the summary's "sessions" count bars. `indicators` is a list of up to six {name, params} entries computed with the same math as the platform's Stock Charts on the returned bars plus up to 250 earlier bars of warm-up (so a recursive indicator's latest value is the chart's, not a short-window seed), published for the returned bars only, named by the chart's catalogue type (sma, ema, vwma, bollinger, rsi, macd, stochastic, atr, adx, obv, mfi and the rest of the 58) with the chart's own parameter names (period, source, multiplier, fastPeriod, slowPeriod, signalPeriod, and so on); `name` is one of the catalogue types the input schema lists, and an unknown parameter is refused naming what would have worked. Each entry comes back with the parameters used, `latest` (the newest finite value of every plot, null when a plot has none), the last `indicatorPoints` points per plot, and how many there were. Warm-up bars are omitted, a long period on a short window has no value, and a bar with a missing price is skipped (`indicatorsMeta.barsSkipped`), never computed on zero. `summary.volumeWeightedAverage` is the typical price (high, low and close over three) weighted by volume over the returned bars, with its note beside it: it is not a session VWAP, which needs intraday 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" — one Treasury rate. With no params, the 10-year yield: the platform's benchmark, which Portfolio Theory's CAPM pairs with the equity risk premium. Options are NOT priced at it: the platform prices each option at the Treasury rate matched to its own expiration. For that rate pass tenorYears (the maturity in years; 0.08 is a month): the answer is the series at or above it (1M to 30Y), named, the rate the platform prices an option of that maturity at. If that series cannot be read, the answer is the 3-month series with a warning saying so, and its rateContext says matched: false. • 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
Options Analysis Suite ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Options Analysis Suite's ChatGPT Plugin 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-11-02, Options Analysis Suite competes with GEXLOG Market Briefings, OptionClaws, OptionsAhoy, OptionsCalc, Parity, Vega Options 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.