The finance developer workbenchSearch the reference Development · 0.1.4 · unpublished

options / wire operation

Solve implied volatility

totalfinance.option.implied_volatility

Solve Black–Scholes–Merton implied volatility from an observed option price using the method suite (auto/brent/newton/halley/householder, with an optional Brent fallback). Supply time as timeToExpiryYears (years) or as expiry + asOf (dates). Non-convergence and no-arbitrage failures are reported in diagnostics (converged: false), never fabricated; the method actually used is echoed in diagnostics.method.

Pack / profilesoptions / default, full, options, strategies
Default discoveryIncluded
Required capabilitiesNone
Effects / authorizationnone / none
Cost / cancellationsmall / Do not assume inline interruption
Handle-eligible inputsNone
Idempotencynot-applicable
Input schema
{
  "type": "object",
  "properties": {
    "price": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Observed option price to invert"
    },
    "spot": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Spot price of the underlying"
    },
    "strike": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Strike price"
    },
    "timeToExpiryYears": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Time to expiry in years"
    },
    "riskFreeRate": {
      "type": "number",
      "description": "Continuously-compounded risk-free rate (decimal)"
    },
    "type": {
      "type": "string",
      "enum": [
        "call",
        "put"
      ],
      "description": "Option type"
    },
    "dividendYield": {
      "type": "number",
      "description": "Continuous dividend yield (decimal, default 0)"
    },
    "expiry": {
      "type": "string",
      "description": "Option expiry — YYYY-MM-DD (→ the US close: 16:00 ET, 13:00 ET on early-close days) or a zoned ISO datetime. Supply with asOf instead of timeToExpiryYears."
    },
    "asOf": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "string"
        }
      ],
      "description": "Valuation instant — epoch ms or a zoned ISO datetime such as \"2026-07-20T10:30:00-04:00\". A bare YYYY-MM-DD is refused: a same-day option's value depends on the time of day. For an end-of-day mark use the 16:00 ET close (13:00 ET on early-close days)."
    },
    "method": {
      "type": "string",
      "enum": [
        "auto",
        "brent",
        "newton",
        "halley",
        "householder"
      ],
      "description": "Solver method (default auto = Householder with a Brent fallback)"
    },
    "fallback": {
      "type": "boolean",
      "description": "Fall back to Brent when the chosen method fails (default true)"
    }
  },
  "additionalProperties": false,
  "required": [
    "price",
    "spot",
    "strike",
    "riskFreeRate",
    "type"
  ]
}
Output schema
{
  "type": "object",
  "properties": {
    "value": {
      "type": [
        "number",
        "null"
      ]
    },
    "converged": {
      "type": "boolean"
    },
    "assumptions": {
      "type": "object",
      "description": "Applied conventions"
    },
    "diagnostics": {
      "type": "object",
      "description": "Engine, method, warnings"
    }
  },
  "required": [
    "value",
    "converged"
  ]
}

All operations · Setup, handles, jobs & permissions