# EFI Terminal > Stock and options research with expected ranges, options positioning, > volatility, seasonality and EFI Rotation. Research evidence, not trade execution. Canonical website: https://efiterminal.com/ ## Public product references These pages are readable without an account or JavaScript. They explain the product, its inputs and its limitations; they are not live market-data receipts. - [Research guides](https://efiterminal.com/learn): Find a research topic. - [About EFI Terminal](https://efiterminal.com/about): Product purpose and data sources. - [AI integrations](https://efiterminal.com/developers): MCP access and compatible clients. - [Expected ranges](https://efiterminal.com/learn/expected-ranges): Option-implied price ranges. - [Options positioning](https://efiterminal.com/learn/options-positioning): Gamma, delta and strike levels. - [Volatility](https://efiterminal.com/learn/volatility): Implied versus realized volatility. - [Seasonality](https://efiterminal.com/learn/seasonality): Historical calendar patterns. - [EFI Rotation](https://efiterminal.com/learn/efi-rotation): Relative leadership and momentum. - [Market regime](https://efiterminal.com/learn/market-regime): Market context and breadth. - [Stock charts](https://efiterminal.com/learn/stock-charts): Price and volume context. - [Screeners](https://efiterminal.com/learn/screeners): Structured research candidates. - [Options flow](https://efiterminal.com/learn/options-flow): Trade structure and underlying paths. - [Options chain](https://efiterminal.com/learn/options-chain): Contract-level quotes and evidence. - [Event markets](https://efiterminal.com/learn/event-markets): Prediction-market context. - [Hyperliquid](https://efiterminal.com/learn/hyperliquid): Current product status and scanner boundaries. - [Insider transactions](https://efiterminal.com/learn/insider-transactions): Reported insider activity. - [Straddles](https://efiterminal.com/learn/straddles): Two-sided option structures. Discovery index: https://efiterminal.com/sitemap.xml Live workspaces and MCP analytics retain their existing access requirements. Do not infer a live price, forecast, performance result or trading recommendation from these static pages. MCP clients must retain each receipt's source, timestamp, coverage and unavailable-data reasons. The operational guide below documents the existing integration contract. ## EFI Terminal MCP Guide For LLM Agents ## Portable workflow skills For owner-authorized PredMonitor/Hyperliquid wallet screening, use `screen_predmonitor_hyperliquid`. It joins a bounded, expiring public-wallet snapshot with EFI coin-relative volume and prior ATR14. Inspect coverage, freshness, long/short counts and missing-data reasons. Use `include_wallet_evidence=true` for anonymous P&L and copied-paper outcomes. Eight scored outcomes is an exploratory sample marker; >2 ATR flags extension. P&L, win rate, dollar volume and candle direction do not reject names. Recent signals and position refreshes do not prove a new opening or increase. Before selecting EFI tools, use `efi_get_skill` with `skill_id="efi-entry"`, then load `efi-ticker-analysis` for a ticker overview. Settle Expected Ranges first, then follow the Master Dashboard workflow: annotated price map, nearby levels and ranges, HV/IV, prioritized seasonality and benchmark-relative EFI Rotation. Options Flow and specialist scanners are outside this first authored workflow. A focused component request stays focused. `efi_describe_capabilities.skills` lists IDs, descriptions, content versions and `efi://skills/{skill_id}` resource URIs. The tool and resources serve identical repository-owned Markdown. Reuse unchanged versions. Cached clients without the loader can read full entry/ticker instructions in `workflow_skills` from either `efi_describe_capabilities` or `describe_efi_mcp`. Direct ticker-summary and dashboard-context tools attach `workflow_skill` as a fallback. Client compliance is not enforced by the protocol. Explicit swing assessments retain the contract below. ## Health and transient failures Call `efi_health` once before an automated expensive sequence. Use the same receipt in `efi_describe_capabilities.health` if a cached catalog lacks the new health tool. Follow the `efi-entry` workflow's bounded retry policy: settle Expected Ranges first, preserve completed receipts, and retry only transient busy/503/timeout reads with identical arguments, sequentially at most twice after 2 then 4 seconds. Honor a longer returned delay only within the remaining total request budget. Stop on budget exhaustion or authentication, permission or validation failure. An analytics busy error contains a JSON diagnostic with `analytics_busy`, `retryable`, `retry_after_seconds`, `checked_at` and the requested tool. Report the actual failed request and diagnostic concisely. Leave missing fields unavailable and omit unsupported charts. Health reports liveness and momentary process-local capacity; provider/cache health is unknown. It neither guarantees fresh evidence nor explains previous failures. Label prior evidence as historical. ## Canonical swing assessments For a U.S. stock/ETF and an intended long or short swing, use `efi_evaluate_swing`. Ask for direction if absent. Preserve `official_call`, `directional_thesis`, `fresh_entry`, exact levels and evidence status. Always explain seasonality. Display the attached PNG or reconstruct `visual.data` exactly. The price basis is the latest completed daily close, not a live entry quote. Poor fresh entry does not imply exiting a held position; starter describes confirmation, not size. Optional `previous` accepts a prior `portable_assessment`; EFI does not track positions. With a cached tool list, use `get_efi_component` with `assessment.swing.long` or `assessment.swing.short` for the same canonical result. Existing agent/MCP access is required; Options Flow and execution are separate. Use EFI Terminal MCP as separated evidence components. Do not treat the Master Dashboard as one blended source of truth. Start with: - `describe_efi_mcp` - `efi_describe_capabilities` - `get_efi_component` Every MCP response may include `agent_guidance`; read it before choosing fields. MCP tool return map: - `get_weekday_seasonality`: historical weekday returns and future entry/exit windows. - `efi_health`: lightweight liveness and process-local admission diagnostic, available independently of heavy analytics; no provider or cache probe. - `describe_efi_mcp`: discovery defaults, input modes, universes, and shortcuts. - `efi_describe_capabilities`: capability manifest, evidence blocks, chart contract, and component catalog. - `get_efi_component`: one modular dotted component with `result` and `usage_contract`. - `get_rotation_range_setups`: rotation-authorized expected-range locations. - `get_sector_stretch_screen`: sector leadership versus stock stretch rows. - `get_sector_stretch_benchmarks`: sector benchmark mapping used by that screen. - `get_polymarket_stock_picks`: cached high-confidence Polymarket price-target picks, meaningful-range opportunities, movement alerts, probability history, and background scan progress; never starts the full crawl. - `efi_analyze_ticker`: compact single-symbol intelligence; not exact chart source. - `efi_compare_tickers`: list of compact ticker intelligence payloads. - `get_master_dashboard_context`: bundled dashboard context with separated seasonality and regime sections. - `get_master_dashboard_component`: one legacy dashboard module or figure. - `get_efi_rotation_table_snapshot`: cached frontend-parity Universe (All Equities) EFI Rotation table and optional CSV from the automated warm cache. - `start_efi_rotation_table_run`: starts async EFI Rotation table run. - `get_efi_rotation_table_run_status`: polls async rotation run status. - `get_efi_rotation_table_run_result`: returns completed rotation table payload. - `get_efi_rotation_table_csv`: returns bounded CSV text for a completed run. - `get_options_flows`: filtered options-flow rows and filter metadata. - `describe_options_flow_training_dataset`: point-in-time features, future labels, export files, and leakage boundary for direction-model research. - `create_options_flow_training_export`: queues an authenticated chronological gzip JSONL training export. - `get_options_flow_training_export_status`: polls export readiness. - `get_options_flow_training_export_manifest`: returns filters, snapshot time, checksums, feature/label/auxiliary column groups, and authenticated download paths. - `analyze_efi_selection`: universe/custom-list analysis; result shape depends on `analysis`. - `screen_seasonality_universe`: historical seasonality window screen, not AI path. - `get_seasonality_event_catalog`: discover Fed, lunar, holiday and election events, each event's available study/benchmark analyses, default analysis, source labels and applicable controls. The compact default gives `event_count`; set `include_events=true` for the full dated event ledger. - `analyze_seasonality_event`: one Seasonality Events entry point. `analysis=auto` chooses benchmark for elections and study for other events. Study measures one symbol's complete event windows; benchmark ranks sectors or custom symbols by paired excess return versus a benchmark. Benchmark excess is in percentage points; asset and benchmark returns are in percent. Use the catalog's controls for the selected event. `include_cases=true` adds exact cases and exclusions; the compact result keeps counts, reasons, sources and labels and omits the large study chart. Historical election outcomes become eligible only after the catalog's conservative admission date. These retrospective observations are not forecasts. - `get_election_scenarios`: audited US election outcomes (1980–2024), incumbent party definitions, chamber-control filters and official source links. - `screen_election_outcomes`: sector ETFs or up to 100 custom symbols ranked by mean excess return against SPY or another benchmark. Filter midterms or presidential elections, incumbent party, House/Senate held/gained/lost control, their combinations, and presidential party retention/loss. Use NYSE-session offsets −60..252; minimum complete paired cases defaults to 3. Returns excess in percentage points, strict benchmark beat frequency, sample counts and years. `include_cases=true` adds exact prices, dates, input hashes and exclusions. Offset-aware `as_of` gates outcomes at a conservative January 21 admission date, not a sourced call timestamp. Current revised adjusted prices, varying cohorts and small samples limit comparability. Retrospective history, not an executable signal, statistical significance or forecast probability. - `get_event_sky`: current moon phase and next new/full moons, quarter moons, equinoxes and solstices (USNO), each with its first NYSE session, plus the next monthly OPEX, month-end and quarter-end sessions. - `screen_event_pivots`: tickers ranked by how often they turned (top or bottom) within 2 sessions of a moon phase, equinox, solstice or other event versus their own ordinary days, oriented to each ticker's 10-session run-in, with All-years, election-cycle and optional AI line seasonality pairing. Ranked by conservative excess over ordinary days; `rows[].components` keeps every input unsummed, including OPEX/month-end specificity. `event_id` plus `as_of` reproduces an exact occurrence; `methodology.version` names the definition. Historical frequencies, not forecasts. This turn-frequency screen is separate from `analyze_seasonality_event` study and benchmark returns; use it when the question asks which tickers turn near an event. - `screen_gamma_reaction`: gamma reaction screen rows. - `screen_expected_range_universe`: Expected Range signal rows. - `get_0dte_gamma_range_state`: 0DTE expected-range plus gamma-regime board. - `screen_hyperliquid_actionable_orders`: compact ready/forming Hyperliquid order maps with exact diagnostics and a full-receipt pointer; no order placement. - `screen_hyperliquid_rotation_candidates`: on-demand Hyperliquid rotation candidate screen using EFI rotation as the rotation source. - `screen_hyperliquid_volume_anomalies`: recent extreme Hyperliquid public volume shock scan with ratio, notional, side bias, follow-through, tail-read, and action-read fields. - `get_hyperliquid_rotation_candidate_receipt`: saved evidence for a prior Hyperliquid rotation screener run. - `get_ticker_summary`: compact ticker summary. - `get_gamma_details`: one-symbol gamma detail payload. - `get_seasonality_details`: standalone seasonality detail with `mcp_contract.dashboard_parity=false`; use dashboard components for dashboard AI path. - `get_options_chart_details`: one options chart payload with analytics and optional `agent_chart`. For `chart=expiry_move`, use `payload.agent_chart.recreate_points` to recreate the Master Dashboard Expected Ranges candles, bands, levels, and path points. Read `payload.meta.oi_basis.surface_provenance` before consuming OI-derived Max Pain, equilibrium, or gamma-path levels; incomplete surfaces are explicitly unavailable and are never replaced with confirmed values under an `estimated_live` request. - `get_options_positioning_details`: side-by-side confirmed and volume-scaled estimated-live SPY Max Pain and call/put equilibrium receipts. Read the multiplier, reconciled-session count, retention interval, coverage, and fallback provenance before using the projected levels. - `get_rotation_context`: one-symbol rotation context for the requested timeframe. - `get_insider_conviction_flows`: filtered insider conviction rows. Prefer `get_efi_component` with dotted component ids: - `seasonality.chart.raw` - `charts.seasonality.all_years` - `charts.seasonality.election_cycle` - `seasonality.ai.path` - `seasonality.window.active` - `seasonality.context` - `regime.context` - Market Structure includes an experimental zero-weight Yield Curve Direction shadow using 3M-2Y and 3M-10Y H.15 slopes. Treat its 1-month/3-month reads as confidence context, not a probability, Composite input, or trade instruction. - `regime.market_reversal` - `regime.tri_regime` - `regime.broad_market` - `charts.regime.tri_regime` - `charts.regime.market_reversal` - `charts.regime.broad_market` - `rotation.context` - `charts.rotation.risk` - `gamma.details` - `market_structure.gamma_positioning` - Benchmark-wide SPY/QQQ factor. Read `requested_symbol`, `factor_symbol`, `scope`, and `benchmark`; never assume the requested ticker produced it. - `charts.options.classic` - `charts.options.gamma` - `charts.options.delta` - `charts.options.iv` - `charts.options.iv_excess` - `charts.options.iv_range`: IV Range Lab; preserve its method, expiration and pricing inputs. It is distinct from the Expected Ranges (`expiry_move`) surface. - `charts.options.hviv` - `charts.options.aggregate` - `charts.options.single` - `charts.options.wall_significance` - `charts.options.juice` - `charts.options.contract_drift` - `charts.options.expiry_move` Global rules: - For Polymarket Stock Picks, check `data_available`, `generated_at`, and `scan_status` before using `high_confidence_picks`. `yes_probability` means touch before deadline, not a guaranteed close or stock-price forecast. - For the cached all-equities EFI Rotation table or CSV, call `get_efi_rotation_table_snapshot` first. It reads the frontend-parity `comprehensive_all` / `SPY` / `21d` / `100` history-bar warm cache from the automated 4:30 PM America/New_York scheduler and does not enqueue work on a cache miss. - Keep chart data, historical windows, AI forecast paths, regime, rotation, gamma, and options charts separate. - Explain what each returned field means before using it in a conclusion. - Do not call historical `win_rate_pct` AI confidence. - Do not call historical `avg_move_pp` the AI Prediction line. - Do not merge an active historical window and the AI Prediction path into one bullish/bearish sentence. If they disagree, say they disagree. - Do not provide buy/sell/hold instructions. Options chart component meanings: - `charts.options.classic`: classic open-interest and volume chart payload. - `charts.options.gamma`: gamma hedging pressure chart payload. - `charts.options.delta`: delta exposure chart payload. - `charts.options.iv`: IV skew chart payload. - `charts.options.iv_excess`: IV excess / normalized IV hump chart payload. - `charts.options.hviv`: historical volatility versus implied volatility chart payload. - `charts.options.aggregate`: aggregate open-interest and volume chart payload. - `charts.options.single`: single-expiration open-interest and volume chart payload. - `charts.options.wall_significance`: gamma wall significance chart payload. - `charts.options.juice`: Options Juice chart payload. - `charts.options.contract_drift`: option-stock divergence / contract drift chart payload. - `charts.options.expiry_move`: expected range / expiry move chart payload. When `include_agent_chart=true`, prefer `result.payload.agent_chart.recreate_points` for explicit candles, every horizontal level, exact cushion/pressure bounds, and expected/breakdown path points; use `result.payload.agent_chart.echarts_option` for direct ECharts rendering. Expected Range screen meaning: - `screen_expected_range_universe`: unified Expected Range plus gamma setup scan for a ticker set or preset universe. Use `expiration_mode="upcoming"` for the earliest live expiry including same-day 0DTE when available, or `expiration_mode="monthly"` for next monthly/OPEX context. Rows contain named High/Highest/Low/Lowest boundaries, range status, gamma-aware `setup_signal`, setup confidence, GEX regime, gamma flip/wall diagnostics, intraday volume/volatility context, and gap-to-edge context. This is the primary scanner workflow. - `get_0dte_gamma_range_state`: legacy strict 0DTE expected-range plus gamma-regime detail scan for a ticker set or preset universe. Prefer `screen_expected_range_universe` for normal scans. State `payload.analysis_stats` counts before summarizing rows. Rows include spot, same-day expiry, ATM straddle expected move, expected low/high, range position, net GEX, GEX regime, nearest walls, strict signal label, confidence, invalidation, and `missing_fields`. Treat `gamma_flip` as a current-chain zero-cross proxy unless `gamma_flip_method` says otherwise. Hyperliquid rotation screen meaning: - `screen_hyperliquid_actionable_orders`: compact agent-first decision screen. `MARKET_READY`, `LIMIT_READY`, and `TRIGGER_READY` mean the map is complete; `FORMING` exposes exact `missing_fields`; `INVALID` exposes failed geometry, liquidity, freshness, spread, or R/R checks. Confidence and shock overlap do not replace map completeness or EFI authority. - `screen_hyperliquid_rotation_candidates`: on-demand Hyperliquid perp screen. EFI rotation table output is the authoritative rotation source. Hyperliquid level, room, candle, and liquidity fields are structure evidence only. - If EFI output is missing, stale, malformed, or unavailable for an asset, no rotation candidate should be generated for that asset. - `screen_hyperliquid_volume_anomalies`: recent extreme public volume shocks from retained Hyperliquid stream candles and matched trades. Defaults are higher timeframe only: `1h,4h,1d`. Treat these as abnormal-flow evidence only, not proof of news causality or insider activity. Use `tail_read` and `action_read` to distinguish informative flow, liquidity stress, two-sided churn, and ambiguous shocks before implying direction. - `get_hyperliquid_rotation_candidate_receipt`: retrieves the saved EFI answer, levels, candidates, and blockers for one screener run. Seasonality component meanings: - `seasonality.chart.raw`: raw all-years average, current-year actual, and AI Prediction chart lines. Plot `result.series.*.points`. - `charts.seasonality.all_years`: Master Dashboard all-years Seasonality figure. Render `result.echarts_options` when present. - `charts.seasonality.election_cycle`: Master Dashboard election-cycle Seasonality figure. Render `result.echarts_options` when present. - `seasonality.ai.path`: dashboard/UI AI Prediction line. Plot `result.path_points`; summarize moves from `result.path_move_summary`. - `seasonality.window.active`: historical active/selected seasonal window. `win_rate_pct` is historical frequency by the window end. `avg_move_pp` is the historical average start-to-end window move. It is not the AI forecast. - `seasonality.context`: chart, AI path, and active window bundled but still separated. Regime and rotation chart component meanings: - `charts.regime.tri_regime`: ticker-specific tri-regime candlestick history. - `charts.regime.market_reversal`: benchmark market-reversal candlestick history. - `charts.regime.broad_market`: broad-market regime history. - `charts.rotation.risk`: ticker reversal-risk figure from rotation context. Correct NVDA-style conflict framing: ```text Historical all-years seasonality is in a late-stage bullish window, but the dashboard AI Prediction path is bearish near term. These are separate components and currently conflict. ``` Incorrect framing: ```text AI forecast is bullish because the active window has a positive average move and high historical win rate. ``` ## Straddle movement screening `screen_straddle` returns the ATM ask debit, actual session-window movement history, stock-hurdle counts, gamma/pin context, and a portable catalyst-research prompt. Read `efi_get_skill` with `skill_id="efi-straddle-screen"`. The calling LLM uses its own search tools to verify company/macro/sector catalysts and their exact timing, then weighs IV crush and movement cost. EFI supplies no event forecast, profit probability or buy/pass verdict. Cached clients use `get_efi_component` with `symbol="SPY"` and one of `straddles.close_to_open`, `straddles.close_to_close`, or `straddles.intraday`. The existing `expiration` argument selects an exact expiry; blank selects the nearest verified expiry covering the window. The result includes the same `llm_research.workflow_skill` prompt and fictional few-shot examples. Stock returns above today's debit/spot hurdle are not straddle win rates. Missing quotes/history remain unavailable; missing gamma is unknown context. The screen makes no internal event-calendar request. `/straddles` provides Copy for LLM and JSON export; HTTP uses `GET /api/v1/straddles/audit`.