{
"cells": [
{
"cell_type": "markdown",
"id": "f9a03aeb",
"metadata": {},
"source": [
"## Introduction\n",
"\n",
"We saw some monthly auto-correlation in volatility [here](/posts/autocorrelation-volatility). Let us try to create a strategy out of it and see if it holds an edge. Our strategy is to hold the stock when the volatility is low.\n",
"\n",
"## Strategy\n",
"\n",
"1. Calculate the monthly volatility of the stock\n",
"2. Calculate the 12-period rolling monthly volatility\n",
"3. If the present month volatility is less than the rolling volatilty, hold the stock\n",
"\n",
"Volatility is simply the standard deviation of the daily returns\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "b96352c9-c673-4527-90a0-830809902fd4",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"sns.set()\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "d2bba534-d0f7-4a74-9ebf-8d216c9e6b58",
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv('/home/pi/data/sp500.csv', parse_dates=['Date']).rename(\n",
"columns = lambda x:x.lower()).sort_values(by='date').set_index('date')\n",
"df['ret'] = df.close.pct_change()"
]
},
{
"cell_type": "markdown",
"id": "72a61f3f-740b-42f9-a9ef-ce3d0fa12aa1",
"metadata": {},
"source": [
"The following two functions \n",
" * generate the returns and then \n",
" * plots the cumulative returns based on each signal\n",
" \n",
"signal 1 means that last month volatility is more than the moving average of the 12 month volatility while signal 0 indicates the volatility is less than the average. All denotes holding the stock all the period. So,\n",
" * 1 denotes more volatility\n",
" * 0 denotes less volatility"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "c19293d9-d964-4906-a958-90bc81b6d1a1",
"metadata": {},
"outputs": [],
"source": [
"def generate_returns_table(data, freq='M'):\n",
" \"\"\"\n",
" Generate the returns dataframe\n",
" data\n",
" Daily data\n",
" freq\n",
" frequency as pandas string\n",
" \"\"\"\n",
" monthly_returns = data.resample(freq).close.ohlc().close.pct_change()\n",
" monthly_volatility = data.resample(freq).ret.std()\n",
" df2 = pd.DataFrame({\n",
" 'returns': monthly_returns,\n",
" 'volatility': monthly_volatility\n",
" }).dropna()\n",
" df2['rolling_vol'] = df2.volatility.rolling(12).median()\n",
" df2['signal'] = df2.eval('(volatility>rolling_vol)+0').shift(1)\n",
" return df2\n",
"\n",
"def plot_strategy(data, column='signal'):\n",
" \"\"\"\n",
" Plot the returns based on signal\n",
" data\n",
" dataframe with returns\n",
" column\n",
" column containing the signal\n",
" \"\"\"\n",
" collect = []\n",
" d = data.copy()\n",
" d['name'] = 'all'\n",
" d['cum_returns'] = d.eval('1+returns').cumprod() \n",
" collect.append(d)\n",
" grouped = d.groupby(column)\n",
" for name, group in grouped:\n",
" group['name'] = name\n",
" group['cum_returns'] = group.eval('1+returns').cumprod()\n",
" collect.append(group)\n",
" tmp = pd.concat(collect).reset_index()\n",
" return sns.lineplot(x='date', y='cum_returns', hue='name', data=tmp)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "9bb4ca82-868f-4dee-bc04-44a98f5744e6",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"strategy = generate_returns_table(df)\n",
"plot_strategy(strategy)\n",
"strategy.groupby('signal').returns.describe()"
]
},
{
"cell_type": "markdown",
"id": "22f896f4-e7d1-4dd9-939f-6403d6c78127",
"metadata": {},
"source": [
"There seems to be an edge here. A signal of 0, lower volatility, generates better returns at a lesser risk. But the optimal thing to do, by looking at the cumulative returns chart, is to stay invested all the time as it gives the maximum total returns. \n",
"\n",
"Let us try doing this on a quarterly basis. Instead of calculating the monthly volatility, calculate the quarterly volatility and apply the same algorithm"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "2e25f5bd-6cd7-46f3-9a25-bffa0181e35e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
count
\n",
"
mean
\n",
"
std
\n",
"
min
\n",
"
25%
\n",
"
50%
\n",
"
75%
\n",
"
max
\n",
"
\n",
"
\n",
"
signal
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0.0
\n",
"
53.0
\n",
"
0.001043
\n",
"
0.076472
\n",
"
-0.200011
\n",
"
-0.023018
\n",
"
0.012990
\n",
"
0.054221
\n",
"
0.116419
\n",
"
\n",
"
\n",
"
1.0
\n",
"
34.0
\n",
"
0.039976
\n",
"
0.087841
\n",
"
-0.225582
\n",
"
0.005207
\n",
"
0.049272
\n",
"
0.101734
\n",
"
0.199529
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" count mean std min 25% 50% 75% \\\n",
"signal \n",
"0.0 53.0 0.001043 0.076472 -0.200011 -0.023018 0.012990 0.054221 \n",
"1.0 34.0 0.039976 0.087841 -0.225582 0.005207 0.049272 0.101734 \n",
"\n",
" max \n",
"signal \n",
"0.0 0.116419 \n",
"1.0 0.199529 "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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ly9fLr/88steKc+F2qp8sizLdXV18m233Sb37NnTG0VpUluV73e/+5379XvvvSf/9re/9Up5LtTa8hUVFckPPPCA3L9/f3n16tXu80ycOFFOT0+XZVmWP/nkE/nBBx/0Snku1Fblu+uuu+SVK1fKsizLK1eulB999FFvFKeR1pSvtrZWHj16tFxUVCTLsiz/7W9/k5999llZljvu9aU5PvuEYDAYeOqpp9BoNKjVarp3705WVhaJiYl06dIFlUrFzJkzWbduHfn5+VgsFgYOHAjA3LlzWbduHXa7nb179zJt2rQG2zuCtijfOS+++CJ33323dwrSjLYqn8vlwmg0AmA2m9HpdN4qUgOtKR/A2rVrmTx5Mtddd537HDabjUcffZSUlBQAevXqRWFhoVfKc6G2KF9FRQUZGRnMmzcPgJtuuonf/OY33ihOI60pn91u589//jNRUVHA+X+njnx9aY7PJoQePXq4LxBZWVl88803SJLUaB3n4uLiRus7GwwGiouLqaysJCAgwL1S27ntHUFblA9g06ZNWCwWpk+f3q7xX0pble/RRx/l3XffZezYsbzzzjvcf//97VqO5rSmfAALFy7klltuaXAOjUbDrFmzgPrEt3z5cqZMmdI+BbiEtihfbm4usbGx/L//9/+48cYbWbRoEWq1ut3KcDGtKV9oaKj738VisfDWW28xZcqUDn19aY7PJoRzTp48yb333svixYtJSEhotF+SpGbXd25ue0dyJeUrLS3lH//4B08//XR7hHpZrqR8UF8nvWzZMrZv384zzzzDr371qyaP95aWlO9SbDYbv/vd73A4HDzwwAOeCPOyXUn5HA4Hx44dY9SoUXz55ZdMnjyZp556ypPhtlpryldbW8v9999PSkoKc+bM8Ynry4V8OiHs37+fu+++m9/+9rfMmTOn2XWcL9xeWlpKZGQkYWFhGI1GnE5ng+0dxZWWb+vWrVRVVbkbXQFmzZrlrmLxtistX0VFBZmZme67s2nTplFaWkplZWW7l6UpLS3fxZhMJhYuXIjD4eAf//hHh7mDhisvn8FgwN/fn4kTJwJwww03cPjwYY/H3VKtKV9JSQl33HEHKSkpPP/88wAd/vrSFJ9NCIWFhTzyyCO88sorzJgxA4ABAwZw5swZsrOzcTqdfPXVV4wbN464uDi0Wi379+8HYM2aNYwbNw61Ws3QoUP55ptvGmzvCNqifLfccgsbN27kiy++4IsvvgDgiy++ICCg+RWT2ktblC80NBStVsu+ffuA+l9gf39/wsLCvFauc1pTvot54oknSExM5PXXX0ej0bRH6C3SFuVLSEggKiqKbdu2AbBlyxZSU1PbJf5LaU35nE4nDz74INdddx1/+MMf3E8BHfn60hyfXSDnueeeY/Xq1Q0e4+bNm0dSUhIvvPACVquV8ePH8/vf/x5JksjIyGDp0qWYTCb69OnDCy+8gEajIT8/n6eeeory8nJiYmJ49dVXCQ4O9mLJ6rVV+X6uV69eHD9+vL2L0qS2Kt/hw4d59tlnsVgs+Pv788c//pE+ffp4sWT1Wlu+c5566imGDRvG3LlzOXbsGHPmzCE5OdldDx0ZGcmKFSvavTwXaovyAWRmZvKnP/3JXd/+4osvkpSU1N7FaaQ15du4cSO//vWv6dWrl/vYvn378vzzz3fY60tzfDYhCIIgCG3LZ6uMBEEQhLYlEoIgCIIAiIQgCIIgnCUSgiAIggCIhCAIgiCcJRKCIFyGdevW8Ytf/OKixyxfvpyNGze2U0SCcOVEQhAED/nxxx8bTUMuCB2ZytsBCIKveP3111m7di0hISEkJiYCcObMGZYtW0ZdXR0lJSWkpKTwt7/9jU8//ZS0tDRefvlllEol48eP55VXXmHv3r04nU769OnD0qVLO8SocUE4RzwhCEILbNy4kfXr17NmzRo++ugj93xQq1atYvbs2Xz88cesX7+evLw8tm7dyvz58+nbty9PPvkkU6dO5a233kKpVPLZZ5/x5ZdfEhkZySuvvOLlUglCQ+IJQRBaYPfu3UydOtV9R3/TTTfx/vvv88QTT7Bz505WrFhBVlYWJSUl1NXVNfr81q1bqa2tZdeuXQDY7XbCw8PbtQyCcCkiIQhCC1w4DbdSqQTg8ccfx+l0ct111zFhwgQKCwubnPbY5XKxZMkSxo8fD9TPYmq1WtsneEFoIVFlJAgtMHbsWNatW0dNTQ0ul8s9e+yOHTt45JFHuP7665EkiUOHDrmnO1Yqle5G5TFjxvDBBx9gs9lwuVw8/fTTvPrqq14rjyA0RTwhCEILjB8/nuPHj3PTTTcRFBRESkoKlZWVPPbYYzzyyCMEBwej1+u55ppryMnJAWDixIm89NJL2O12Hn74YV566SXmzJmD0+mkd+/eHW4xGEEQs50KgiAIgKgyEgRBEM4SCUEQBEEAREIQBEEQzhIJQRAEQQBEQhAEQRDOEglBEARBAERCEARBEM4SCUEQBEEA4P8DxDuhKVcUMLAAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"strategy = generate_returns_table(df, freq='Q')\n",
"plot_strategy(strategy)\n",
"strategy.groupby('signal').returns.describe()"
]
},
{
"cell_type": "markdown",
"id": "12e9cbe7-93ab-4ca0-8d7d-b9913e75bec4",
"metadata": {},
"source": [
"From the cumulative returns chart, it looks that investing when the signal is 1, during higher volatility, looks better than staying invested all the time. This is in contrast with what is observed when we used monthly frequency, which needs to be investigated further.\n",
"\n",
"You can try different frequencies and different instruments by cloning this notebook\n",
"\n",
"
\n",
" Transaction costs and slippage not included. Also the result doesn't resemble an exact portfolio.\n",
"
\n",
"\n",
"
\n",
" I have not tested for statistical significance for these results, which is important.\n",
" These are only raw results\n",
"