Docs menu

get_ladder

Get the ladder for one symbol and expiry: every rung's market-implied probability of finishing above the strike, the above and below prices on a 0..1 scale per $1 of payoff, validity, spot, forward and time to expiry.

Scope: ladder:read

Input

NameTypeRequiredDescription
symbolstringRequiredUnderlying ticker, uppercase, e.g. SPY.pattern ^[A-Z]{1,6}$
expirystring (date)OptionalExpiry as YYYY-MM-DD. Defaults to the nearest listed expiry.
strikes_around_spotintegerOptionalHow many strikes to return above and below spot.≥ 1; ≤ 60; default 6
JSON Schema
input_schema
{
  "type": "object",
  "properties": {
    "symbol": {
      "type": "string",
      "pattern": "^[A-Z]{1,6}$",
      "description": "Underlying ticker, uppercase, e.g. SPY."
    },
    "expiry": {
      "type": "string",
      "format": "date",
      "description": "Expiry as YYYY-MM-DD. Defaults to the nearest listed expiry."
    },
    "strikes_around_spot": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60,
      "default": 6,
      "description": "How many strikes to return above and below spot."
    }
  },
  "required": [
    "symbol"
  ],
  "additionalProperties": false
}

Example

Request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_ladder",
    "arguments": {
      "symbol": "SPY",
      "expiry": "2026-10-23",
      "strikes_around_spot": 2
    }
  }
}
Result
{
  "snapshot_id": "spy-2026-10-23-1760641500000",
  "symbol": "SPY",
  "expiry": "2026-10-23",
  "as_of": "2026-10-16T19:20:00Z",
  "spot": {
    "last": 582.41,
    "bid": 582.4,
    "ask": 582.42,
    "mid": 582.41
  },
  "forward": 582.6,
  "minutes_to_expiry": 1990,
  "width": 1,
  "fit": "svi",
  "stale": false,
  "rungs": [
    {
      "strike": 580,
      "p_above": 0.59,
      "above_price": 0.61,
      "below_price": 0.43,
      "valid": true
    },
    {
      "strike": 581,
      "p_above": 0.55,
      "above_price": 0.57,
      "below_price": 0.47,
      "valid": true
    },
    {
      "strike": 582,
      "p_above": 0.52,
      "above_price": 0.54,
      "below_price": 0.5,
      "valid": true
    },
    {
      "strike": 583,
      "p_above": 0.48,
      "above_price": 0.5,
      "below_price": 0.54,
      "valid": true
    },
    {
      "strike": 584,
      "p_above": 0.45,
      "above_price": 0.47,
      "below_price": 0.57,
      "valid": true
    }
  ]
}

Rungs are sorted by strike, ascending. above_price and below_price are omitted when a rung is not quotable; valid: false rungs cannot be traded.