ml-finance-python
python scripts for finance machine learning
git clone https://9o.is/git/ml-finance-python.git
lab_204.ipynb
(124339B)
1 {
2 "cells": [
3 {
4 "cell_type": "markdown",
5 "metadata": {},
6 "source": [
7 "# Backtesting: EW vs CW"
8 ]
9 },
10 {
11 "cell_type": "code",
12 "execution_count": 2,
13 "metadata": {},
14 "outputs": [
15 {
16 "name": "stdout",
17 "output_type": "stream",
18 "text": [
19 "The autoreload extension is already loaded. To reload it, use:\n",
20 " %reload_ext autoreload\n"
21 ]
22 }
23 ],
24 "source": [
25 "import numpy as np\n",
26 "import pandas as pd\n",
27 "\n",
28 "import edhec_risk_kit_204 as erk\n",
29 "\n",
30 "%load_ext autoreload\n",
31 "%autoreload 2\n",
32 "ind49_rets = erk.get_ind_returns(weighting=\"vw\", n_inds=49)[\"1974\":]\n",
33 "ind49_mcap = erk.get_ind_market_caps(49, weights=True)[\"1974\":]\n"
34 ]
35 },
36 {
37 "cell_type": "markdown",
38 "metadata": {},
39 "source": [
40 "In this section we'll develop a basic infrastructure to backtest various portfolio construction techniques and compare them. Here we'll start with something quite simple and straightforward - we'll write trivially simple weight-optimizers for Equally Weighted and Cap Weighted portfolios and compare them. Obviously, there are no Covariance estimates required for either one of these weighting schemes. In following sessions we'll enhance these optimizers to use more complex weighting schemes that will rely on covariance estimates."
41 ]
42 },
43 {
44 "cell_type": "code",
45 "execution_count": 3,
46 "metadata": {},
47 "outputs": [],
48 "source": [
49 "def weight_ew(r):\n",
50 " \"\"\"\n",
51 " Returns the weights of the EW portfolio based on the asset returns \"r\" as a DataFrame\n",
52 " \"\"\"\n",
53 " n = len(r.columns)\n",
54 " return pd.Series(1/n, index=r.columns)\n",
55 "\n",
56 "def backtest_ws(r, estimation_window=60, weighting=weight_ew):\n",
57 " \"\"\"\n",
58 " Backtests a given weighting scheme, given some parameters:\n",
59 " r : asset returns to use to build the portfolio\n",
60 " estimation_window: the window to use to estimate parameters\n",
61 " weighting: the weighting scheme to use, must be a function that takes \"r\", and a variable number of keyword-value arguments\n",
62 " \"\"\"\n",
63 " n_periods = r.shape[0]\n",
64 " windows = [(start, start+estimation_window) for start in range(n_periods-estimation_window+1)]\n",
65 " # windows is a list of tuples which gives us the (integer) location of the start and stop (non inclusive)\n",
66 " # for each estimation window\n",
67 " weights = [weighting(r.iloc[win[0]:win[1]]) for win in windows]\n",
68 " # List -> DataFrame\n",
69 " weights = pd.DataFrame(weights, index=r.iloc[estimation_window-1:].index, columns=r.columns)\n",
70 " # return weights\n",
71 " returns = (weights * r).sum(axis=\"columns\", min_count=1) #mincount is to generate NAs if all inputs are NAs\n",
72 " return returns"
73 ]
74 },
75 {
76 "cell_type": "code",
77 "execution_count": 4,
78 "metadata": {},
79 "outputs": [
80 {
81 "data": {
82 "image/png": "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\n",
83 "text/plain": [
84 "<Figure size 864x432 with 1 Axes>"
85 ]
86 },
87 "metadata": {
88 "needs_background": "light"
89 },
90 "output_type": "display_data"
91 }
92 ],
93 "source": [
94 "ewr = backtest_ws(ind49_rets, weighting=weight_ew)\n",
95 "ewi = (1+ewr).cumprod()\n",
96 "ewi.plot(figsize=(12,6), title=\"49 Industries - Equally Weighted\");"
97 ]
98 },
99 {
100 "cell_type": "markdown",
101 "metadata": {},
102 "source": [
103 "Now, let's add capweighting. We'll need to compute capweights, which we've already been provided through the marketcap file. We can refactor the code we've developed in the past to add a convenience function to our toolkit. Note the use of `**kwargs` to be able to take a variable number of keyword arguments to the function so that we can call any weighting function and let that weighting function take care of whatever arguments it needs. We'll have to refactor `weight_ew` with this new signature, but thats the only change (for now) for `weight_ew`."
104 ]
105 },
106 {
107 "cell_type": "code",
108 "execution_count": 5,
109 "metadata": {},
110 "outputs": [],
111 "source": [
112 "def weight_ew(r, **kwargs):\n",
113 " \"\"\"\n",
114 " Returns the weights of the EW portfolio based on the asset returns \"r\" as a DataFrame\n",
115 " \"\"\"\n",
116 " n = len(r.columns)\n",
117 " return pd.Series(1/n, index=r.columns)\n",
118 "\n",
119 "def weight_cw(r, cap_weights, **kwargs):\n",
120 " \"\"\"\n",
121 " Returns the weights of the CW portfolio based on the time series of capweights\n",
122 " \"\"\"\n",
123 " return cap_weights.loc[r.index[1]]\n",
124 "\n",
125 "def backtest_ws(r, estimation_window=60, weighting=weight_ew, **kwargs):\n",
126 " \"\"\"\n",
127 " Backtests a given weighting scheme, given some parameters:\n",
128 " r : asset returns to use to build the portfolio\n",
129 " estimation_window: the window to use to estimate parameters\n",
130 " weighting: the weighting scheme to use, must be a function that takes \"r\", and a variable number of keyword-value arguments\n",
131 " \"\"\"\n",
132 " n_periods = r.shape[0]\n",
133 " # return windows\n",
134 " windows = [(start, start+estimation_window) for start in range(n_periods-estimation_window+1)]\n",
135 " weights = [weighting(r.iloc[win[0]:win[1]], **kwargs) for win in windows]\n",
136 " # convert list of weights to DataFrame\n",
137 " weights = pd.DataFrame(weights, index=r.iloc[estimation_window-1:].index, columns=r.columns)\n",
138 " # return weights\n",
139 " returns = (weights * r).sum(axis=\"columns\", min_count=1) #mincount is to generate NAs if all inputs are NAs\n",
140 " return returns"
141 ]
142 },
143 {
144 "cell_type": "code",
145 "execution_count": 6,
146 "metadata": {},
147 "outputs": [
148 {
149 "data": {
150 "text/html": [
151 "<div>\n",
152 "<style scoped>\n",
153 " .dataframe tbody tr th:only-of-type {\n",
154 " vertical-align: middle;\n",
155 " }\n",
156 "\n",
157 " .dataframe tbody tr th {\n",
158 " vertical-align: top;\n",
159 " }\n",
160 "\n",
161 " .dataframe thead th {\n",
162 " text-align: right;\n",
163 " }\n",
164 "</style>\n",
165 "<table border=\"1\" class=\"dataframe\">\n",
166 " <thead>\n",
167 " <tr style=\"text-align: right;\">\n",
168 " <th></th>\n",
169 " <th>Annualized Return</th>\n",
170 " <th>Annualized Vol</th>\n",
171 " <th>Skewness</th>\n",
172 " <th>Kurtosis</th>\n",
173 " <th>Cornish-Fisher VaR (5%)</th>\n",
174 " <th>Historic CVaR (5%)</th>\n",
175 " <th>Sharpe Ratio</th>\n",
176 " <th>Max Drawdown</th>\n",
177 " </tr>\n",
178 " </thead>\n",
179 " <tbody>\n",
180 " <tr>\n",
181 " <th>EW</th>\n",
182 " <td>0.123921</td>\n",
183 " <td>0.160660</td>\n",
184 " <td>-0.759092</td>\n",
185 " <td>6.659028</td>\n",
186 " <td>0.071404</td>\n",
187 " <td>0.102331</td>\n",
188 " <td>0.568799</td>\n",
189 " <td>-0.528292</td>\n",
190 " </tr>\n",
191 " <tr>\n",
192 " <th>CW</th>\n",
193 " <td>0.120165</td>\n",
194 " <td>0.147544</td>\n",
195 " <td>-0.717960</td>\n",
196 " <td>5.562648</td>\n",
197 " <td>0.065636</td>\n",
198 " <td>0.093769</td>\n",
199 " <td>0.594625</td>\n",
200 " <td>-0.515999</td>\n",
201 " </tr>\n",
202 " </tbody>\n",
203 "</table>\n",
204 "</div>"
205 ],
206 "text/plain": [
207 " Annualized Return Annualized Vol Skewness Kurtosis \\\n",
208 "EW 0.123921 0.160660 -0.759092 6.659028 \n",
209 "CW 0.120165 0.147544 -0.717960 5.562648 \n",
210 "\n",
211 " Cornish-Fisher VaR (5%) Historic CVaR (5%) Sharpe Ratio Max Drawdown \n",
212 "EW 0.071404 0.102331 0.568799 -0.528292 \n",
213 "CW 0.065636 0.093769 0.594625 -0.515999 "
214 ]
215 },
216 "execution_count": 6,
217 "metadata": {},
218 "output_type": "execute_result"
219 },
220 {
221 "data": {
222 "image/png": "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\n",
223 "text/plain": [
224 "<Figure size 864x360 with 1 Axes>"
225 ]
226 },
227 "metadata": {
228 "needs_background": "light"
229 },
230 "output_type": "display_data"
231 }
232 ],
233 "source": [
234 "ewr = backtest_ws(ind49_rets)\n",
235 "cwr = backtest_ws(ind49_rets, weighting=weight_cw, cap_weights=ind49_mcap)\n",
236 "btr = pd.DataFrame({\"EW\": ewr, \"CW\": cwr})\n",
237 "(1+btr).cumprod().plot(figsize=(12,5), title=\"49 Industries - CapWeighted vs Equally Weighted\")\n",
238 "erk.summary_stats(btr.dropna())"
239 ]
240 },
241 {
242 "cell_type": "markdown",
243 "metadata": {},
244 "source": [
245 "# Improving EW with CapWeight Tethering\n",
246 "\n",
247 "Often in practice, we'll want to implement some sort of a modification of a pure strategy. For instance, although Equal Weight portfolios are popular, they'll be constrained in some way - for instance to match the sector weights of the cap-weighted benchmark or to make sure that microcap stocks are not overweighted. The motivation for doing so could be to make a portfolio more tradeable (e.g. some microcaps may not have the liquidity) or to improve the tracking error to the Cap-Weighted index.\n",
248 "\n",
249 "As an illustration of how that can be achieved, we enhance our simple `weight_ew` allocator to (i) drop microcap stocks beyond a particular threshold, and (ii) impose a constraint that ensures that the maximum weight assigned to any stock is no more than some multiple of the weight it would be in a cap-weighted portfolio.\n"
250 ]
251 },
252 {
253 "cell_type": "code",
254 "execution_count": 7,
255 "metadata": {},
256 "outputs": [],
257 "source": [
258 "def weight_ew(r, cap_weights=None, max_cw_mult=None, microcap_threshold=None, **kwargs):\n",
259 " \"\"\"\n",
260 " Returns the weights of the EW portfolio based on the asset returns \"r\" as a DataFrame\n",
261 " If supplied a set of capweights and a capweight tether, it is applied and reweighted \n",
262 " \"\"\"\n",
263 " n = len(r.columns)\n",
264 " ew = pd.Series(1/n, index=r.columns)\n",
265 " if cap_weights is not None:\n",
266 " cw = cap_weights.loc[r.index[0]] # starting cap weight\n",
267 " ## exclude microcaps\n",
268 " if microcap_threshold is not None and microcap_threshold > 0:\n",
269 " microcap = cw < microcap_threshold\n",
270 " ew[microcap] = 0\n",
271 " ew = ew/ew.sum()\n",
272 " #limit weight to a multiple of capweight\n",
273 " if max_cw_mult is not None and max_cw_mult > 0:\n",
274 " ew = np.minimum(ew, cw*max_cw_mult)\n",
275 " ew = ew/ew.sum() #reweight\n",
276 " return ew\n",
277 "\n",
278 "def weight_cw(r, cap_weights, **kwargs):\n",
279 " \"\"\"\n",
280 " Returns the weights of the CW portfolio based on the time series of capweights\n",
281 " \"\"\"\n",
282 " w = cap_weights.loc[r.index[1]]\n",
283 " return w/w.sum()\n",
284 "\n",
285 "def backtest_ws(r, estimation_window=60, weighting=weight_ew, **kwargs):\n",
286 " \"\"\"\n",
287 " Backtests a given weighting scheme, given some parameters:\n",
288 " r : asset returns to use to build the portfolio\n",
289 " estimation_window: the window to use to estimate parameters\n",
290 " weighting: the weighting scheme to use, must be a function that takes \"r\", and a variable number of keyword-value arguments\n",
291 " \"\"\"\n",
292 " n_periods = r.shape[0]\n",
293 " # return windows\n",
294 " windows = [(start, start+estimation_window) for start in range(n_periods-estimation_window+1)]\n",
295 " weights = [weighting(r.iloc[win[0]:win[1]], **kwargs) for win in windows]\n",
296 " # convert to DataFrame\n",
297 " weights = pd.DataFrame(weights, index=r.iloc[estimation_window-1:].index, columns=r.columns)\n",
298 " returns = (weights * r).sum(axis=\"columns\", min_count=1) #mincount is to generate NAs if all inputs are NAs\n",
299 " return returns\n"
300 ]
301 },
302 {
303 "cell_type": "code",
304 "execution_count": 8,
305 "metadata": {},
306 "outputs": [
307 {
308 "data": {
309 "text/html": [
310 "<div>\n",
311 "<style scoped>\n",
312 " .dataframe tbody tr th:only-of-type {\n",
313 " vertical-align: middle;\n",
314 " }\n",
315 "\n",
316 " .dataframe tbody tr th {\n",
317 " vertical-align: top;\n",
318 " }\n",
319 "\n",
320 " .dataframe thead th {\n",
321 " text-align: right;\n",
322 " }\n",
323 "</style>\n",
324 "<table border=\"1\" class=\"dataframe\">\n",
325 " <thead>\n",
326 " <tr style=\"text-align: right;\">\n",
327 " <th></th>\n",
328 " <th>Annualized Return</th>\n",
329 " <th>Annualized Vol</th>\n",
330 " <th>Skewness</th>\n",
331 " <th>Kurtosis</th>\n",
332 " <th>Cornish-Fisher VaR (5%)</th>\n",
333 " <th>Historic CVaR (5%)</th>\n",
334 " <th>Sharpe Ratio</th>\n",
335 " <th>Max Drawdown</th>\n",
336 " </tr>\n",
337 " </thead>\n",
338 " <tbody>\n",
339 " <tr>\n",
340 " <th>EW</th>\n",
341 " <td>0.123921</td>\n",
342 " <td>0.160660</td>\n",
343 " <td>-0.759092</td>\n",
344 " <td>6.659028</td>\n",
345 " <td>0.071404</td>\n",
346 " <td>0.102331</td>\n",
347 " <td>0.568799</td>\n",
348 " <td>-0.528292</td>\n",
349 " </tr>\n",
350 " <tr>\n",
351 " <th>EW-Tethered</th>\n",
352 " <td>0.125572</td>\n",
353 " <td>0.156923</td>\n",
354 " <td>-0.752967</td>\n",
355 " <td>6.187433</td>\n",
356 " <td>0.069778</td>\n",
357 " <td>0.099191</td>\n",
358 " <td>0.592597</td>\n",
359 " <td>-0.530654</td>\n",
360 " </tr>\n",
361 " <tr>\n",
362 " <th>CW</th>\n",
363 " <td>0.119761</td>\n",
364 " <td>0.147661</td>\n",
365 " <td>-0.726933</td>\n",
366 " <td>5.621768</td>\n",
367 " <td>0.065773</td>\n",
368 " <td>0.093909</td>\n",
369 " <td>0.591491</td>\n",
370 " <td>-0.516647</td>\n",
371 " </tr>\n",
372 " </tbody>\n",
373 "</table>\n",
374 "</div>"
375 ],
376 "text/plain": [
377 " Annualized Return Annualized Vol Skewness Kurtosis \\\n",
378 "EW 0.123921 0.160660 -0.759092 6.659028 \n",
379 "EW-Tethered 0.125572 0.156923 -0.752967 6.187433 \n",
380 "CW 0.119761 0.147661 -0.726933 5.621768 \n",
381 "\n",
382 " Cornish-Fisher VaR (5%) Historic CVaR (5%) Sharpe Ratio \\\n",
383 "EW 0.071404 0.102331 0.568799 \n",
384 "EW-Tethered 0.069778 0.099191 0.592597 \n",
385 "CW 0.065773 0.093909 0.591491 \n",
386 "\n",
387 " Max Drawdown \n",
388 "EW -0.528292 \n",
389 "EW-Tethered -0.530654 \n",
390 "CW -0.516647 "
391 ]
392 },
393 "execution_count": 8,
394 "metadata": {},
395 "output_type": "execute_result"
396 },
397 {
398 "data": {
399 "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsYAAAEvCAYAAABGywdiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOzdaXiV1bn/8e/amROSkDkkAcIYJplncESLUxXEsdah1aJttfa0/Vts7dFaW63tOT3VVq1VW6tVS1WkjoCIggZUhhAgjBnIPM9z9t7r/2JjAAmZIQF+n+vi2tnPWut+7ie8uVmsZy1jrUVERERE5Ezn6OsERERERET6AxXGIiIiIiKoMBYRERERAVQYi4iIiIgAKoxFRERERAAVxiIiIiIiAHj3dQIAkZGRNjExsa/TEBEREZHT3JYtW0qttVFttfWLwjgxMZHNmzf3dRoiIiIicpozxhw8XpuWUoiIiIiIoMJYRERERARQYSwiIiIiAvSTNcZtaWlpITc3l8bGxr5ORQB/f38SEhLw8fHp61REREREToh+Wxjn5uYSHBxMYmIixpi+TueMZq2lrKyM3Nxchg0b1tfpiIiIiJwQ/XYpRWNjIxERESqK+wFjDBEREZq9FxERkdNavy2MARXF/Yj+LkREROR0168L477m5eXF5MmTW/88+uijrFy5kkWLFrX2eeSRRxg5cmTr97feeosrrriiL9IVERERkR7ot2uM+4OAgABSUlKOulZSUsLSpUtbv2/cuJGQkBCKi4uJjo4mOTmZefPmnexURURERKSHNGPcRVFRUYSGhnLgwAEA8vLyWLJkCcnJyQAkJyczd+7cvkxRRERERAAqsyF/W6e7qzBuR0NDw1FLKf71r38BMHfuXJKTk9m7dy+jRo1i9uzZJCcn43Q6SU1NZcaMGX2cuYiIiMgZLuUV+NNM+MeVnR5ySiyl+OVbu0jLr+7VmOPiQnjg6+Pb7dPWUgqAefPmkZycjMvlYs6cOcycOZOHHnqIbdu2kZSUhL+/f6/mKiIiIiJdtPYhcDZ4/jTXg29gh0M0Y9wNX84YJycnM2fOHIKDg2lsbOSjjz7S+mIRERGRvladDzX5ED3O872hvFPDTokZ445mdk+2cePGkZ+fz4YNG3jyyScBmDx5Mk8//TSPPfZYH2cnIiIicobL2+L5HHURFKdBfTmEJnQ4TDPG7fjqGuNly5YBnj19Z82aRWRkZOsRyXPmzCEjI0Mv3omIiIj0tbwt4PCGYed6vteXdWrYKTFj3FdcLtdx2955552jvt96663ceuutJzgjEREREelQ7maImQAh8Z7vnVxKoRljERERETm1uFqgtrjtNrcb8lMgYToEhnuu1aswFhEREZHT0ed/hSemg7P52LaqbGiugdizICDMc02FsYiIiIiclkr2QFMVVOce21a6H4BtDTH8+PU0mrwGdHqNsQpjERERETm11BR4PisOHttWug+Au9fU8vrWXIqcgdiGcsjeBM117YZVYSwiIiIipxRbne/5oTL72MaSvTT6hJHbFMjC8TGU22BswQ54/mLY/kq7cVUYi4iIiMgppancs4TCWZ51TJst3cd+9yAmxIdw7uhoKuwAHKV7AAt17S+pUGHcDi8vr6P2MX700UdZuXIlixYtau3zyCOPMHLkyNbvb731FldcccVRcVatWtUaY8CAASQlJTF58mRuvvnm4947IyODV199tfX7s88+yw9/+MNefLq2OZ1OBg4ceMLvIyIiItItLY34t1QC0FCceUyzu2QfO5tiuGpKAqEBPpQTfLixqbrd0NrHuB0BAQGkpKQcda2kpISlS5e2ft+4cSMhISEUFxcTHR1NcnLyMcdCL1y4kIULFwJw3nnn8fvf/57p06e3e+8vC+Prr7++V57F6XTi7a2/bhERETnF1eS3/uj+6oxxfTleDWWk2zguiguhxWUptJ0vjDVj3EVRUVGEhoZy4MABAPLy8liyZAnJyckAJCcnd+n0O6fTyY9+9CNmzpzJxIkTefbZZwFYtmwZ69atY/LkyTz++OMA5ObmsnDhQkaNGsV9993XGuO9995jzpw5TJ06leuuu466Os/C8oSEBH71q18xb948VqxYwf79+1m4cCHTpk3jnHPOYd8+z+L09PR0Zs2axYwZM3jwwQd7/DsSEREROWGqPS/e5dkIfGq+sitF0S4A0m0co2OCPTPGRxXGNe2GVmHcjq8eCf2vf/0LgLlz55KcnMzevXsZNWoUs2fPJjk5GafTSWpqKjNmzOj0PZ555hmio6P5/PPP+eKLL/jzn/9MdnY2jz76KOeffz4pKSn84Ac/AGD79u289tprpKam8tJLL5Gfn09xcTGPPvooa9euZevWrUycOJE/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\n",
400 "text/plain": [
401 "<Figure size 864x360 with 1 Axes>"
402 ]
403 },
404 "metadata": {
405 "needs_background": "light"
406 },
407 "output_type": "display_data"
408 }
409 ],
410 "source": [
411 "ewr = backtest_ws(ind49_rets)\n",
412 "ewtr = backtest_ws(ind49_rets, cap_weights=ind49_mcap, max_cw_mult=5, microcap_threshold=.005)\n",
413 "cwr = backtest_ws(ind49_rets, weighting=weight_cw, cap_weights=ind49_mcap)\n",
414 "btr = pd.DataFrame({\"EW\": ewr, \"EW-Tethered\": ewtr, \"CW\": cwr})\n",
415 "(1+btr).cumprod().plot(figsize=(12,5))\n",
416 "erk.summary_stats(btr.dropna())"
417 ]
418 },
419 {
420 "cell_type": "markdown",
421 "metadata": {},
422 "source": [
423 "Don't forget to add the code we've just developed to the toolkit, we're going to use it in future sessions!\n",
424 "\n",
425 "## A Final Note ...\n",
426 "\n",
427 "One of the motivations of adding the tethering constraint is to improve tracking error to the cap-weighted portfolio. Let's see if we did manage to achieve that:"
428 ]
429 },
430 {
431 "cell_type": "code",
432 "execution_count": 9,
433 "metadata": {},
434 "outputs": [
435 {
436 "data": {
437 "text/plain": [
438 "(0.23248147494738433, 0.1553623086424526)"
439 ]
440 },
441 "execution_count": 9,
442 "metadata": {},
443 "output_type": "execute_result"
444 }
445 ],
446 "source": [
447 "erk.tracking_error(ewr, cwr),erk.tracking_error(ewtr, cwr)"
448 ]
449 },
450 {
451 "cell_type": "code",
452 "execution_count": null,
453 "metadata": {},
454 "outputs": [],
455 "source": []
456 }
457 ],
458 "metadata": {
459 "kernelspec": {
460 "display_name": "Python 3",
461 "language": "python",
462 "name": "python3"
463 },
464 "language_info": {
465 "codemirror_mode": {
466 "name": "ipython",
467 "version": 3
468 },
469 "file_extension": ".py",
470 "mimetype": "text/x-python",
471 "name": "python",
472 "nbconvert_exporter": "python",
473 "pygments_lexer": "ipython3",
474 "version": "3.8.8"
475 }
476 },
477 "nbformat": 4,
478 "nbformat_minor": 4
479 }