New Research States: “Every Financial Market Experiences One or More Daily Price Moves of 4 Standard Deviations or More Each Year”

Roi Polanitzer
5 min readJan 19, 2022

--

The actuary Roi Polanitzer explains how to calibrate actuarial prediction models to better match the true market distribution

This week I was asked as part of a consulting work, whether the assumption made by the actuarial prediction models regarding the behavior of returns (of securities, exchange rates, price indices, etc.) over time in the Israeli capital market really reflects a normal distribution (bell-shaped symmetry), or not, and if not how can these forecasting models be calibrated to better fit the true market distribution.

In other words, the problem that actuaries and risk managers have to deal with is that because most actuarial prediction models are based on the assumption of a normal distribution of the returns, the probabilities obtained from these forecasting models for financial disasters are much lower than those actually observed in markets.

Changing All the Time

Perhaps the most serious problem with the normal distribution is the fact that its tails “disappear” too fast, at least faster than what is empirically observed in financial data.

An examination conducted by the research department of “Intrinsic Value”, which specializes in actuarial consulting, financial risk management advisory and professional and independent valuations services, shows that every market experiences one or more daily moves of four standard deviations or more per year. Such frequency is incompatible with a normal distribution. With a normal distribution, the probability of this happening is 0.0032% for one day, which implies a frequency of once every 125 years.

Another empirical observation, which was found by the research department, is that in any year, at least one market usually has a daily move greater than 10 standard deviations, which implies a frequency of once every 210 million years.

This empirical observation of the research department can be explained in a number of ways: (1) The true distribution has fatter tails (e.g., the Student’s t), or (2) the observations are drawn from a mix of distributions (e.g., a mix of two normals, one with low risk, the other with high risk), or (3) the distribution is nonstationary.

Extreme Events

According to the research department, the first explanation is certainly a possibility.

The figure above displays the density function of the normal and Student’s t distribution, with 4 and 6 degrees of freedom (df). The student density has fatter tails, which better reflect the occurrences of extreme observations in empirical financial data.

The Code

import pandas as pd
import numpy as np
import scipy.stats as si
# initialize list of lists
data = [['Deviate', 'Normal','t df = 6','t df = 4','','Normal ', 't df = 6 ','t df = 4']]
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['', '','Tail Probability','','','','Expected Number in 250 days',''])
data1 = [[-5,0.00,0.00,0.00,0.00,0.00,0.00,0.00],[-4,0.00,0.00,0.00,0.00,0.00,0.00,0.00],
[-3,0.00,0.00,0.00,0.00,0.00,0.00,0.00],[-2,0.00,0.00,0.00,0.00,0.00,0.00,0.00]
,[-1,0.00,0.00,0.00,0.00,0.00,0.00,0.00]]
df1 = pd.DataFrame(data1, columns = ['', '','Tail Probability','','','','Expected Number in 250 days',''])
df = pd.concat([df, df1], ignore_index = True, axis = 0)
data2 = [['', '', '', '', '', '', 'Deviate (alpha)', ''],["Probability = 1%","","","","",0.00,0.00,0.00],
["Ratio to normal","","","","",0.00,0.00,0.00]]
df2 = pd.DataFrame(data2, columns = ['', '','Tail Probability','','','','Expected Number in 250 days',''])
df = pd.concat([df, df2], ignore_index = True, axis = 0)
def normsdist(z):
z = si.norm.cdf(z,0.0,1.0)
return (z)
def tdist(z,df):
z = si.t.cdf(z,df)
return (z)
def normsinv(z):
z = si.norm.ppf(z)
return (z)
def tinv(z,df):
z = si.t.ppf(z,df)
return (z)
for i in range(1,6):
df.iloc[i,1] = round(normsdist(df.iloc[i,0]),5)
df.iloc[i,5] = round(df.iloc[i,1]*250,2)
df.iloc[i,2] = round(tdist(df.iloc[i,0],6),5)
df.iloc[i,6] = round(df.iloc[i,2]*250,2)
df.iloc[i,3] = round(tdist(df.iloc[i,0],4),5)
df.iloc[i,7] = round(df.iloc[i,3]*250,2)
df.iloc[i,4] = ""
for i in range(7,8):
df.iloc[i,5] = round(normsinv(0.99),2)
df.iloc[i,6] = round(tinv(0.99,6),2)
df.iloc[i,7] = round(tinv(0.99,4),2)
for i in range(8,9):
df.iloc[i,5] = round(df.iloc[i-1,5]/df.iloc[i-1,5],2)
df.iloc[i,6] = round(df.iloc[i-1,6]/df.iloc[i-1,5],2)
df.iloc[i,7] = round(df.iloc[i-1,7]/df.iloc[i-1,5],2)
df

This information is further detailed in the table above. The left-side panel reports the tail probability of an observation lower than the deviate.

For instance, the probability of observing a draw less than −3 is 0.00135, or 0.135% for the normal, 0.012 for the Student’s t with 6 degrees of freedom, and 0.01997 for the Student’s t with 4 degrees of freedom.

Multiply by at least 1.61

For the sake of convenience, I transformed these into an expected number of occurrences in one year, or 250 business days. The right-side panel shows that the corresponding numbers are 0.34, 3.00 and 4.99 for the respective distributions.

In other words, the normal distribution projects only 0.34 days of movements below z = −3. With a Student’s t with df = 4, the expected number is 5 in a year, which is closer to reality.

The bottom panel reports the deviate that corresponds to a 99% right-tail confidence level, or 1% left tail. For the normal distribution, this is the usual 2.33. For the Student’s t with df = 4, α is 3.75, much higher. The ratio of the two is 1.61.

Thus, a rule of thumb would be to correct the actuarial forecasting models from a normal distribution by a ratio of at least 1.61 to achieve the desired coverage in the presence of fat tails.

About the Author

Roi Polanitzer, FRM, F.IL.A.V.F.A., QFV

The actuary Roi Polanitzer is the owner and chief valuator of Intrinsic Value. He is one of the three leading experts in Israel in the areas of quantitative finance, option valuation, risk management and financial engineering. He has consulted for accounting firms, financial advisory firms, investigative auditing firms and publicly-traded and privately-held companies in Israel on risk analysis, valuation, and real options, and has written numerous papers and articles on those topics. He is the founder and Chairman of the Israel Association of Financial Valuators and Actuaries. Actuary Polanitzer is also the founder and CEO of the Professional Data Scientists’ Israel Association and the owner and chief data scientist of Prediction consultants. He has an MBA in business administration and BA in economics. He is a certified Financial Risk Manager (FRM), a certified Chartered Risk Manager (CRM), a certified Quantitative Finance Valuator (QFV), a certified Financial and Economic Modeler (FEM), a certified Market Risk Actuary (MRA), a certified Credit Risk Actuary (CRA), a certified Python Data Analyst (PDA), and a certified Professional Data Scientist (PDS).

--

--

Roi Polanitzer

Chief Data Scientist at Prediction Consultants — Advanced Analysis and Model Development. https://polanitz8.wixsite.com/prediction/english