Options Volatility Analysis

Free Volatility Cone Generator

Upload historical price data and visualize volatility distributions across return windows. Inspect sample counts and compare the latest historical estimate with earlier rolling estimates. No option IV is fetched.

Multiple Lookback Periods
Percentile Rankings
100% Free

Price Data Input

Required Format

CSV Format:

date,close
2025-01-01,185.64
2025-01-02,183.96

JSON Format:

[
  {"date":"2025-01-01","close":185.64}
]

Synthetic format example only. Use valid unique dates and positive closes. Each selected window needs at least five rolling estimates; 252 returns need 257 closes.

Lookback Periods

Select the lookback periods to include in your volatility cone. Each window uses all available rolling end dates, so sample counts and date coverage differ. These are trading observations, not option calendar days.

Build a cone from a dataset you can identify

A volatility cone summarizes rolling historical-volatility estimates at different lookback lengths. This generator works with your local daily closing-price series. The initial prices and downloadable example are synthetic: they represent no named security, verified exchange calendar or investment performance.

  1. Prepare CSV with exact date and close headers, or a JSON array of objects with those fields. CSV quoted fields are accepted. Dates must be valid, unique YYYY-MM-DD values; prices must be finite and positive. Rows are sorted oldest first. Invalid entries cause an error instead of being silently dropped.
  2. Upload a file up to 1 MiB containing 50–10,000 rows, or enter all rows manually and apply them. A new input attempt clears the previous displayed dataset, so an error cannot leave old results looking like the new file.
  3. Select return windows. An n-return window needs n + 1 closes for one estimate and n + 5 closes for the five-estimate display minimum. The minimum does not establish statistical reliability.
  4. Read the date range and sample count. Current means the estimate ending at the last supplied close, not a live quote. Every window uses all its possible end dates; longer windows have fewer estimates and later starting end dates.
  5. Export the JSON record to keep the input prices, selected periods, formula convention, sample counts and summary statistics. Browser storage is only a local convenience, not a backup or account sync.

Reproduce the population-volatility convention

For each consecutive pair of closes, calculate r = ln(new close) − ln(previous close). For each n-return window, subtract its mean return, square the deviations, average them using denominator n, then take the square root. Multiply by √252 and by 100 to express annualized volatility as a percentage.

This implementation deliberately retains the population denominator n. A sample estimator using n − 1 gives a different result; neither should be compared without naming the convention. With 30 alternating log returns of +0.01 and −0.01, the mean is zero and this formula gives √(252 × 0.0001) × 100 = 15.8745%. The n − 1 version gives approximately 16.1459%.

The 252 factor assumes daily trading observations. Crypto calendar data, intraday bars and weekly closes require a different annualization convention; this page has no factor selector. Futures rolls, splits, dividends and missing sessions must be resolved consistently in the source data. A low historical estimate does not bound future losses.

Percentiles, ranks and sample coverage

Band percentiles interpolate the sorted rolling values at index (p / 100) × (m − 1). Current percentile counts the fraction of those values strictly below the latest estimate. Ties stay in the denominator, and the latest estimate is included in its own benchmark.

For hypothetical values 10, 12, 16, 20 and 30 percent, a comparison value of 18 percent exceeds three of five observations: its empirical percentile is 60%. Its min-to-max position is (18 − 10) / (30 − 10) = 40%. The latter is a range score, not a percentile. A flat series has no observations strictly below its current zero volatility, so its displayed percentile is 0%, not a cheap-option signal.

With 300 closes, a 30-return window produces 270 estimates while a 180-return window produces 120. Their date coverage differs, and overlapping windows share returns. The table exposes those counts; it does not imply independent samples or statistical confidence bands. For a tool that aligns end dates across windows, see the volatility cone analyzer.

A historical cone cannot price an option

This page does not request or accept option prices or implied volatility. A high historical percentile does not establish that premiums are expensive, and a low percentile does not predict an increase. Earnings events, maturity, strike, skew, spreads and liquidity require separate evidence. No percentile here selects a strategy or supports a claim of profitable mean reversion.

The RealVol cone explanation illustrates historical ranges across horizons; its index conventions are not a specification for this calculator. OIC’s volatility discussion distinguishes historical observations from option-implied volatility. Keep that distinction when using the output for further research.

Frequently Asked Questions

What data does this generator use?

It calculates locally from your CSV, JSON or manual closing prices. The initial example is synthetic, not a market dataset. No live prices or option IV are fetched. Dates must be unique YYYY-MM-DD values and closes must be finite and positive.

Which volatility formula is used?

Each rolling window uses log returns, their mean-centered population standard deviation with denominator n, and square-root-of-252 annualization. This convention differs from a sample standard deviation using n minus 1. Inputs must represent comparable daily trading observations.

How many closes are needed?

At least 50 closes are accepted. Each selected n-return window needs at least n plus 5 closes to supply five rolling estimates. Five is a display minimum, not statistical reliability. The 252-return window therefore needs at least 257 closes.

What does Current percentile mean?

It is the percentage of that window’s rolling HV observations strictly below the latest HV estimate. Ties stay in the denominator. It is not the current value’s position between the minimum and maximum, and it is not historical IV percentile.

Where are my data saved?

The page attempts to save inputs and selected periods in this browser’s local storage. Storage may be unavailable, full or cleared, and is not account synchronization. A visible message reports save failures. Export the JSON result with its inputs and calculation convention if you need a separate record.

Can the cone determine which options to buy or sell?

No. Historical volatility is not an option valuation model. This tool has no IV input or option prices, and a 25th or 75th percentile crossing does not prove mispricing, predict reversion or establish a profitable trade.

Write a volatility rule you can test

Use Pineify’s Coding Agent to draft a Pine Script study with an explicit return window and variance convention. Inspect the code and test it in TradingView; the cone alone does not establish a profitable strategy.