# Volatility and options data

Conditional variance is computed from the series your run produced. An option chain is loaded and inspected, and the scoring loop reads the bar file.

## Two objects, and one of them reaches the run

Realized volatility is measured backwards, from the bars a run already loaded. Implied volatility is solved from option prices, and it prices a horizon ahead of the quote that produced it.

An option carries two coordinates the rest of the application does not use: a strike and an expiry. A chain is therefore a surface at each snapshot, and a bar file is a series indexed by time.

That difference governs what a backtest can consume. A bar backtest steps through one series per instrument, so a surface has to be reduced to aligned quantities before it enters such a loop.

- realized volatility: measured backwards, from the bars the run loaded
- implied volatility: solved from option prices, for a horizon ahead of the quote
- the extra coordinates of a chain: a strike and an expiry, at each snapshot

## Where the shipped catalogue stops on options

An option chain reaches the desktop through a reader node in the alt-data family. It is registered with a live status, it takes a folder path and an underlying, and it produces figures beside a run.

The same registration omits the flag that turns a data node into a runnable root, and the comment beside it states the consequence. A chain feeds panels, and a configuration is scored on the bar file.

That claim is executed, and its result is printed. Validation checks the loaders used by the run engine; the option loader is absent from that path today.

The modelling group that would price an option is declared roadmap in the shipped catalogue. A stochastic-volatility model, a smile model, a local-volatility surface, the Black-Scholes solver, the Greeks and a risk-neutral density are named there with that status.

The regime nodes that would read a variance risk premium carry conflicting states: the shipped catalogue marks them live while the runtime catalogue marks them for later work.

Their required inputs settle the question here. Both need an implied-vol series and an index series attached to the bar pack, while the current run receives no external series.

- what the chain reader produces: figures read beside a run, from a folder you point it at
- what a configuration is scored on: the bar file, with no chain in the scoring loop
- the volatility-and-options modelling group: declared roadmap in the shipped catalogue

[the nodes themselves](https://stochastly.com/docs/nodes): Node catalogue

## Conditional variance, from the series a run produced

The time-series and volatility family ships 17 nodes, of which 13 are validated by executable checks. A GARCH fit, an EGARCH variant and an exponentially weighted recursion each read the return series your run produced.

The decay coefficient of the weighted recursion is entered on the node. A value outside the open unit interval comes back reported as undefined, with the figure you entered quoted in the result.

Each fit is reported under its own label. Where a maximum-likelihood fit is unavailable, the reading states the cause and returns no substitute figure under the GARCH name, which keeps a weighted recursion from being read as a fitted model.

The synthetic-path family carries a GARCH-simulated path. With the coefficients left undeclared on the node, they are fitted by maximum likelihood on the returns of your own run, and the result names where they came from; a coefficient you enter is used as entered. Quadratic variation is available beside it as a direct estimate of accumulated variance.

- what the volatility fits read: the return series of the run, with no external input
- a decay coefficient outside its domain: reported as undefined, with the entered figure quoted
- a fit that cannot be produced: the cause is named, and no substitute figure is returned

[Screenshot: Rolling volatility in Stochastly, Full desk · 155 nodes, light theme.](https://stochastly.com/screenshots-current/docs-guide-options-volatility--rolling-volatility--desk.png)

A rolling volatility estimate exposes changes in the amplitude of the strategy returns.

## A state read off amplitude, and what it carries

The regime and labelling family ships 18 nodes, of which 7 are validated by executable checks. A tagger built on slope and average true range labels bars by trend direction and by amplitude, and it is runnable in the shipped catalogue.

A hidden-Markov state model is declared roadmap. The published result on such models concerns the amplitude dimension: variance clusters, correlation shifts, and stretches of calm and turbulence.

One property governs their use inside a rule. The filtered state probability uses information up to the bar, and the smoothed estimate uses the sample, so a rule conditioned on the smoothed one reads ahead of itself.

Two further limits travel with the family. The parameterisation bounds what a state can represent, and the number of states is a selection choice that enters the multiplicity the run already prices.

- what the shipped tagger reads: slope and average true range, on the loaded bars
- which state probability is usable in a rule: the filtered one, computed from information up to the bar

[a size conditioned on a state](https://stochastly.com/docs/guide/risk-sizing): Position size as a research variable

## Amplitude as a gate, computed on price

The entry-filter family ships 43 nodes, of which 42 are validated by executable checks. Conditions on average true range and on band width gate entries by amplitude, and a variance-ratio condition reads whether increments accumulate faster than a random walk would.

Each of these reads the price series the run loaded, with no external input. A graph wiring one of them stays inside the causality probe, since the probe truncates the bar file and compares the per-bar result over the overlap.

A filter added to a graph widens the space the selection score prices. Two amplitude bands over the same series are correlated, and the adjusted p-value takes that correlation from the population you ran.

[the route, and the price of the search](https://stochastly.com/docs/find-alpha): Finding alpha, and pricing the search you did

- what an amplitude filter reads: the price series of the run, with no external input

## What a variance figure leaves out at the edge

A variance number describes dispersion around the middle of a sample. A drawdown limit is breached by the largest observations, and those follow a law of their own.

The analysis family carries a generalised Pareto fit over threshold exceedances, a Hill tail index, historical and parametric value-at-risk, and expected shortfall. Value-at-risk reports a threshold, and expected shortfall reports the mean of the losses beyond it.

The threshold choice is yours to carry. Set too high it leaves too few exceedances, set too low it breaks the asymptotic justification, so publish the estimate as a curve against that choice, beside the single figure.

A conditional tail estimate is the version that applies to a series with volatility clustering. Filtering the returns through a volatility model first, then fitting the tail on the standardised residuals, is the published procedure for it.

- what the tail readings cover: exceedances above a threshold you set, on the run's own series
- what to publish beside a tail index: its sensitivity to the number of order statistics kept

[Screenshot: CVaR / Expected Shortfall rendered in the current light-theme Stochastly desktop application.](https://stochastly.com/screenshots-current/-docs-guide-options-volatility-cvar-expected-shortfall.png)

CVaR / Expected Shortfall in the current desktop app, using the unchanged recorded desk study. Historical simulation, not live performance.

## What the reader recomputes, and what it declares

The implied vol drawn by the reader is recomputed. A forward and a discount factor are measured from the chain by regressing the call-minus-put difference on the strike, so no rate and no dividend are assumed.

The loader rejects that regression below a declared number of call and put pairs, and rejects it when the slope implies a discount factor outside a bounded interval. The pair count and the fit quality travel with each expiry.

A rejected fit falls back to the spot column when the file carries one, with the discount factor set to unity. That fallback is named in the result, and the quality block counts how many expiries were fitted from parity and how many came from the fallback.

The inversion is by bisection on the Black-76 price. A quote below intrinsic value or above the discounted forward returns no value, since placing such a contract at a boundary of the search interval would draw a data defect as a measurement.

The out-of-the-money wing supplies the quote at each strike. In the money the premium is largely intrinsic, and the inversion divides by a vanishing vega, which turns a rounding of the quote into a large move of the implied figure.

The at-the-money point is interpolated between the two strikes bracketing the forward. Taking the nearest quoted strike makes the term structure step with the strike grid, and that step reads as a change of regime. With inverted points on one side of the forward alone, the interpolation is unavailable and the nearest point is used.

A quality block states, field by field, which numbers came from the file and which were recomputed. The vendor implied vol travels beside the recomputed one under its own field, and the greeks supplied by the file are named there without entering a curve.

- where the forward comes from: a regression of call minus put on the strike, with the spot column as a named fallback
- a quote outside the arbitrage bounds: no implied vol is returned, and the contract is left out of the curve
- which wing is inverted at each strike: the out-of-the-money one, where vega is not vanishing
- what the quality block declares: recomputed against supplied, field by field

## A magnitude by strike, with no positioning assumed

A profile by strike weights the recomputed gamma by open interest when the file carries it. With no open-interest column, traded volume is used, and the figure is named for that weight, since the two quantities answer different questions.

The profile is a magnitude. Which side of a contract a dealer holds is a positioning assumption, a chain file carries no column for it, and no sign is applied to the figure under this build.

The reader also measures whether open interest moves between snapshots inside a day. A value that holds across the session marks the field as a daily stamp, describing the previous session, whatever the timestamps in the file carry.

With one snapshot per day that measurement is unavailable, and the field comes back empty in place of zero. An empty field and a measured zero support different readings of the weighted figures below them.

- what weights the profile: open interest when the file carries it, traded volume when it does not
- what the profile reports: a magnitude by strike, with no dealer sign applied
- a single snapshot per day: the intraday measurement is unavailable, and the field is returned empty

## A chain you can read, and cannot trade

Closing this gap takes two pieces. A stage that reduces a surface to quantities aligned on the run bars, and a kernel that consumes those quantities, are both outside the shipped catalogue today.

The validation remains executable. It checks whether the run engine imports the option loader, so these readings become candidates when that connection appears.

What to do meanwhile costs one preview. Read the quality block before the curves, then treat the smile, the surface and the term structure as descriptions of the file you pointed at.

Several conclusions stay outside this build: an option payoff replayed over history, a greek exposure through time, a record of premium sold, and a variance risk premium joined to your P&L. A figure from the chain reader describes the state of a chain.

- what closes the gap: an alignment stage for a surface, and a kernel that consumes it
- what validation does when it closes: it fails because the recorded roadmap limitation no longer holds

[a published volatility term structure](https://stochastly.com/docs/guide/macro-altdata): Reading an external series against your run

## What a study on bars alone can settle

A volatility idea reaches a priced result on the route the axis guide carries. Place the kernel, wire the costs, declare the split, widen the sweep, and read the selection score against the population you ran.

The published claim these nodes rest on is persistence in conditional variance, and the references below carry it. A model fitted on variance leaves the sign of the next return open, since these specifications are sign-blind by construction.

The published asymmetry belongs in the same sentence, and the reference for it is listed below. Where negative returns raise future variance more than positive ones, a symmetric specification understates risk in the window after losses.

Two neighbouring readings live on their own pages. A size that follows a variance forecast is covered with its node status and its control, and a slippage widening with amplitude is covered with the coefficient that charges it.

[a size that follows a forecast](https://stochastly.com/docs/guide/risk-sizing): Position size as a research variable

[a cost that widens with amplitude](https://stochastly.com/docs/guide/execution): What a fill costs, and what it moves

## Where the volatility results come from

The conditional-variance specifications and the realized-measure literature are the published basis for the fits above. The tail results are the basis for the exceedance readings.

Engle, R. F. (1982) Autoregressive Conditional Heteroscedasticity with Estimates of the Variance of United Kingdom Inflation Econometrica 50(4)

Bollerslev, T. (1986) Generalized Autoregressive Conditional Heteroskedasticity Journal of Econometrics 31(3)

Glosten, L. R., Jagannathan, R. & Runkle, D. E. (1993) On the Relation between the Expected Value and the Volatility of the Nominal Excess Return on Stocks Journal of Finance 48(5)

Corsi, F. (2009) A Simple Approximate Long-Memory Model of Realized Volatility Journal of Financial Econometrics 7(2), 174-196

McNeil, A. J. & Frey, R. (2000) Estimation of Tail-Related Risk Measures for Heteroscedastic Financial Time Series Journal of Empirical Finance 7(3-4)

Artzner, P., Delbaen, F., Eber, J.-M. & Heath, D. (1999) Coherent Measures of Risk Mathematical Finance 9(3)

Hamilton, J. D. (1989) A New Approach to the Economic Analysis of Nonstationary Time Series and the Business Cycle Econometrica 57(2), 357-384

## What is being claimed, and what is left out

### An option chain reaches figures, and reaches no scored configuration.

Scope: graphs wiring the option-chain reader; the scoring loop of a run reads the bar file
Effect: a verdict produced by this build carries no information taken from an option chain, so a conclusion about options cannot be drawn from it
Control: release validation fails when the run engine starts importing the option loader

### An implied vol drawn by the reader is conditional on the mid price and on the parity fit.

Scope: expiries carrying enough call and put pairs for the regression, on the out-of-the-money wing of each strike
Effect: a stale or crossed quote moves the fitted forward, which shifts each point of the curve computed from it
Control: the fit is rejected below a declared pair count or outside a bounded discount factor; quality reports crossed quotes and median relative spread

### The volatility fits describe the sample they were estimated on.

Scope: the return series of the best configuration of a run, over the bars that were loaded
Effect: a persistence coefficient estimated on a calm sample understates the variance a turbulent period would produce
Control: a split declared on the canvas separates the window a figure is fitted on from the window that judges it

The production build embeds the strategy engine and stops if its source is missing. A separate non-deliverable demo can omit it and use a labelled generic cross-sectional fallback. That fallback does not establish option-model coverage.

[the validity domain of a result](https://stochastly.com/research/gaps): Gaps

No reading described above is a statement about future performance, and the harness carries no signal to trade. A result concerns the series that was submitted.

---
Source: https://stochastly.com/docs/guide/options-volatility
