Skip to content

Commit

Permalink
116 new experiments (#142)
Browse files Browse the repository at this point in the history
* toward realized covariance

* edits
  • Loading branch information
kasperjo authored Nov 21, 2023
1 parent a0b551c commit 84092ce
Show file tree
Hide file tree
Showing 15 changed files with 2,922 additions and 6,930 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ htmlcov
after_comb_covariance_no_reg.csv
HF_Returns_Stocks.csv
Intraday_Overnight_Stock_Returns.xlsx

### LaTeX ###
## Core latex/pdflatex auxiliary files:
*.aux
Expand Down
2 changes: 2 additions & 0 deletions cvx/covariance/combination.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,8 @@ def __init__(self, sigmas, returns, means=None):
param sigmas: dictionary of covariance matrices {key: {time: sigma}}
param returns: pandas DataFrame of returns
param means: dictionary of means {key: {time: mu}}, optional
Note: sigmas[key][time] is a covariance matrix prediction for time+1
"""
# Assert Sigmas and means have same keys if means not None
n = returns.shape[1]
Expand Down
48 changes: 22 additions & 26 deletions experiments/extensions/large_universes.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,18 @@
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"execution_count": 3,
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The autoreload extension is already loaded. To reload it, use:\n",
" %reload_ext autoreload\n"
]
}
],
"source": [
"import cvxpy as cp\n",
"import numpy as np\n",
Expand Down Expand Up @@ -48,28 +57,15 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Computing IEWMAs\n"
]
},
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001B[0;31m---------------------------------------------------------------------------\u001B[0m",
"\u001B[0;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)",
"Cell \u001B[0;32mIn[3], line 5\u001B[0m\n\u001B[1;32m 3\u001B[0m \u001B[38;5;66;03m# CM-IEWMA\u001B[39;00m\n\u001B[1;32m 4\u001B[0m \u001B[38;5;28mprint\u001B[39m(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mComputing IEWMAs\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m----> 5\u001B[0m iewmas \u001B[38;5;241m=\u001B[39m {\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mpair[\u001B[38;5;241m0\u001B[39m]\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m-\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mpair[\u001B[38;5;241m1\u001B[39m]\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m\"\u001B[39m: \u001B[38;5;28mlist\u001B[39m(iterated_ewma(returns, vola_halflife\u001B[38;5;241m=\u001B[39mpair[\u001B[38;5;241m0\u001B[39m], cov_halflife\u001B[38;5;241m=\u001B[39mpair[\u001B[38;5;241m1\u001B[39m], min_periods_vola\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m63\u001B[39m, min_periods_cov\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m250\u001B[39m)) \u001B[38;5;28;01mfor\u001B[39;00m pair \u001B[38;5;129;01min\u001B[39;00m cm_iewma_pairs}\n\u001B[1;32m 6\u001B[0m Sigmas \u001B[38;5;241m=\u001B[39m {key: {item\u001B[38;5;241m.\u001B[39mtime: item\u001B[38;5;241m.\u001B[39mcovariance \u001B[38;5;28;01mfor\u001B[39;00m item \u001B[38;5;129;01min\u001B[39;00m iewma} \u001B[38;5;28;01mfor\u001B[39;00m key, iewma \u001B[38;5;129;01min\u001B[39;00m iewmas\u001B[38;5;241m.\u001B[39mitems()}\n\u001B[1;32m 7\u001B[0m \u001B[38;5;28mprint\u001B[39m(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mDone computing IEWMAs\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n",
"Cell \u001B[0;32mIn[3], line 5\u001B[0m, in \u001B[0;36m<dictcomp>\u001B[0;34m(.0)\u001B[0m\n\u001B[1;32m 3\u001B[0m \u001B[38;5;66;03m# CM-IEWMA\u001B[39;00m\n\u001B[1;32m 4\u001B[0m \u001B[38;5;28mprint\u001B[39m(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mComputing IEWMAs\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m----> 5\u001B[0m iewmas \u001B[38;5;241m=\u001B[39m {\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mpair[\u001B[38;5;241m0\u001B[39m]\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m-\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mpair[\u001B[38;5;241m1\u001B[39m]\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m\"\u001B[39m: \u001B[38;5;28;43mlist\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43miterated_ewma\u001B[49m\u001B[43m(\u001B[49m\u001B[43mreturns\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mvola_halflife\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mpair\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;241;43m0\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcov_halflife\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mpair\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;241;43m1\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mmin_periods_vola\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;241;43m63\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mmin_periods_cov\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;241;43m250\u001B[39;49m\u001B[43m)\u001B[49m\u001B[43m)\u001B[49m \u001B[38;5;28;01mfor\u001B[39;00m pair \u001B[38;5;129;01min\u001B[39;00m cm_iewma_pairs}\n\u001B[1;32m 6\u001B[0m Sigmas \u001B[38;5;241m=\u001B[39m {key: {item\u001B[38;5;241m.\u001B[39mtime: item\u001B[38;5;241m.\u001B[39mcovariance \u001B[38;5;28;01mfor\u001B[39;00m item \u001B[38;5;129;01min\u001B[39;00m iewma} \u001B[38;5;28;01mfor\u001B[39;00m key, iewma \u001B[38;5;129;01min\u001B[39;00m iewmas\u001B[38;5;241m.\u001B[39mitems()}\n\u001B[1;32m 7\u001B[0m \u001B[38;5;28mprint\u001B[39m(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mDone computing IEWMAs\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n",
"File \u001B[0;32m~/Documents/Stanford/Research/My papers/w_it_ewma/publicRepo/cov_pred_finance/cvx/covariance/ewma.py:160\u001B[0m, in \u001B[0;36miterated_ewma\u001B[0;34m(returns, vola_halflife, cov_halflife, min_periods_vola, min_periods_cov, mean, mu_halflife1, mu_halflife2, clip_at)\u001B[0m\n\u001B[1;32m 152\u001B[0m \u001B[39mif\u001B[39;00m mean:\n\u001B[1;32m 153\u001B[0m m \u001B[39m=\u001B[39m scale_mean(\n\u001B[1;32m 154\u001B[0m vola\u001B[39m=\u001B[39mvola\u001B[39m.\u001B[39mloc[t]\u001B[39m.\u001B[39mvalues, vec1\u001B[39m=\u001B[39mreturns_mean\u001B[39m.\u001B[39mloc[t], vec2\u001B[39m=\u001B[39madj_mean\u001B[39m.\u001B[39mloc[t]\n\u001B[1;32m 155\u001B[0m )\n\u001B[1;32m 157\u001B[0m \u001B[39myield\u001B[39;00m IEWMA(\n\u001B[1;32m 158\u001B[0m time\u001B[39m=\u001B[39mt,\n\u001B[1;32m 159\u001B[0m mean\u001B[39m=\u001B[39mm,\n\u001B[0;32m--> 160\u001B[0m covariance\u001B[39m=\u001B[39mscale_cov(vola\u001B[39m=\u001B[39;49mvola\u001B[39m.\u001B[39;49mloc[t]\u001B[39m.\u001B[39;49mvalues, matrix\u001B[39m=\u001B[39;49mmatrix),\n\u001B[1;32m 161\u001B[0m volatility\u001B[39m=\u001B[39mvola\u001B[39m.\u001B[39mloc[t],\n\u001B[1;32m 162\u001B[0m )\n",
"File \u001B[0;32m~/Documents/Stanford/Research/My papers/w_it_ewma/publicRepo/cov_pred_finance/cvx/covariance/ewma.py:113\u001B[0m, in \u001B[0;36miterated_ewma.<locals>.scale_cov\u001B[0;34m(vola, matrix)\u001B[0m\n\u001B[1;32m 110\u001B[0m v \u001B[39m=\u001B[39m \u001B[39m1\u001B[39m \u001B[39m/\u001B[39m np\u001B[39m.\u001B[39msqrt(np\u001B[39m.\u001B[39mdiagonal(matrix))\u001B[39m.\u001B[39mreshape(\u001B[39m-\u001B[39m\u001B[39m1\u001B[39m, \u001B[39m1\u001B[39m)\n\u001B[1;32m 111\u001B[0m matrix \u001B[39m=\u001B[39m v \u001B[39m*\u001B[39m matrix \u001B[39m*\u001B[39m v\u001B[39m.\u001B[39mT\n\u001B[0;32m--> 113\u001B[0m cov \u001B[39m=\u001B[39m vola\u001B[39m.\u001B[39;49mreshape(\u001B[39m-\u001B[39;49m\u001B[39m1\u001B[39;49m, \u001B[39m1\u001B[39;49m) \u001B[39m*\u001B[39;49m matrix \u001B[39m*\u001B[39;49m vola\u001B[39m.\u001B[39;49mreshape(\u001B[39m1\u001B[39;49m, \u001B[39m-\u001B[39;49m\u001B[39m1\u001B[39;49m)\n\u001B[1;32m 115\u001B[0m \u001B[39mreturn\u001B[39;00m pd\u001B[39m.\u001B[39mDataFrame(cov, index\u001B[39m=\u001B[39mindex, columns\u001B[39m=\u001B[39mcolumns)\n",
"\u001B[0;31mKeyboardInterrupt\u001B[0m: "
"Computing IEWMAs\n",
"Done computing IEWMAs\n"
]
}
],
Expand All @@ -95,10 +91,10 @@
"evalue": "name 'results' is not defined",
"output_type": "error",
"traceback": [
"\u001B[0;31m---------------------------------------------------------------------------\u001B[0m",
"\u001B[0;31mNameError\u001B[0m Traceback (most recent call last)",
"Cell \u001B[0;32mIn[4], line 1\u001B[0m\n\u001B[0;32m----> 1\u001B[0m covariance_no_reg \u001B[38;5;241m=\u001B[39m {result\u001B[38;5;241m.\u001B[39mtime: result\u001B[38;5;241m.\u001B[39mcovariance \u001B[38;5;28;01mfor\u001B[39;00m result \u001B[38;5;129;01min\u001B[39;00m \u001B[43mresults\u001B[49m \u001B[38;5;28;01mif\u001B[39;00m result \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m}\n",
"\u001B[0;31mNameError\u001B[0m: name 'results' is not defined"
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[4], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m covariance_no_reg \u001b[38;5;241m=\u001b[39m {result\u001b[38;5;241m.\u001b[39mtime: result\u001b[38;5;241m.\u001b[39mcovariance \u001b[38;5;28;01mfor\u001b[39;00m result \u001b[38;5;129;01min\u001b[39;00m \u001b[43mresults\u001b[49m \u001b[38;5;28;01mif\u001b[39;00m result \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m}\n",
"\u001b[0;31mNameError\u001b[0m: name 'results' is not defined"
]
}
],
Expand Down Expand Up @@ -1896,10 +1892,10 @@
"evalue": "name 'll_100' is not defined",
"output_type": "error",
"traceback": [
"\u001B[0;31m---------------------------------------------------------------------------\u001B[0m",
"\u001B[0;31mNameError\u001B[0m Traceback (most recent call last)",
"Cell \u001B[0;32mIn[29], line 1\u001B[0m\n\u001B[0;32m----> 1\u001B[0m \u001B[43mll_100\u001B[49m\n",
"\u001B[0;31mNameError\u001B[0m: name 'll_100' is not defined"
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[29], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mll_100\u001b[49m\n",
"\u001b[0;31mNameError\u001b[0m: name 'll_100' is not defined"
]
}
],
Expand Down
Loading

0 comments on commit 84092ce

Please sign in to comment.