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 / profiles | options / default, full, options, strategies |
|---|---|
| Default discovery | Included |
| Required capabilities | None |
| Effects / authorization | none / none |
| Cost / cancellation | small / Do not assume inline interruption |
| Handle-eligible inputs | None |
| Idempotency | not-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"
]
}