Skip to content

Commit

Permalink
minor change
Browse files Browse the repository at this point in the history
  • Loading branch information
kasperjo committed Mar 1, 2024
1 parent 1fdf9b1 commit 5dca40c
Showing 1 changed file with 230 additions and 8 deletions.
238 changes: 230 additions & 8 deletions experiments/extensions/playground.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 All @@ -27,16 +36,229 @@
},
{
"cell_type": "code",
"execution_count": 319,
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"returns = pd.read_csv(\"../data/returns_large_universe.csv\", index_col=0, parse_dates=True)\n",
"# returns = pd.read_csv(\"../data/returns_large_universe.csv\", index_col=0, parse_dates=True)\n",
"\n",
"# # Risk-free rate\n",
"# FF = pd.read_csv('../data/ff5.csv', index_col=0, parse_dates=True)\n",
"# rf_rate = pd.DataFrame(FF.loc[:,\"RF\"])\n",
"# rf_rate.index = pd.to_datetime(rf_rate.index, format='%Y%m%d')\n",
"\n",
"returns = pd.read_csv('../data/ff5_no_rf.csv', index_col=0, parse_dates=True)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"cm_iewma_pairs = [(5, 10), (10, 21), (21, 63), (63, 125), (125, 250)]\n",
"\n",
"# CM-IEWMA\n",
"iewmas = {f\"{pair[0]}-{pair[1]}\": list(iterated_ewma(returns, vola_halflife=pair[0], cov_halflife=pair[1], min_periods_vola=63, min_periods_cov=63)) for pair in cm_iewma_pairs}\n",
"Sigmas = {key: {item.time: item.covariance for item in iewma} for key, iewma in iewmas.items()}\n",
"\n",
"# Regularize the first covariance matrix\n",
"fast = cm_iewma_pairs[0]; fast = f\"{fast[0]}-{fast[1]}\"\n",
"Sigmas[fast] = add_to_diagonal(Sigmas[fast], lamda=0.05)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 3, 34]"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = [1,3,34, 0]\n",
"\n",
"a[-5:3]"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/kasper/Documents/Stanford/Research/My papers/w_it_ewma/publicRepo/cov_pred_finance/.venv/lib/python3.9/site-packages/cvxpy/reductions/solvers/solving_chain.py:336: FutureWarning: \n",
" Your problem is being solved with the ECOS solver by default. Starting in \n",
" CVXPY 1.5.0, Clarabel will be used as the default solver instead. To continue \n",
" using ECOS, specify the ECOS solver explicitly using the ``solver=cp.ECOS`` \n",
" argument to the ``problem.solve`` method.\n",
" \n",
" warnings.warn(ECOS_DEPRECATION_MSG, FutureWarning)\n"
]
},
{
"ename": "ValueError",
"evalue": "Invalid dimensions (125, 5) for Parameter value.",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[29], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m times \u001b[39m=\u001b[39m \u001b[39mlist\u001b[39m(returns\u001b[39m.\u001b[39mindex[\u001b[39m5000\u001b[39m:\u001b[39m5005\u001b[39m]) \u001b[39m+\u001b[39m \u001b[39mlist\u001b[39m(returns\u001b[39m.\u001b[39mindex[\u001b[39m5020\u001b[39m:\u001b[39m5025\u001b[39m])\n\u001b[0;32m----> 3\u001b[0m results \u001b[39m=\u001b[39m \u001b[39mlist\u001b[39;49m(from_sigmas(Sigmas, returns, means\u001b[39m=\u001b[39;49m\u001b[39mNone\u001b[39;49;00m)\u001b[39m.\u001b[39;49msolve(times\u001b[39m=\u001b[39;49mtimes, window\u001b[39m=\u001b[39;49m\u001b[39m10\u001b[39;49m))\n\u001b[1;32m 5\u001b[0m cm_iewma \u001b[39m=\u001b[39m {result\u001b[39m.\u001b[39mtime: result\u001b[39m.\u001b[39mcovariance \u001b[39mfor\u001b[39;00m result \u001b[39min\u001b[39;00m results}\n\u001b[1;32m 6\u001b[0m weights \u001b[39m=\u001b[39m {result\u001b[39m.\u001b[39mtime: result\u001b[39m.\u001b[39mweights \u001b[39mfor\u001b[39;00m result \u001b[39min\u001b[39;00m results}\n",
"File \u001b[0;32m~/Documents/Stanford/Research/My papers/w_it_ewma/publicRepo/cov_pred_finance/cvx/covariance/combination.py:294\u001b[0m, in \u001b[0;36m_CovarianceCombination.solve\u001b[0;34m(self, window, times, **kwargs)\u001b[0m\n\u001b[1;32m 291\u001b[0m problem\u001b[39m.\u001b[39m_construct_problem()\n\u001b[1;32m 293\u001b[0m \u001b[39mfor\u001b[39;00m time, AA \u001b[39min\u001b[39;00m A\u001b[39m.\u001b[39mitems():\n\u001b[0;32m--> 294\u001b[0m problem\u001b[39m.\u001b[39;49mA_param\u001b[39m.\u001b[39;49mvalue \u001b[39m=\u001b[39m AA\n\u001b[1;32m 295\u001b[0m problem\u001b[39m.\u001b[39mP_chol_param\u001b[39m.\u001b[39mvalue \u001b[39m=\u001b[39m P_chol[time]\n\u001b[1;32m 297\u001b[0m \u001b[39mtry\u001b[39;00m:\n",
"File \u001b[0;32m~/Documents/Stanford/Research/My papers/w_it_ewma/publicRepo/cov_pred_finance/.venv/lib/python3.9/site-packages/cvxpy/expressions/constants/parameter.py:87\u001b[0m, in \u001b[0;36mParameter.value\u001b[0;34m(self, val)\u001b[0m\n\u001b[1;32m 85\u001b[0m \u001b[39m@value\u001b[39m\u001b[39m.\u001b[39msetter\n\u001b[1;32m 86\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mvalue\u001b[39m(\u001b[39mself\u001b[39m, val):\n\u001b[0;32m---> 87\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_value \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_validate_value(val)\n",
"File \u001b[0;32m~/Documents/Stanford/Research/My papers/w_it_ewma/publicRepo/cov_pred_finance/.venv/lib/python3.9/site-packages/cvxpy/expressions/leaf.py:394\u001b[0m, in \u001b[0;36mLeaf._validate_value\u001b[0;34m(self, val)\u001b[0m\n\u001b[1;32m 392\u001b[0m val \u001b[39m=\u001b[39m intf\u001b[39m.\u001b[39mconvert(val)\n\u001b[1;32m 393\u001b[0m \u001b[39mif\u001b[39;00m intf\u001b[39m.\u001b[39mshape(val) \u001b[39m!=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mshape:\n\u001b[0;32m--> 394\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\n\u001b[1;32m 395\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mInvalid dimensions \u001b[39m\u001b[39m%s\u001b[39;00m\u001b[39m for \u001b[39m\u001b[39m%s\u001b[39;00m\u001b[39m value.\u001b[39m\u001b[39m\"\u001b[39m \u001b[39m%\u001b[39m\n\u001b[1;32m 396\u001b[0m (intf\u001b[39m.\u001b[39mshape(val), \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m\u001b[39m__class__\u001b[39m\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m)\n\u001b[1;32m 397\u001b[0m )\n\u001b[1;32m 398\u001b[0m projection \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mproject(val)\n\u001b[1;32m 399\u001b[0m \u001b[39m# ^ might be a numpy array, or sparse scipy matrix.\u001b[39;00m\n",
"\u001b[0;31mValueError\u001b[0m: Invalid dimensions (125, 5) for Parameter value."
]
}
],
"source": [
"times = list(returns.index[5000:5020])\n",
"\n",
"results = list(from_sigmas(Sigmas, returns, means=None).solve(times=times, window=10))\n",
"\n",
"cm_iewma = {result.time: result.covariance for result in results}\n",
"weights = {result.time: result.weights for result in results}"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"([1,2,3] == np.array([3,2,3])).all()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[Timestamp('1983-06-02 00:00:00'),\n",
" Timestamp('1983-06-03 00:00:00'),\n",
" Timestamp('1983-06-06 00:00:00'),\n",
" Timestamp('1983-06-07 00:00:00'),\n",
" Timestamp('1983-06-08 00:00:00'),\n",
" Timestamp('1983-06-09 00:00:00'),\n",
" Timestamp('1983-06-10 00:00:00'),\n",
" Timestamp('1983-06-13 00:00:00'),\n",
" Timestamp('1983-06-14 00:00:00'),\n",
" Timestamp('1983-06-15 00:00:00'),\n",
" Timestamp('1983-06-16 00:00:00'),\n",
" Timestamp('1983-06-17 00:00:00'),\n",
" Timestamp('1983-06-20 00:00:00'),\n",
" Timestamp('1983-06-21 00:00:00'),\n",
" Timestamp('1983-06-22 00:00:00'),\n",
" Timestamp('1983-06-23 00:00:00'),\n",
" Timestamp('1983-06-24 00:00:00'),\n",
" Timestamp('1983-06-27 00:00:00'),\n",
" Timestamp('1983-06-28 00:00:00'),\n",
" Timestamp('1983-06-29 00:00:00')]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"times is None"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"ename": "LinAlgError",
"evalue": "Matrix is not positive definite",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mLinAlgError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[8], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m times \u001b[39m=\u001b[39m returns\u001b[39m.\u001b[39mindex[\u001b[39m5000\u001b[39m:\u001b[39m5020\u001b[39m]\n\u001b[0;32m----> 3\u001b[0m results \u001b[39m=\u001b[39m \u001b[39mlist\u001b[39m(from_sigmas(Sigmas, returns, means\u001b[39m=\u001b[39;49m\u001b[39mNone\u001b[39;49;00m)\u001b[39m.\u001b[39msolve(window\u001b[39m=\u001b[39m\u001b[39m10\u001b[39m))\n\u001b[1;32m 5\u001b[0m cm_iewma \u001b[39m=\u001b[39m {result\u001b[39m.\u001b[39mtime: result\u001b[39m.\u001b[39mcovariance \u001b[39mfor\u001b[39;00m result \u001b[39min\u001b[39;00m results}\n\u001b[1;32m 6\u001b[0m weights \u001b[39m=\u001b[39m {result\u001b[39m.\u001b[39mtime: result\u001b[39m.\u001b[39mweights \u001b[39mfor\u001b[39;00m result \u001b[39min\u001b[39;00m results}\n",
"File \u001b[0;32m~/Documents/Stanford/Research/My papers/w_it_ewma/publicRepo/cov_pred_finance/cvx/covariance/combination.py:152\u001b[0m, in \u001b[0;36mfrom_sigmas\u001b[0;34m(sigmas, returns, means)\u001b[0m\n\u001b[1;32m 151\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mfrom_sigmas\u001b[39m(sigmas, returns, means\u001b[39m=\u001b[39m\u001b[39mNone\u001b[39;00m):\n\u001b[0;32m--> 152\u001b[0m \u001b[39mreturn\u001b[39;00m _CovarianceCombination(sigmas\u001b[39m=\u001b[39;49msigmas, returns\u001b[39m=\u001b[39;49mreturns, means\u001b[39m=\u001b[39;49mmeans)\n",
"File \u001b[0;32m~/Documents/Stanford/Research/My papers/w_it_ewma/publicRepo/cov_pred_finance/cvx/covariance/combination.py:187\u001b[0m, in \u001b[0;36m_CovarianceCombination.__init__\u001b[0;34m(self, sigmas, returns, means)\u001b[0m\n\u001b[1;32m 183\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__returns \u001b[39m=\u001b[39m returns\n\u001b[1;32m 185\u001b[0m \u001b[39m# all those quantities don't depend on the window size\u001b[39;00m\n\u001b[1;32m 186\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__Ls \u001b[39m=\u001b[39m pd\u001b[39m.\u001b[39mDataFrame(\n\u001b[0;32m--> 187\u001b[0m {k: _cholesky_precision(sigma) \u001b[39mfor\u001b[39;00m k, sigma \u001b[39min\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39msigmas\u001b[39m.\u001b[39mitems()}\n\u001b[1;32m 188\u001b[0m )\n\u001b[1;32m 189\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__Ls_shifted \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__Ls\u001b[39m.\u001b[39mshift(\u001b[39m1\u001b[39m)\u001b[39m.\u001b[39mdropna()\n\u001b[1;32m 190\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__nus \u001b[39m=\u001b[39m pd\u001b[39m.\u001b[39mDataFrame(\n\u001b[1;32m 191\u001b[0m {key: _nu(Ls, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mmeans[key]) \u001b[39mfor\u001b[39;00m key, Ls \u001b[39min\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__Ls\u001b[39m.\u001b[39mitems()}\n\u001b[1;32m 192\u001b[0m )\n",
"File \u001b[0;32m~/Documents/Stanford/Research/My papers/w_it_ewma/publicRepo/cov_pred_finance/cvx/covariance/combination.py:187\u001b[0m, in \u001b[0;36m<dictcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 183\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__returns \u001b[39m=\u001b[39m returns\n\u001b[1;32m 185\u001b[0m \u001b[39m# all those quantities don't depend on the window size\u001b[39;00m\n\u001b[1;32m 186\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__Ls \u001b[39m=\u001b[39m pd\u001b[39m.\u001b[39mDataFrame(\n\u001b[0;32m--> 187\u001b[0m {k: _cholesky_precision(sigma) \u001b[39mfor\u001b[39;00m k, sigma \u001b[39min\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39msigmas\u001b[39m.\u001b[39mitems()}\n\u001b[1;32m 188\u001b[0m )\n\u001b[1;32m 189\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__Ls_shifted \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__Ls\u001b[39m.\u001b[39mshift(\u001b[39m1\u001b[39m)\u001b[39m.\u001b[39mdropna()\n\u001b[1;32m 190\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__nus \u001b[39m=\u001b[39m pd\u001b[39m.\u001b[39mDataFrame(\n\u001b[1;32m 191\u001b[0m {key: _nu(Ls, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mmeans[key]) \u001b[39mfor\u001b[39;00m key, Ls \u001b[39min\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__Ls\u001b[39m.\u001b[39mitems()}\n\u001b[1;32m 192\u001b[0m )\n",
"File \u001b[0;32m~/Documents/Stanford/Research/My papers/w_it_ewma/publicRepo/cov_pred_finance/cvx/covariance/combination.py:34\u001b[0m, in \u001b[0;36m_cholesky_precision\u001b[0;34m(cov)\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_cholesky_precision\u001b[39m(cov):\n\u001b[1;32m 29\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m 30\u001b[0m \u001b[39m Computes Cholesky factor of the inverse of each covariance matrix in cov\u001b[39;00m\n\u001b[1;32m 31\u001b[0m \n\u001b[1;32m 32\u001b[0m \u001b[39m param cov: dictionary of covariance matrices {time: Sigma}\u001b[39;00m\n\u001b[1;32m 33\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 34\u001b[0m \u001b[39mreturn\u001b[39;00m {\n\u001b[1;32m 35\u001b[0m time: np\u001b[39m.\u001b[39mlinalg\u001b[39m.\u001b[39mcholesky(np\u001b[39m.\u001b[39mlinalg\u001b[39m.\u001b[39minv(item\u001b[39m.\u001b[39mvalues))\n\u001b[1;32m 36\u001b[0m \u001b[39mfor\u001b[39;00m time, item \u001b[39min\u001b[39;00m cov\u001b[39m.\u001b[39mitems()\n\u001b[1;32m 37\u001b[0m }\n",
"File \u001b[0;32m~/Documents/Stanford/Research/My papers/w_it_ewma/publicRepo/cov_pred_finance/cvx/covariance/combination.py:35\u001b[0m, in \u001b[0;36m<dictcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_cholesky_precision\u001b[39m(cov):\n\u001b[1;32m 29\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m 30\u001b[0m \u001b[39m Computes Cholesky factor of the inverse of each covariance matrix in cov\u001b[39;00m\n\u001b[1;32m 31\u001b[0m \n\u001b[1;32m 32\u001b[0m \u001b[39m param cov: dictionary of covariance matrices {time: Sigma}\u001b[39;00m\n\u001b[1;32m 33\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[1;32m 34\u001b[0m \u001b[39mreturn\u001b[39;00m {\n\u001b[0;32m---> 35\u001b[0m time: np\u001b[39m.\u001b[39;49mlinalg\u001b[39m.\u001b[39;49mcholesky(np\u001b[39m.\u001b[39;49mlinalg\u001b[39m.\u001b[39;49minv(item\u001b[39m.\u001b[39;49mvalues))\n\u001b[1;32m 36\u001b[0m \u001b[39mfor\u001b[39;00m time, item \u001b[39min\u001b[39;00m cov\u001b[39m.\u001b[39mitems()\n\u001b[1;32m 37\u001b[0m }\n",
"File \u001b[0;32m<__array_function__ internals>:180\u001b[0m, in \u001b[0;36mcholesky\u001b[0;34m(*args, **kwargs)\u001b[0m\n",
"File \u001b[0;32m~/Documents/Stanford/Research/My papers/w_it_ewma/publicRepo/cov_pred_finance/.venv/lib/python3.9/site-packages/numpy/linalg/linalg.py:770\u001b[0m, in \u001b[0;36mcholesky\u001b[0;34m(a)\u001b[0m\n\u001b[1;32m 768\u001b[0m t, result_t \u001b[39m=\u001b[39m _commonType(a)\n\u001b[1;32m 769\u001b[0m signature \u001b[39m=\u001b[39m \u001b[39m'\u001b[39m\u001b[39mD->D\u001b[39m\u001b[39m'\u001b[39m \u001b[39mif\u001b[39;00m isComplexType(t) \u001b[39melse\u001b[39;00m \u001b[39m'\u001b[39m\u001b[39md->d\u001b[39m\u001b[39m'\u001b[39m\n\u001b[0;32m--> 770\u001b[0m r \u001b[39m=\u001b[39m gufunc(a, signature\u001b[39m=\u001b[39;49msignature, extobj\u001b[39m=\u001b[39;49mextobj)\n\u001b[1;32m 771\u001b[0m \u001b[39mreturn\u001b[39;00m wrap(r\u001b[39m.\u001b[39mastype(result_t, copy\u001b[39m=\u001b[39m\u001b[39mFalse\u001b[39;00m))\n",
"File \u001b[0;32m~/Documents/Stanford/Research/My papers/w_it_ewma/publicRepo/cov_pred_finance/.venv/lib/python3.9/site-packages/numpy/linalg/linalg.py:92\u001b[0m, in \u001b[0;36m_raise_linalgerror_nonposdef\u001b[0;34m(err, flag)\u001b[0m\n\u001b[1;32m 91\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_raise_linalgerror_nonposdef\u001b[39m(err, flag):\n\u001b[0;32m---> 92\u001b[0m \u001b[39mraise\u001b[39;00m LinAlgError(\u001b[39m\"\u001b[39m\u001b[39mMatrix is not positive definite\u001b[39m\u001b[39m\"\u001b[39m)\n",
"\u001b[0;31mLinAlgError\u001b[0m: Matrix is not positive definite"
]
}
],
"source": [
"times = returns.index[5000:5020]\n",
"\n",
"results = list(from_sigmas(Sigmas, returns, means=None).solve(window=10))\n",
"\n",
"# Risk-free rate\n",
"FF = pd.read_csv('../data/ff5.csv', index_col=0, parse_dates=True)\n",
"rf_rate = pd.DataFrame(FF.loc[:,\"RF\"])\n",
"rf_rate.index = pd.to_datetime(rf_rate.index, format='%Y%m%d')"
"cm_iewma = {result.time: result.covariance for result in results}\n",
"weights = {result.time: result.weights for result in results}"
]
},
{
Expand Down

0 comments on commit 5dca40c

Please sign in to comment.