For the latest documentation, please visit the new sites: MesoSim docs at docs.mesosim.io and MesoLive docs at docs.mesolive.io.

Implied and Historical Volatility

The simulator provides key volatility metrics related to the underlying for every simulation run. These volatility metrics are made accessible to the user via the following variables:
  - underlying_hv
  - underlying_iv
  - underlying_iv_pct
  - underlying_iv_rank

All the calculated metrics are cross-checked and validated against key trading platforms (Interactive Brokers, TD Ameritrade and TastyTrade) respective values. The accuracy of our calculation matches over 95% of the time those trading platforms. 

Historical Volatility

Historical Volatility is calculated by looking back 30 calendar days and taking the log returns of the close prices on every given day. Using these prices, the standard deviation (square root of variance) is calculated and multiplied by the square root of trading days (252):

stdDev = Sqrt(logReturns.Sum(r => Pow(avg - r, 2)) / (logReturns.Count));
underlying_hv = Sqrt(252) *stdDev;

Please note, that as historical volatility is not updated intraday as it's using close prices.

Implied Volatility

The overall implied volatility for the underlying is calculated using the Options Contracts:

  • Option Types: Put Only
  • Expirations: Closest to 30 days out at any given time
  • Strikes: closest to underlying (ATM)

The calculation filters for bad data (outliers) and liquidity to have a realistic measure of implied volatility. 

Additionally, IV Rank and Percentile are calculated by looking back 1 calendar year as follows:

Find the period's high and low overall implied volatility. Count the number of total days and days where overall implied volatility is under (below) the current.

underlying_iv_rank = ((price.ImpliedVolatility - low) / (high - low)) * 100;
underlying_iv_pct = (under / total) * 100;

All implied volatility metrics are updated intra-day.

Crypto notes:
1) MesoSim's Implied Volatility is not sourced from Deribit's DVOL, but calculated internally. 
2) In case of Historical Volatility calculation, the End of Day is considered to be 00:00 UTC.