├── Analisis_Oro_SP500.ipynb ├── Beta_indicador.ipynb ├── Dollar_impact.ipynb ├── Duo_renta_variable_bonos.ipynb ├── K-Means.ipynb ├── README.md ├── Relacion_TLT_SPY.ipynb └── Widgets ├── Ipywidgets_Parte1.ipynb ├── Ipywidgets_Parte2.ipynb ├── README.md └── SP500_Mensual.csv /README.md: -------------------------------------------------------------------------------- 1 | # Analisis_con_Python 2 | Soporte para los artículos de análisis con Python de http://estrategiastrading.com/ 3 | -------------------------------------------------------------------------------- /Widgets/Ipywidgets_Parte1.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Utilizar IPython widgets\n", 8 | "La idea de este notebook es aprender a utilizar los widgets de Ipython.
\n", 9 | "\n", 10 | "Artículo completo en Estrategias de Trading: https://estrategiastrading.com/widgets-interactivos-en-python-ipywidgets/\n", 11 | "\n", 12 | "
\n", 13 | "\n", 14 | "(Recordar que hay que instalar primero las librerías que nos falten: en este caso ipywidgets
\n", 15 | "\n", 16 | "pip install ipywidgets
\n", 17 | "\n", 18 | "jupyter nbextension enable --py widgetsnbextension) \n", 19 | "\n", 20 | "En el caso de JupyterLab:
jupyter labextension install @jupyter-widgets/jupyterlab-manager \n", 21 | "
Yo también he necesitado intalar nodejs
\n", 22 | "Más instrucciones sobre intalación y compatibilidades: https://github.com/mwcraig/scipy2017-jupyter-widgets-tutorial/blob/master/README.md\n", 23 | "\n", 24 | "## 1. Cargar librerías y paquetes" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": 1, 30 | "metadata": {}, 31 | "outputs": [], 32 | "source": [ 33 | "import ipywidgets as widgets" 34 | ] 35 | }, 36 | { 37 | "cell_type": "markdown", 38 | "metadata": {}, 39 | "source": [ 40 | "## 2. Ejemplos de widgets sencillos\n", 41 | "\n", 42 | "### 2.1. Widgets numéricos" 43 | ] 44 | }, 45 | { 46 | "cell_type": "code", 47 | "execution_count": 2, 48 | "metadata": {}, 49 | "outputs": [ 50 | { 51 | "data": { 52 | "application/vnd.jupyter.widget-view+json": { 53 | "model_id": "c6709753c062487eb0582ff3b96ca4db", 54 | "version_major": 2, 55 | "version_minor": 0 56 | }, 57 | "text/plain": [ 58 | "IntSlider(value=0)" 59 | ] 60 | }, 61 | "metadata": {}, 62 | "output_type": "display_data" 63 | } 64 | ], 65 | "source": [ 66 | "slider = widgets.IntSlider()\n", 67 | "display(slider)" 68 | ] 69 | }, 70 | { 71 | "cell_type": "markdown", 72 | "metadata": {}, 73 | "source": [ 74 | "Para poder leer el valor de un widget necesitamos acceder a su propiedad \"value\". Si mueves el cursor del widget, debajo al ejecutar la celda value su valor se actualizará" 75 | ] 76 | }, 77 | { 78 | "cell_type": "code", 79 | "execution_count": 4, 80 | "metadata": {}, 81 | "outputs": [ 82 | { 83 | "data": { 84 | "text/plain": [ 85 | "39" 86 | ] 87 | }, 88 | "execution_count": 4, 89 | "metadata": {}, 90 | "output_type": "execute_result" 91 | } 92 | ], 93 | "source": [ 94 | "slider.value" 95 | ] 96 | }, 97 | { 98 | "cell_type": "code", 99 | "execution_count": 5, 100 | "metadata": {}, 101 | "outputs": [ 102 | { 103 | "data": { 104 | "application/vnd.jupyter.widget-view+json": { 105 | "model_id": "f7ff987e95a24154a6d6e14d57a7cfe9", 106 | "version_major": 2, 107 | "version_minor": 0 108 | }, 109 | "text/plain": [ 110 | "IntSlider(value=0)" 111 | ] 112 | }, 113 | "metadata": {}, 114 | "output_type": "display_data" 115 | }, 116 | { 117 | "data": { 118 | "application/vnd.jupyter.widget-view+json": { 119 | "model_id": "0e9b71f118a84931920786d19385d408", 120 | "version_major": 2, 121 | "version_minor": 0 122 | }, 123 | "text/plain": [ 124 | "IntText(value=0)" 125 | ] 126 | }, 127 | "metadata": {}, 128 | "output_type": "display_data" 129 | } 130 | ], 131 | "source": [ 132 | "#Conectar el valor de dos widgets\n", 133 | "\n", 134 | "slider = widgets.IntSlider()\n", 135 | "text = widgets.IntText()\n", 136 | "display(slider, text)\n", 137 | "\n", 138 | "widgets.jslink((slider, 'value'), (text, 'value'));" 139 | ] 140 | }, 141 | { 142 | "cell_type": "code", 143 | "execution_count": 6, 144 | "metadata": {}, 145 | "outputs": [ 146 | { 147 | "data": { 148 | "application/vnd.jupyter.widget-view+json": { 149 | "model_id": "85f76f460d254bad9e8b5cee4ca359da", 150 | "version_major": 2, 151 | "version_minor": 0 152 | }, 153 | "text/plain": [ 154 | "IntSlider(value=0, description='Nivel de riesgo', max=10, orientation='vertical')" 155 | ] 156 | }, 157 | "metadata": {}, 158 | "output_type": "display_data" 159 | } 160 | ], 161 | "source": [ 162 | "widgets.IntSlider(\n", 163 | " min=0,\n", 164 | " max=10,\n", 165 | " step=1,\n", 166 | " orientation='vertical',\n", 167 | " description= \"Nivel de riesgo\")" 168 | ] 169 | }, 170 | { 171 | "cell_type": "code", 172 | "execution_count": 7, 173 | "metadata": {}, 174 | "outputs": [ 175 | { 176 | "data": { 177 | "application/vnd.jupyter.widget-view+json": { 178 | "model_id": "5a74d0e6135d4c738aaf3c376f477eb3", 179 | "version_major": 2, 180 | "version_minor": 0 181 | }, 182 | "text/plain": [ 183 | "HBox(children=(Label(value='Elija su % de rentabililidad'), FloatSlider(value=0.0)))" 184 | ] 185 | }, 186 | "metadata": {}, 187 | "output_type": "display_data" 188 | } 189 | ], 190 | "source": [ 191 | "# Cuando la descripción es demasiado larga, queda cortada. Entonces es mejor utilizando el widget Label para escribirla \n", 192 | "#y luego añadir el widget que necesitamos\n", 193 | "Rentabilidad = widgets.HBox([widgets.Label(value=\"Elija su % de rentabililidad\"), widgets.FloatSlider()])\n", 194 | "Rentabilidad" 195 | ] 196 | }, 197 | { 198 | "cell_type": "code", 199 | "execution_count": 8, 200 | "metadata": {}, 201 | "outputs": [ 202 | { 203 | "data": { 204 | "application/vnd.jupyter.widget-view+json": { 205 | "model_id": "5a314b989d88419087422a4476b95aa6", 206 | "version_major": 2, 207 | "version_minor": 0 208 | }, 209 | "text/plain": [ 210 | "BoundedIntText(value=7, description='Text:', max=10)" 211 | ] 212 | }, 213 | "metadata": {}, 214 | "output_type": "display_data" 215 | } 216 | ], 217 | "source": [ 218 | "widgets.BoundedIntText(\n", 219 | " value=7,\n", 220 | " min=0,\n", 221 | " max=10,\n", 222 | " step=1,\n", 223 | " description='Text:',\n", 224 | " disabled=False\n", 225 | ")" 226 | ] 227 | }, 228 | { 229 | "cell_type": "code", 230 | "execution_count": 9, 231 | "metadata": {}, 232 | "outputs": [ 233 | { 234 | "data": { 235 | "application/vnd.jupyter.widget-view+json": { 236 | "model_id": "e830c4e145ec40d6a1dc4f1b1bb66d98", 237 | "version_major": 2, 238 | "version_minor": 0 239 | }, 240 | "text/plain": [ 241 | "HBox(children=(Label(value='Aquí puedo elegir cualquier valor:'), IntText(value=0)))" 242 | ] 243 | }, 244 | "metadata": {}, 245 | "output_type": "display_data" 246 | } 247 | ], 248 | "source": [ 249 | "widgets.IntText(\n", 250 | " value=7,\n", 251 | " description='',\n", 252 | " ) \n", 253 | "widgets.HBox([widgets.Label('Aquí puedo elegir cualquier valor:'), widgets.IntText()])" 254 | ] 255 | }, 256 | { 257 | "cell_type": "markdown", 258 | "metadata": {}, 259 | "source": [ 260 | "### 2.2 Widgets de selección" 261 | ] 262 | }, 263 | { 264 | "cell_type": "code", 265 | "execution_count": 10, 266 | "metadata": {}, 267 | "outputs": [ 268 | { 269 | "data": { 270 | "application/vnd.jupyter.widget-view+json": { 271 | "model_id": "36a3b31a7f124ef086f386678a6fce90", 272 | "version_major": 2, 273 | "version_minor": 0 274 | }, 275 | "text/plain": [ 276 | "Checkbox(value=False, description='Casilla de verificación', indent=False)" 277 | ] 278 | }, 279 | "metadata": {}, 280 | "output_type": "display_data" 281 | } 282 | ], 283 | "source": [ 284 | "widgets.Checkbox(\n", 285 | " value=False,\n", 286 | " description='Casilla de verificación',\n", 287 | " disabled=False,\n", 288 | " indent=False\n", 289 | ")" 290 | ] 291 | }, 292 | { 293 | "cell_type": "code", 294 | "execution_count": 11, 295 | "metadata": {}, 296 | "outputs": [ 297 | { 298 | "data": { 299 | "application/vnd.jupyter.widget-view+json": { 300 | "model_id": "ee52251d4fd544c3af320ec5ef84fe25", 301 | "version_major": 2, 302 | "version_minor": 0 303 | }, 304 | "text/plain": [ 305 | "Dropdown(description='Mes:', options=('Enero', 'Febrero', 'Marzo', 'Abril'), value='Enero')" 306 | ] 307 | }, 308 | "metadata": {}, 309 | "output_type": "display_data" 310 | } 311 | ], 312 | "source": [ 313 | "widgets.Dropdown(\n", 314 | " options=['Enero', 'Febrero', 'Marzo','Abril'],\n", 315 | " value='Enero',\n", 316 | " description='Mes:',\n", 317 | " disabled=False,\n", 318 | ")" 319 | ] 320 | }, 321 | { 322 | "cell_type": "code", 323 | "execution_count": 12, 324 | "metadata": {}, 325 | "outputs": [ 326 | { 327 | "data": { 328 | "application/vnd.jupyter.widget-view+json": { 329 | "model_id": "d19d0b27eee14c408feabcd64222d562", 330 | "version_major": 2, 331 | "version_minor": 0 332 | }, 333 | "text/plain": [ 334 | "Select(description='ETF:', index=2, options=('SPY', 'TLT', 'GLD'), value='GLD')" 335 | ] 336 | }, 337 | "metadata": {}, 338 | "output_type": "display_data" 339 | } 340 | ], 341 | "source": [ 342 | "widgets.Select(\n", 343 | " options=['SPY', 'TLT', 'GLD'],\n", 344 | " value='GLD',\n", 345 | " # rows=10,\n", 346 | " description='ETF:',\n", 347 | " disabled=False\n", 348 | ")" 349 | ] 350 | }, 351 | { 352 | "cell_type": "code", 353 | "execution_count": 13, 354 | "metadata": {}, 355 | "outputs": [ 356 | { 357 | "data": { 358 | "application/vnd.jupyter.widget-view+json": { 359 | "model_id": "5c7c8db33f9a445cb5da0ddcce136b82", 360 | "version_major": 2, 361 | "version_minor": 0 362 | }, 363 | "text/plain": [ 364 | "RadioButtons(description='Perfil inversor:', layout=Layout(width='max-content'), options=('Conservador', 'Mode…" 365 | ] 366 | }, 367 | "metadata": {}, 368 | "output_type": "display_data" 369 | } 370 | ], 371 | "source": [ 372 | "widgets.RadioButtons(\n", 373 | " options=['Conservador', 'Moderado', 'Arriesgado'],\n", 374 | " layout={'width': 'max-content'}, \n", 375 | " description='Perfil inversor:',\n", 376 | " disabled=False\n", 377 | ")" 378 | ] 379 | }, 380 | { 381 | "cell_type": "code", 382 | "execution_count": 14, 383 | "metadata": {}, 384 | "outputs": [ 385 | { 386 | "data": { 387 | "application/vnd.jupyter.widget-view+json": { 388 | "model_id": "558aa57c05274af7b10a80603f69355c", 389 | "version_major": 2, 390 | "version_minor": 0 391 | }, 392 | "text/plain": [ 393 | "VBox(children=(Label(value='Seleccione su perfil inversor:'), RadioButtons(layout=Layout(width='max-content'),…" 394 | ] 395 | }, 396 | "metadata": {}, 397 | "output_type": "display_data" 398 | } 399 | ], 400 | "source": [ 401 | "Perfil= widgets.VBox(\n", 402 | " [widgets.Label(value='Seleccione su perfil inversor:'),\n", 403 | " widgets.RadioButtons(options=['Conservador','Moderado','Arriesgado','Estoy en scalping con CDF... eso lo dice todo '],\n", 404 | " layout={'width': 'max-content'})\n", 405 | " ]\n", 406 | ")\n", 407 | "Perfil" 408 | ] 409 | }, 410 | { 411 | "cell_type": "code", 412 | "execution_count": 22, 413 | "metadata": {}, 414 | "outputs": [ 415 | { 416 | "data": { 417 | "application/vnd.jupyter.widget-view+json": { 418 | "model_id": "7cdbf8432c0d4cfcb56ae6c2cd1dd76d", 419 | "version_major": 2, 420 | "version_minor": 0 421 | }, 422 | "text/plain": [ 423 | "ToggleButtons(button_style='info', description='Divisa:', options=('Euro', 'Dolar', 'CHF'), value='Euro')" 424 | ] 425 | }, 426 | "metadata": {}, 427 | "output_type": "display_data" 428 | } 429 | ], 430 | "source": [ 431 | "Divisa = widgets.ToggleButtons(\n", 432 | " options=['Euro', 'Dolar', 'CHF'],\n", 433 | " description='Divisa:',\n", 434 | " disabled=False,\n", 435 | " button_style='info')\n", 436 | "Divisa" 437 | ] 438 | }, 439 | { 440 | "cell_type": "markdown", 441 | "metadata": {}, 442 | "source": [ 443 | "### 2.2 Botones" 444 | ] 445 | }, 446 | { 447 | "cell_type": "code", 448 | "execution_count": 16, 449 | "metadata": {}, 450 | "outputs": [ 451 | { 452 | "data": { 453 | "application/vnd.jupyter.widget-view+json": { 454 | "model_id": "5c372f89efb34e28b755f490c529874f", 455 | "version_major": 2, 456 | "version_minor": 0 457 | }, 458 | "text/plain": [ 459 | "Button(description='Click aquí', style=ButtonStyle())" 460 | ] 461 | }, 462 | "metadata": {}, 463 | "output_type": "display_data" 464 | } 465 | ], 466 | "source": [ 467 | "btn = widgets.Button (description= \"Click aquí\")\n", 468 | "display(btn)\n", 469 | "\n", 470 | "def btn_eventhandler (obj):\n", 471 | " print (\"Gracias por hacer {}, intenta otra vez\".format (obj.description))\n", 472 | " \n", 473 | "btn.on_click(btn_eventhandler)" 474 | ] 475 | }, 476 | { 477 | "cell_type": "markdown", 478 | "metadata": {}, 479 | "source": [ 480 | "### 2.3 Desplegables" 481 | ] 482 | }, 483 | { 484 | "cell_type": "code", 485 | "execution_count": 17, 486 | "metadata": { 487 | "scrolled": true 488 | }, 489 | "outputs": [ 490 | { 491 | "data": { 492 | "application/vnd.jupyter.widget-view+json": { 493 | "model_id": "9e88f24880ff4a7eaf61feb8433e3e1d", 494 | "version_major": 2, 495 | "version_minor": 0 496 | }, 497 | "text/plain": [ 498 | "HBox(children=(Dropdown(description='Año', options=(2001, 2002, 2003), value=2001), Dropdown(description='Mes'…" 499 | ] 500 | }, 501 | "metadata": {}, 502 | "output_type": "display_data" 503 | } 504 | ], 505 | "source": [ 506 | "Y = widgets.Dropdown(options =[2001,2002,2003],description = 'Año')\n", 507 | "M = widgets.Dropdown(options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], description= 'Mes')\n", 508 | "widgets.HBox([Y, M])" 509 | ] 510 | }, 511 | { 512 | "cell_type": "code", 513 | "execution_count": 18, 514 | "metadata": {}, 515 | "outputs": [ 516 | { 517 | "data": { 518 | "text/plain": [ 519 | "2001" 520 | ] 521 | }, 522 | "execution_count": 18, 523 | "metadata": {}, 524 | "output_type": "execute_result" 525 | } 526 | ], 527 | "source": [ 528 | "Y.value" 529 | ] 530 | }, 531 | { 532 | "cell_type": "code", 533 | "execution_count": 19, 534 | "metadata": {}, 535 | "outputs": [ 536 | { 537 | "data": { 538 | "text/plain": [ 539 | "(2001, 2002, 2003)" 540 | ] 541 | }, 542 | "execution_count": 19, 543 | "metadata": {}, 544 | "output_type": "execute_result" 545 | } 546 | ], 547 | "source": [ 548 | "Y.options" 549 | ] 550 | }, 551 | { 552 | "cell_type": "code", 553 | "execution_count": 20, 554 | "metadata": {}, 555 | "outputs": [ 556 | { 557 | "data": { 558 | "application/vnd.jupyter.widget-view+json": { 559 | "model_id": "9aed30bc31234c67a302804afe99a901", 560 | "version_major": 2, 561 | "version_minor": 0 562 | }, 563 | "text/plain": [ 564 | "ColorPicker(value='blue', description='Pick a color')" 565 | ] 566 | }, 567 | "metadata": {}, 568 | "output_type": "display_data" 569 | } 570 | ], 571 | "source": [ 572 | "widgets.ColorPicker(\n", 573 | " concise=False,\n", 574 | " description='Pick a color',\n", 575 | " value='blue',\n", 576 | " disabled=False\n", 577 | ")" 578 | ] 579 | }, 580 | { 581 | "cell_type": "markdown", 582 | "metadata": {}, 583 | "source": [ 584 | "## 3. Layout" 585 | ] 586 | }, 587 | { 588 | "cell_type": "markdown", 589 | "metadata": {}, 590 | "source": [ 591 | "Podemos controlar el layout de los widgets utilizando otros widgets como Box, HBox, VBox, Accordion y Tabs" 592 | ] 593 | }, 594 | { 595 | "cell_type": "code", 596 | "execution_count": 23, 597 | "metadata": {}, 598 | "outputs": [ 599 | { 600 | "data": { 601 | "application/vnd.jupyter.widget-view+json": { 602 | "model_id": "34610e58299c41d8847de527788b69aa", 603 | "version_major": 2, 604 | "version_minor": 0 605 | }, 606 | "text/plain": [ 607 | "VBox(children=(VBox(children=(Label(value='Seleccione su perfil inversor:'), RadioButtons(layout=Layout(width=…" 608 | ] 609 | }, 610 | "metadata": {}, 611 | "output_type": "display_data" 612 | } 613 | ], 614 | "source": [ 615 | "widgets.VBox([Perfil, Rentabilidad,Divisa])" 616 | ] 617 | }, 618 | { 619 | "cell_type": "code", 620 | "execution_count": null, 621 | "metadata": {}, 622 | "outputs": [], 623 | "source": [] 624 | } 625 | ], 626 | "metadata": { 627 | "kernelspec": { 628 | "display_name": "Python 3", 629 | "language": "python", 630 | "name": "python3" 631 | }, 632 | "language_info": { 633 | "codemirror_mode": { 634 | "name": "ipython", 635 | "version": 3 636 | }, 637 | "file_extension": ".py", 638 | "mimetype": "text/x-python", 639 | "name": "python", 640 | "nbconvert_exporter": "python", 641 | "pygments_lexer": "ipython3", 642 | "version": "3.7.4" 643 | } 644 | }, 645 | "nbformat": 4, 646 | "nbformat_minor": 4 647 | } 648 | -------------------------------------------------------------------------------- /Widgets/Ipywidgets_Parte2.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Utilizar IPython widgets (parte2)\n", 8 | "\n", 9 | "En este notebook utilizamos widgets para filtrar y explorar un DataFrame
\n", 10 | "Es la segunda parte del artículo sobre widgets interactivos para Jupyter Notebook: https://estrategiastrading.com/widgets-interactivos-en-python-ipywidgets/\n", 11 | "\n", 12 | "En este ejemplo utilizo los datos de los cierres mensuales del SP500 entre 1970 y 2019.\n", 13 | "## 1.Cargar librerías, paquetes y data" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": 1, 19 | "metadata": {}, 20 | "outputs": [], 21 | "source": [ 22 | "import pandas as pd\n", 23 | "import numpy as np\n", 24 | "import seaborn as sns\n", 25 | "import matplotlib.pyplot as plt\n", 26 | "%matplotlib inline\n", 27 | "sns.set()\n", 28 | "import ipywidgets as widgets" 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": 2, 34 | "metadata": {}, 35 | "outputs": [ 36 | { 37 | "data": { 38 | "text/html": [ 39 | "
\n", 40 | "\n", 53 | "\n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | "
CloseLogRetYearMonth
Date
2019-08-302926.459961-0.01825720198
2019-09-302976.7399900.01703520199
2019-10-313037.5600590.020226201910
2019-11-293140.9799800.033480201911
2019-12-313230.7800290.028189201912
\n", 108 | "
" 109 | ], 110 | "text/plain": [ 111 | " Close LogRet Year Month\n", 112 | "Date \n", 113 | "2019-08-30 2926.459961 -0.018257 2019 8\n", 114 | "2019-09-30 2976.739990 0.017035 2019 9\n", 115 | "2019-10-31 3037.560059 0.020226 2019 10\n", 116 | "2019-11-29 3140.979980 0.033480 2019 11\n", 117 | "2019-12-31 3230.780029 0.028189 2019 12" 118 | ] 119 | }, 120 | "execution_count": 2, 121 | "metadata": {}, 122 | "output_type": "execute_result" 123 | } 124 | ], 125 | "source": [ 126 | "file = 'SP500_Mensual.csv'\n", 127 | "df = pd.read_csv(file,index_col=\"Date\", parse_dates = True)\n", 128 | "df = df.dropna()\n", 129 | "df.tail()" 130 | ] 131 | }, 132 | { 133 | "cell_type": "markdown", 134 | "metadata": {}, 135 | "source": [ 136 | "## 2. Utilizando interact" 137 | ] 138 | }, 139 | { 140 | "cell_type": "code", 141 | "execution_count": 3, 142 | "metadata": {}, 143 | "outputs": [], 144 | "source": [ 145 | "# utilizando interact \n", 146 | "from ipywidgets import interact" 147 | ] 148 | }, 149 | { 150 | "cell_type": "markdown", 151 | "metadata": {}, 152 | "source": [ 153 | "interact autogenera controles para los argumentos de la función, y luego llama a la función con esos argumentos cuando manipulamos los controles de forma interactiva.
Para usar interact, necesitas definir una función que quieras explorar" 154 | ] 155 | }, 156 | { 157 | "cell_type": "markdown", 158 | "metadata": {}, 159 | "source": [ 160 | "### 2.1 Estadísticas por columna" 161 | ] 162 | }, 163 | { 164 | "cell_type": "code", 165 | "execution_count": 4, 166 | "metadata": {}, 167 | "outputs": [ 168 | { 169 | "data": { 170 | "application/vnd.jupyter.widget-view+json": { 171 | "model_id": "101b80c12107490e9b1124d6c31afdcd", 172 | "version_major": 2, 173 | "version_minor": 0 174 | }, 175 | "text/plain": [ 176 | "interactive(children=(Dropdown(description='column', options=('Close', 'LogRet', 'Year', 'Month'), value='Clos…" 177 | ] 178 | }, 179 | "metadata": {}, 180 | "output_type": "display_data" 181 | } 182 | ], 183 | "source": [ 184 | "#En este caso con Interact como decorador que es la manera más sencilla de crear un widget\n", 185 | "@interact\n", 186 | "def describe(column=list(df.columns)):\n", 187 | " print(df[column].describe())" 188 | ] 189 | }, 190 | { 191 | "cell_type": "markdown", 192 | "metadata": {}, 193 | "source": [ 194 | "### 2.2 Filtrar por filas según los valores del widget" 195 | ] 196 | }, 197 | { 198 | "cell_type": "code", 199 | "execution_count": 5, 200 | "metadata": {}, 201 | "outputs": [ 202 | { 203 | "data": { 204 | "application/vnd.jupyter.widget-view+json": { 205 | "model_id": "accdd878484f4e90b18ff1037e1ccc13", 206 | "version_major": 2, 207 | "version_minor": 0 208 | }, 209 | "text/plain": [ 210 | "interactive(children=(Dropdown(description='Column', options=('LogRet',), value='LogRet'), FloatSlider(value=0…" 211 | ] 212 | }, 213 | "metadata": {}, 214 | "output_type": "display_data" 215 | } 216 | ], 217 | "source": [ 218 | "# Con Interact como decorador para crear un widget\n", 219 | "@interact\n", 220 | "def mostrar_valores(\n", 221 | " Column =['LogRet'],\n", 222 | " x=(-0.25,0.25,0.05)):\n", 223 | " display(df.loc[df[Column] >= x])" 224 | ] 225 | }, 226 | { 227 | "cell_type": "markdown", 228 | "metadata": {}, 229 | "source": [ 230 | "Como se ve en este ejemplo, se puede seleccionar el valor de la rentabilidad y podemos ver cuáles periodos han tenido una rentabilidad superior.Todo esto sin necesidad de reejecutar la celda cada vez que modificamos el filtro.
" 231 | ] 232 | }, 233 | { 234 | "cell_type": "markdown", 235 | "metadata": {}, 236 | "source": [ 237 | "### 2.3 Grafico con interact" 238 | ] 239 | }, 240 | { 241 | "cell_type": "code", 242 | "execution_count": 6, 243 | "metadata": {}, 244 | "outputs": [ 245 | { 246 | "data": { 247 | "application/vnd.jupyter.widget-view+json": { 248 | "model_id": "d8a698fd26e04c9cbfe4e3d4acff7179", 249 | "version_major": 2, 250 | "version_minor": 0 251 | }, 252 | "text/plain": [ 253 | "interactive(children=(IntSlider(value=21, description='bins', max=50, min=1, step=5), Checkbox(value=True, des…" 254 | ] 255 | }, 256 | "metadata": {}, 257 | "output_type": "display_data" 258 | } 259 | ], 260 | "source": [ 261 | "@interact\n", 262 | "def grafico(\n", 263 | " bins=(1,50,5),\n", 264 | " grid= True ,\n", 265 | " color=['blue', 'red','gray'],\n", 266 | " ):\n", 267 | " df.loc[:,'LogRet'].plot(kind='hist', \n", 268 | " bins= bins, \n", 269 | " color=color, \n", 270 | " grid=grid)" 271 | ] 272 | }, 273 | { 274 | "cell_type": "markdown", 275 | "metadata": {}, 276 | "source": [ 277 | "### 2.4. Otra forma de utilizar interact\n" 278 | ] 279 | }, 280 | { 281 | "cell_type": "code", 282 | "execution_count": 7, 283 | "metadata": {}, 284 | "outputs": [], 285 | "source": [ 286 | "# Funcion\n", 287 | "def filtro1(Columna, x):\n", 288 | " return (df.loc[df[Columna]>x])" 289 | ] 290 | }, 291 | { 292 | "cell_type": "code", 293 | "execution_count": 8, 294 | "metadata": {}, 295 | "outputs": [ 296 | { 297 | "data": { 298 | "application/vnd.jupyter.widget-view+json": { 299 | "model_id": "777f5546922a4e66a12cd5db57f4895d", 300 | "version_major": 2, 301 | "version_minor": 0 302 | }, 303 | "text/plain": [ 304 | "interactive(children=(Dropdown(description='Columna', options=('LogRet',), value='LogRet'), FloatSlider(value=…" 305 | ] 306 | }, 307 | "metadata": {}, 308 | "output_type": "display_data" 309 | } 310 | ], 311 | "source": [ 312 | "# Acotamos la seleccion de valores\n", 313 | "interact( filtro1, \n", 314 | " x=widgets.FloatSlider(\n", 315 | " min= -0.25, \n", 316 | " max=0.16, \n", 317 | " step= 0.1, \n", 318 | " value=0, \n", 319 | " description = 'Mayor a'), \n", 320 | " Columna =['LogRet']);" 321 | ] 322 | }, 323 | { 324 | "cell_type": "markdown", 325 | "metadata": {}, 326 | "source": [ 327 | "### 2.5 Desplegable\n", 328 | "Podemos hacer otro ejemplo donde si en vez de tener un deslizador tenemos un desplegable para filtrar con los años o los meses que necesitamos analizar. Para esto puedo sacar una lista de todos los años y todos los meses presentes en el df" 329 | ] 330 | }, 331 | { 332 | "cell_type": "code", 333 | "execution_count": 9, 334 | "metadata": {}, 335 | "outputs": [], 336 | "source": [ 337 | "#primero saco una lista con los años y meses presentes en el dataframe\n", 338 | "ALL = 'ALL'\n", 339 | "def lista_valores(array):\n", 340 | " unique = array.unique().tolist()\n", 341 | " unique.sort()\n", 342 | " unique.insert(0, ALL)\n", 343 | " return unique" 344 | ] 345 | }, 346 | { 347 | "cell_type": "code", 348 | "execution_count": 10, 349 | "metadata": {}, 350 | "outputs": [], 351 | "source": [ 352 | "lista_year = lista_valores(df.Year)\n", 353 | "lista_month = lista_valores(df.Month)" 354 | ] 355 | }, 356 | { 357 | "cell_type": "code", 358 | "execution_count": 11, 359 | "metadata": {}, 360 | "outputs": [], 361 | "source": [ 362 | "#funcion\n", 363 | "def filtro2(year, month):\n", 364 | " return(df.loc[(df['Year'] == year) & (df['Month'] == month)])" 365 | ] 366 | }, 367 | { 368 | "cell_type": "code", 369 | "execution_count": 12, 370 | "metadata": {}, 371 | "outputs": [ 372 | { 373 | "data": { 374 | "application/vnd.jupyter.widget-view+json": { 375 | "model_id": "555327fe6e5c4ad9b772f15e5da9cbf2", 376 | "version_major": 2, 377 | "version_minor": 0 378 | }, 379 | "text/plain": [ 380 | "interactive(children=(Dropdown(description='year', options=('ALL', 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1…" 381 | ] 382 | }, 383 | "metadata": {}, 384 | "output_type": "display_data" 385 | } 386 | ], 387 | "source": [ 388 | "interact (filtro2, \n", 389 | " year = lista_year,\n", 390 | " month = lista_month);" 391 | ] 392 | }, 393 | { 394 | "cell_type": "markdown", 395 | "metadata": {}, 396 | "source": [ 397 | "En este filtro por desplegable hay un problema porque el dataframe no responde bien con la opción o. Por ejemplo, da error si busco todos los meses de un mismo año, o todos los años para un mismo mes.
\n", 398 | "Para solucionarlo tenemos que entrar el los valores del output del widget y hacer una función que interactúe con todas las posibles selecciones." 399 | ] 400 | }, 401 | { 402 | "cell_type": "markdown", 403 | "metadata": {}, 404 | "source": [ 405 | "## 3. Crear nuestros propios widgets\n", 406 | "\n", 407 | "Si queremos que las opciones de un widget dependan del valor de otro, utilizamos la función de observación. Para esto tenemos que crear primero nuestros propios widgets" 408 | ] 409 | }, 410 | { 411 | "cell_type": "code", 412 | "execution_count": 13, 413 | "metadata": {}, 414 | "outputs": [], 415 | "source": [ 416 | "from IPython.display import display" 417 | ] 418 | }, 419 | { 420 | "cell_type": "code", 421 | "execution_count": 14, 422 | "metadata": {}, 423 | "outputs": [ 424 | { 425 | "data": { 426 | "application/vnd.jupyter.widget-view+json": { 427 | "model_id": "9f0ae07bd36c4e50b9586f230b0c0288", 428 | "version_major": 2, 429 | "version_minor": 0 430 | }, 431 | "text/plain": [ 432 | "VBox(children=(Dropdown(description='Year', options=('ALL', 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 19…" 433 | ] 434 | }, 435 | "metadata": {}, 436 | "output_type": "display_data" 437 | } 438 | ], 439 | "source": [ 440 | "output = widgets.Output()\n", 441 | "outout_plot = widgets.Output()\n", 442 | "\n", 443 | "#creo desplegable\n", 444 | "\n", 445 | "dropdown_year = widgets.Dropdown(options = lista_year, description = 'Year')\n", 446 | "dropdown_month = widgets.Dropdown(options = lista_month, description = 'Month')\n", 447 | "\n", 448 | "#funcion filtrar df & plot\n", 449 | "\n", 450 | "def filtro (Year, Month):\n", 451 | " output.clear_output()\n", 452 | " outout_plot.clear_output()\n", 453 | " \n", 454 | " if (Year == ALL) & (Month == ALL):\n", 455 | " filtro = df\n", 456 | " elif (Year == ALL):\n", 457 | " filtro = df.loc[(df['Month'] == Month)]\n", 458 | " elif (Month == ALL):\n", 459 | " filtro = df.loc[(df['Year']==Year)]\n", 460 | " else:\n", 461 | " filtro = df.loc[(df['Year']== Year) & (df['Month']== Month)]\n", 462 | " \n", 463 | " with output:\n", 464 | " display(filtro)\n", 465 | " \n", 466 | " with outout_plot:\n", 467 | " plt.figure (figsize= (10,12))\n", 468 | " plt.subplot(211) \n", 469 | " filtro['LogRet'].plot(kind = 'hist', bins = 12, grid=True)\n", 470 | " avg = filtro['LogRet'].mean()\n", 471 | " plt.axvline(x=avg, color='r', linestyle ='--', label= 'Media')\n", 472 | " plt.legend()\n", 473 | " plt.title('Histograma de frecuencias', loc='right')\n", 474 | " plt.xlabel('Rentabilidad')\n", 475 | " \n", 476 | " plt.subplot(212)\n", 477 | " filtro['LogRet'].plot.bar()\n", 478 | " plt.title('Diagrama de barras', loc='right')\n", 479 | " plt.ylabel('Rentabilidad')\n", 480 | " plt.axhline(y=avg, color='r', linestyle ='--', label= 'Media')\n", 481 | " plt.legend()\n", 482 | " plt.show()\n", 483 | " \n", 484 | "def dropdown_year_eventhandler (change):\n", 485 | " filtro(change.new, dropdown_month.value)\n", 486 | " \n", 487 | "def dropdown_month_eventhander(change):\n", 488 | " filtro(dropdown_year.value, change.new)\n", 489 | " \n", 490 | "dropdown_year.observe(dropdown_year_eventhandler, names ='value')\n", 491 | "dropdown_month.observe (dropdown_month_eventhander, names = 'value')\n", 492 | "\n", 493 | "# widgets layout\n", 494 | "tab = widgets.Tab([output, outout_plot])\n", 495 | "tab.set_title(0,'Datos')\n", 496 | "tab.set_title(1,'Gráficos')\n", 497 | "dashboard = widgets.VBox([dropdown_year,dropdown_month, tab])\n", 498 | "display(dashboard);" 499 | ] 500 | }, 501 | { 502 | "cell_type": "code", 503 | "execution_count": null, 504 | "metadata": {}, 505 | "outputs": [], 506 | "source": [] 507 | } 508 | ], 509 | "metadata": { 510 | "kernelspec": { 511 | "display_name": "Python 3", 512 | "language": "python", 513 | "name": "python3" 514 | }, 515 | "language_info": { 516 | "codemirror_mode": { 517 | "name": "ipython", 518 | "version": 3 519 | }, 520 | "file_extension": ".py", 521 | "mimetype": "text/x-python", 522 | "name": "python", 523 | "nbconvert_exporter": "python", 524 | "pygments_lexer": "ipython3", 525 | "version": "3.7.4" 526 | } 527 | }, 528 | "nbformat": 4, 529 | "nbformat_minor": 4 530 | } 531 | -------------------------------------------------------------------------------- /Widgets/README.md: -------------------------------------------------------------------------------- 1 | Notebooks del artículo de Estrategias de Trading: https://estrategiastrading.com/widgets-interactivos-en-python-ipywidgets/ 2 | -------------------------------------------------------------------------------- /Widgets/SP500_Mensual.csv: -------------------------------------------------------------------------------- 1 | Date,Close,LogRet,Year,Month 2 | 1970-01-30,85.0199966430664,,1970,1 3 | 1970-02-27,89.5,0.05135214183421244,1970,2 4 | 1970-03-31,89.62999725341797,0.001451429444903063,1970,3 5 | 1970-04-30,81.5199966430664,-0.09484170699050765,1970,4 6 | 1970-05-29,76.55000305175781,-0.06290418576531032,1970,5 7 | 1970-06-30,72.72000122070312,-0.051327695314324906,1970,6 8 | 1970-07-31,78.05000305175781,0.07073321940590649,1970,7 9 | 1970-08-31,81.5199966430664,0.043498661673728733,1970,8 10 | 1970-09-30,84.30000305175781,0.033533553473764854,1970,9 11 | 1970-10-30,83.25,-0.012533772348416683,1970,10 12 | 1970-11-30,87.19999694824219,0.04635616705715773,1970,11 13 | 1970-12-31,92.1500015258789,0.055213404756763396,1970,12 14 | 1971-01-29,95.87999725341795,0.03967968024567181,1971,1 15 | 1971-02-26,96.75,0.009032950989745103,1971,2 16 | 1971-03-31,100.30999755859376,0.03613503464688961,1971,3 17 | 1971-04-30,103.9499969482422,0.03564461838930111,1971,4 18 | 1971-05-31,99.62999725341795,-0.04244668845713839,1971,5 19 | 1971-06-30,98.6999969482422,-0.009378380969040201,1971,6 20 | 1971-07-30,95.58000183105469,-0.03212130321259199,1971,7 21 | 1971-08-31,99.02999877929688,0.03545920989930096,1971,8 22 | 1971-09-30,98.33999633789062,-0.006991997462085564,1971,9 23 | 1971-10-29,94.2300033569336,-0.042692186900969986,1971,10 24 | 1971-11-30,93.98999786376952,-0.0025502669396209043,1971,11 25 | 1971-12-31,102.08999633789062,0.08266637040560543,1971,12 26 | 1972-01-31,103.94000244140624,0.01795909175936572,1972,1 27 | 1972-02-29,106.56999969482422,0.024988210300339375,1972,2 28 | 1972-03-31,107.1999969482422,0.005894176799564832,1972,3 29 | 1972-04-28,107.66999816894531,0.0043747566526413095,1972,4 30 | 1972-05-31,109.52999877929688,0.017127496369282014,1972,5 31 | 1972-06-30,107.13999938964844,-0.022062088434686267,1972,6 32 | 1972-07-31,107.38999938964844,0.002330677430572692,1972,7 33 | 1972-08-31,111.08999633789062,0.033873588441761804,1972,8 34 | 1972-09-29,110.5500030517578,-0.0048727157197010484,1972,9 35 | 1972-10-31,111.58000183105469,0.009273903918941784,1972,10 36 | 1972-11-30,116.66999816894531,0.044607582313836325,1972,11 37 | 1972-12-29,118.0500030517578,0.011758868241462217,1972,12 38 | 1973-01-31,116.02999877929688,-0.01725952154404986,1973,1 39 | 1973-02-28,111.68000030517578,-0.03821112609221888,1973,2 40 | 1973-03-30,111.5199966430664,-0.0014337248360680732,1973,3 41 | 1973-04-30,106.97000122070312,-0.04165548418090559,1973,4 42 | 1973-05-31,104.9499969482422,-0.01906441554124516,1973,5 43 | 1973-06-29,104.26000213623048,-0.006596217359020606,1973,6 44 | 1973-07-31,108.22000122070312,0.037278403665004234,1973,7 45 | 1973-08-31,104.25,-0.03737434281550733,1973,8 46 | 1973-09-28,108.43000030517578,0.03931294561967569,1973,9 47 | 1973-10-31,108.29000091552734,-0.0012919842038945362,1973,10 48 | 1973-11-30,95.95999908447266,-0.12088139366391637,1973,11 49 | 1973-12-31,97.5500030517578,0.016433669922380822,1973,12 50 | 1974-01-31,96.56999969482422,-0.01009696753448086,1974,1 51 | 1974-02-28,96.22000122070312,-0.0036308818607837523,1974,2 52 | 1974-03-29,93.9800033569336,-0.02355521956356288,1974,3 53 | 1974-04-30,90.30999755859376,-0.03983386016524193,1974,4 54 | 1974-05-31,87.27999877929688,-0.034126841690329535,1974,5 55 | 1974-06-28,86.0,-0.014774031285250011,1974,6 56 | 1974-07-31,79.30999755859375,-0.0809831029413619,1974,7 57 | 1974-08-30,72.1500015258789,-0.0946168869435633,1974,8 58 | 1974-09-30,63.540000915527344,-0.12707766311853508,1974,9 59 | 1974-10-31,73.9000015258789,0.15104320535199633,1974,10 60 | 1974-11-29,69.97000122070311,-0.05464625239814502,1974,11 61 | 1974-12-31,68.55999755859375,-0.020357357524150466,1974,12 62 | 1975-01-31,76.9800033569336,0.1158364527837179,1975,1 63 | 1975-02-28,81.58999633789062,0.05816096909294988,1975,2 64 | 1975-03-31,83.36000061035156,0.02146192477051656,1975,3 65 | 1975-04-30,87.30000305175781,0.04618191247575787,1975,4 66 | 1975-05-30,91.1500015258789,0.04315602006228758,1975,5 67 | 1975-06-30,95.19000244140624,0.04336840204595305,1975,6 68 | 1975-07-31,88.75,-0.07005149155540558,1975,7 69 | 1975-08-29,86.87999725341797,-0.021295603783413775,1975,8 70 | 1975-09-30,83.87000274658203,-0.03525981082770535,1975,9 71 | 1975-10-31,89.04000091552734,0.05981770350508597,1975,10 72 | 1975-11-28,91.23999786376952,0.024407656753384188,1975,11 73 | 1975-12-31,90.19000244140624,-0.011574790755671138,1975,12 74 | 1976-01-30,100.86000061035156,0.11181483945284754,1976,1 75 | 1976-02-27,99.70999908447266,-0.011467459041251793,1976,2 76 | 1976-03-31,102.7699966430664,0.030227485313651492,1976,3 77 | 1976-04-30,101.63999938964844,-0.011056296525522313,1976,4 78 | 1976-05-31,100.18000030517578,-0.014468581471184905,1976,5 79 | 1976-06-30,104.27999877929688,0.04011100638354215,1976,6 80 | 1976-07-30,103.44000244140624,-0.008087819293536747,1976,7 81 | 1976-08-31,102.91000366210938,-0.005136902632196794,1976,8 82 | 1976-09-30,105.23999786376952,0.02238858043988312,1976,9 83 | 1976-10-29,102.9000015258789,-0.02248577820467812,1976,10 84 | 1976-11-30,102.0999984741211,-0.0078049474430841315,1976,11 85 | 1976-12-31,107.45999908447266,0.05116596655529726,1976,12 86 | 1977-01-31,102.02999877929688,-0.05185180105791698,1977,1 87 | 1977-02-28,99.81999969482422,-0.021898314738852953,1977,2 88 | 1977-03-31,98.41999816894531,-0.014124544150868168,1977,3 89 | 1977-04-29,98.44000244140624,0.0002032334904784605,1977,4 90 | 1977-05-31,96.12000274658205,-0.023849810881032774,1977,5 91 | 1977-06-30,100.4800033569336,0.04436129668608135,1977,6 92 | 1977-07-29,98.8499984741211,-0.016355201948541342,1977,7 93 | 1977-08-31,96.7699966430664,-0.02126653997728578,1977,8 94 | 1977-09-30,96.52999877929688,-0.002483165988351743,1977,9 95 | 1977-10-31,92.33999633789062,-0.044376450794811007,1977,10 96 | 1977-11-30,94.83000183105469,0.026608456784577683,1977,11 97 | 1977-12-30,95.0999984741211,0.002843119301902064,1977,12 98 | 1978-01-31,89.25,-0.0634875328466018,1978,1 99 | 1978-02-28,87.04000091552734,-0.025073627033649792,1978,2 100 | 1978-03-31,89.20999908447266,0.02462533703698444,1978,3 101 | 1978-04-28,96.83000183105469,0.08196375187034999,1978,4 102 | 1978-05-31,97.23999786376952,0.004225244945849305,1978,5 103 | 1978-06-30,95.52999877929688,-0.01774180597558317,1978,6 104 | 1978-07-31,100.68000030517578,0.05250685179456127,1978,7 105 | 1978-08-31,103.29000091552734,0.02559340158394008,1978,8 106 | 1978-09-29,102.54000091552734,-0.007287599598156724,1978,9 107 | 1978-10-31,93.1500015258789,-0.09604186185556784,1978,10 108 | 1978-11-30,94.6999969482422,0.01650285453802436,1978,11 109 | 1978-12-29,96.11000061035156,0.014779407219243978,1978,12 110 | 1979-01-31,99.93000030517578,0.03897656874184907,1979,1 111 | 1979-02-28,96.27999877929688,-0.0372093436914005,1979,2 112 | 1979-03-30,101.58999633789062,0.05368446881932787,1979,3 113 | 1979-04-30,101.76000213623048,0.001672051529121532,1979,4 114 | 1979-05-31,99.08000183105469,-0.02668949748291638,1979,5 115 | 1979-06-29,102.91000366210938,0.037927232331827376,1979,6 116 | 1979-07-31,103.80999755859376,0.008707426253574901,1979,7 117 | 1979-08-31,109.31999969482422,0.05171707658115654,1979,8 118 | 1979-09-28,109.31999969482422,0.0,1979,9 119 | 1979-10-31,101.81999969482422,-0.07107281279130362,1979,10 120 | 1979-11-30,106.16000366210938,0.0417408790431022,1979,11 121 | 1979-12-31,107.94000244140624,0.01662811528859187,1979,12 122 | 1980-01-31,114.16000366210938,0.0560254654386485,1980,1 123 | 1980-02-29,113.66000366210938,-0.004389437158488718,1980,2 124 | 1980-03-31,102.08999633789062,-0.10735682677929415,1980,3 125 | 1980-04-30,106.29000091552734,0.040316474849434236,1980,4 126 | 1980-05-30,111.23999786376952,0.04551879400299086,1980,5 127 | 1980-06-30,114.23999786376952,0.026611469729811432,1980,6 128 | 1980-07-31,121.66999816894531,0.06301096685822749,1980,7 129 | 1980-08-29,122.37999725341795,0.005818488841326186,1980,8 130 | 1980-09-30,125.45999908447266,0.024856039779900918,1980,9 131 | 1980-10-31,127.47000122070312,0.015894076999993345,1980,10 132 | 1980-11-28,140.52000427246094,0.09746880543104641,1980,11 133 | 1980-12-31,135.75999450683594,-0.034461277338618146,1980,12 134 | 1981-01-30,129.55000305175778,-0.04682164989893334,1981,1 135 | 1981-02-27,131.27000427246094,0.01318937279771859,1981,2 136 | 1981-03-31,136.0,0.03539858237361315,1981,3 137 | 1981-04-30,132.80999755859378,-0.023735368706591764,1981,4 138 | 1981-05-29,132.58999633789062,-0.0016578845226344896,1981,5 139 | 1981-06-30,131.21000671386722,-0.010462488220334798,1981,6 140 | 1981-07-31,130.91999816894528,-0.0022127086395693496,1981,7 141 | 1981-08-31,122.79000091552734,-0.06411084901845943,1981,8 142 | 1981-09-30,116.18000030517578,-0.05533487143732607,1981,9 143 | 1981-10-30,121.88999938964844,0.047978278469211766,1981,10 144 | 1981-11-30,126.3499984741211,0.03593682809725074,1981,11 145 | 1981-12-31,122.5500030517578,-0.030536686881333708,1981,12 146 | 1982-01-29,120.4000015258789,-0.017699589328131538,1982,1 147 | 1982-02-26,113.11000061035156,-0.06245874360875536,1982,2 148 | 1982-03-31,111.95999908447266,-0.010219145469397617,1982,3 149 | 1982-04-30,116.44000244140624,0.03923448337451685,1982,4 150 | 1982-05-31,111.87999725341795,-0.03994929606009556,1982,5 151 | 1982-06-30,109.61000061035156,-0.020498226988377333,1982,6 152 | 1982-07-30,107.08999633789062,-0.023259048579799213,1982,7 153 | 1982-08-31,119.51000213623048,0.10973049953747349,1982,8 154 | 1982-09-30,120.41999816894531,0.007585549077033349,1982,9 155 | 1982-10-29,133.72000122070312,0.10476245384996563,1982,10 156 | 1982-11-30,138.52999877929688,0.035338829177257836,1982,11 157 | 1982-12-31,140.63999938964844,0.015116529739096052,1982,12 158 | 1983-01-31,145.3000030517578,0.032597161982335976,1983,1 159 | 1983-02-28,148.05999755859375,0.01881698894626105,1983,2 160 | 1983-03-31,152.9600067138672,0.03255891267040134,1983,3 161 | 1983-04-29,164.42999267578125,0.07230840998700305,1983,4 162 | 1983-05-31,162.38999938964844,-0.012484057464610565,1983,5 163 | 1983-06-30,167.63999938964844,0.031817973697581436,1983,6 164 | 1983-07-29,162.55999755859375,-0.030771670044400068,1983,7 165 | 1983-08-31,164.39999389648438,0.011255296124446978,1983,8 166 | 1983-09-30,166.07000732421875,0.010106984825791976,1983,9 167 | 1983-10-31,163.5500030517578,-0.015290657677991426,1983,10 168 | 1983-11-30,166.39999389648438,0.01727571906345471,1983,11 169 | 1983-12-30,164.92999267578125,-0.008873394655310562,1983,12 170 | 1984-01-31,163.41000366210938,-0.00925869457776507,1984,1 171 | 1984-02-29,157.05999755859375,-0.03963452007193968,1984,2 172 | 1984-03-30,159.17999267578125,0.01340770896321164,1984,3 173 | 1984-04-30,160.0500030517578,0.0054506941178766866,1984,4 174 | 1984-05-31,150.5500030517578,-0.061191010284930236,1984,5 175 | 1984-06-29,153.17999267578125,0.017318377468519053,1984,6 176 | 1984-07-31,150.66000366210938,-0.016587985962328133,1984,7 177 | 1984-08-31,166.67999267578125,0.10105009590779446,1984,8 178 | 1984-09-28,166.10000610351562,-0.003485709247176061,1984,9 179 | 1984-10-31,166.08999633789062,-6.026530331659785e-05,1984,10 180 | 1984-11-30,163.5800018310547,-0.015227609561499378,1984,11 181 | 1984-12-31,167.24000549316406,0.02212776083389567,1984,12 182 | 1985-01-31,179.6300048828125,0.07146926762899763,1985,1 183 | 1985-02-28,181.17999267578125,0.008591764852689643,1985,2 184 | 1985-03-29,180.66000366210938,-0.0028741398236222793,1985,3 185 | 1985-04-30,179.8300018310547,-0.004604861633175084,1985,4 186 | 1985-05-31,189.5500030517578,0.05264088770311037,1985,5 187 | 1985-06-28,191.8500061035156,0.01206099044460096,1985,6 188 | 1985-07-31,190.9199981689453,-0.004859365959954509,1985,7 189 | 1985-08-30,188.6300048828125,-0.012067032303709091,1985,8 190 | 1985-09-30,182.0800018310547,-0.035341289249010366,1985,9 191 | 1985-10-31,189.82000732421875,0.04163013229313428,1985,10 192 | 1985-11-29,202.1699981689453,0.06303262528181097,1985,11 193 | 1985-12-31,211.27999877929688,0.04407534364199073,1985,12 194 | 1986-01-31,211.77999877929688,0.002363732027071741,1986,1 195 | 1986-02-28,226.9199981689453,0.06904953015090953,1986,2 196 | 1986-03-31,238.8999938964844,0.051447504394149135,1986,3 197 | 1986-04-30,235.5200042724609,-0.014249175102296618,1986,4 198 | 1986-05-30,247.3500061035156,0.04900850866828588,1986,5 199 | 1986-06-30,250.83999633789062,0.014010908726095117,1986,6 200 | 1986-07-31,236.1199951171875,-0.06047514138231591,1986,7 201 | 1986-08-29,252.92999267578125,0.06877261195208018,1986,8 202 | 1986-09-30,231.32000732421875,-0.08931067669247028,1986,9 203 | 1986-10-31,243.97999572753903,0.053284172256339524,1986,10 204 | 1986-11-28,249.22000122070312,0.021249808203746667,1986,11 205 | 1986-12-31,242.1699981689453,-0.02869609410143603,1986,12 206 | 1987-01-30,274.07998657226557,0.1237800342724027,1987,1 207 | 1987-02-27,284.20001220703125,0.03625827303147311,1987,2 208 | 1987-03-31,291.70001220703125,0.026047660106314652,1987,3 209 | 1987-04-30,288.3599853515625,-0.011516269984325866,1987,4 210 | 1987-05-29,290.1000061035156,0.006016063429464147,1987,5 211 | 1987-06-30,304.0,0.04680198923951284,1987,6 212 | 1987-07-31,318.6600036621094,0.047097013748356176,1987,7 213 | 1987-08-31,329.79998779296875,0.03436165795748369,1987,8 214 | 1987-09-30,321.8299865722656,-0.02446295901611606,1987,9 215 | 1987-10-30,251.7899932861328,-0.24542803399765045,1987,10 216 | 1987-11-30,230.3000030517578,-0.0892125600204281,1987,11 217 | 1987-12-31,247.0800018310547,0.07032935816060792,1987,12 218 | 1988-01-29,257.07000732421875,0.03963627160180749,1988,1 219 | 1988-02-29,267.82000732421875,0.040966690574679276,1988,2 220 | 1988-03-31,258.8900146484375,-0.033911822773448286,1988,3 221 | 1988-04-29,261.32998657226557,0.009380607475103275,1988,4 222 | 1988-05-31,262.16000366210943,0.0031710932429280803,1988,5 223 | 1988-06-30,273.5,0.042346603502490865,1988,6 224 | 1988-07-29,272.01998901367193,-0.005426069245371146,1988,7 225 | 1988-08-31,261.51998901367193,-0.03936483221022424,1988,8 226 | 1988-09-30,271.91000366210943,0.03896042225106555,1988,9 227 | 1988-10-31,278.97000122070307,0.02563311087646003,1988,10 228 | 1988-11-30,273.70001220703125,-0.019071592887292432,1988,11 229 | 1988-12-30,277.72000122070307,0.014580755633843978,1988,12 230 | 1989-01-31,297.4700012207031,0.06869996738792139,1989,1 231 | 1989-02-28,288.8599853515625,-0.02937129270662009,1989,2 232 | 1989-03-31,294.8699951171875,0.02059247372562467,1989,3 233 | 1989-04-28,309.6400146484375,0.04887581495703053,1989,4 234 | 1989-05-31,320.5199890136719,0.03453426298881901,1989,5 235 | 1989-06-30,317.9800109863281,-0.007956120362355712,1989,6 236 | 1989-07-31,346.0799865722656,0.08468140113430067,1989,7 237 | 1989-08-31,351.45001220703125,0.015397564950013098,1989,8 238 | 1989-09-29,349.1499938964844,-0.006565876544277316,1989,9 239 | 1989-10-31,340.3599853515625,-0.025497773867687812,1989,10 240 | 1989-11-30,345.989990234375,0.016406006737505585,1989,11 241 | 1989-12-29,353.3999938964844,0.021190697933962,1989,12 242 | 1990-01-31,329.0799865722656,-0.0712997011178853,1990,1 243 | 1990-02-28,331.8900146484375,0.008502791354483286,1990,2 244 | 1990-03-30,339.94000244140625,0.02396550577972789,1990,3 245 | 1990-04-30,330.79998779296875,-0.027255212383089145,1990,4 246 | 1990-05-31,361.2300109863281,0.08800097873791124,1990,5 247 | 1990-06-29,358.0199890136719,-0.008926084910209298,1990,6 248 | 1990-07-31,356.1499938964844,-0.005236846788815086,1990,7 249 | 1990-08-31,322.55999755859375,-0.09906281541277195,1990,8 250 | 1990-09-28,306.04998779296875,-0.05254071046276909,1990,9 251 | 1990-10-31,304.0,-0.0067207460051141865,1990,10 252 | 1990-11-30,322.2200012207031,0.0582068444450341,1990,11 253 | 1990-12-31,330.2200012207031,0.024524556849066848,1990,12 254 | 1991-01-31,343.92999267578125,0.04067902429874781,1991,1 255 | 1991-02-28,367.0700073242188,0.06511445851577591,1991,2 256 | 1991-03-29,375.2200012207031,0.021959938353917963,1991,3 257 | 1991-04-30,375.3399963378906,0.00031974823758318394,1991,4 258 | 1991-05-31,389.8299865722656,0.03787844010543928,1991,5 259 | 1991-06-28,371.1600036621094,-0.04907746586014916,1991,6 260 | 1991-07-31,387.80999755859375,0.04388227631696129,1991,7 261 | 1991-08-30,395.42999267578125,0.019458239201722627,1991,8 262 | 1991-09-30,387.8599853515625,-0.01932934986955992,1991,9 263 | 1991-10-31,392.45001220703125,0.011764759676739622,1991,10 264 | 1991-11-29,375.2200012207031,-0.04489664780873692,1991,11 265 | 1991-12-31,417.0899963378906,0.10578949320065512,1991,12 266 | 1992-01-31,408.7799987792969,-0.020124906041997903,1992,1 267 | 1992-02-28,412.70001220703125,0.00954385530957591,1992,2 268 | 1992-03-31,403.6900024414063,-0.02207370360663763,1992,3 269 | 1992-04-30,414.95001220703125,0.02751079773217402,1992,4 270 | 1992-05-29,415.3500061035156,0.0009634925174193398,1992,5 271 | 1992-06-30,408.1400146484375,-0.017511264288296857,1992,6 272 | 1992-07-31,424.2099914550781,0.03861830680387701,1992,7 273 | 1992-08-31,414.0299987792969,-0.024290163475820137,1992,8 274 | 1992-09-30,417.7999877929688,0.009064387885348246,1992,9 275 | 1992-10-30,418.67999267578125,0.0021040675880250603,1992,10 276 | 1992-11-30,431.3500061035156,0.02981295217929958,1992,11 277 | 1992-12-31,435.7099914550781,0.01005702514832052,1992,12 278 | 1993-01-29,438.7799987792969,0.00702128090816867,1993,1 279 | 1993-02-26,443.3800048828125,0.01042905544963535,1993,2 280 | 1993-03-31,451.6700134277344,0.018524653242830702,1993,3 281 | 1993-04-30,440.1900024414063,-0.0257453969876007,1993,4 282 | 1993-05-31,450.1900024414063,0.022463263865184047,1993,5 283 | 1993-06-30,450.5299987792969,0.0007549434975970826,1993,6 284 | 1993-07-30,448.1300048828125,-0.00534128500779385,1993,7 285 | 1993-08-31,463.55999755859375,0.03385244141081678,1993,8 286 | 1993-09-30,458.92999267578125,-0.010038144175098296,1993,9 287 | 1993-10-29,467.8299865722656,0.01920727633729946,1993,10 288 | 1993-11-30,461.7900085449219,-0.012994692567740884,1993,11 289 | 1993-12-31,466.45001220703125,0.0100405987830392,1993,12 290 | 1994-01-31,481.6099853515625,0.03198376790603685,1994,1 291 | 1994-02-28,467.1400146484375,-0.030505597516047978,1994,2 292 | 1994-03-31,445.7699890136719,-0.04682593067640006,1994,3 293 | 1994-04-29,450.9100036621094,0.011464671878566257,1994,4 294 | 1994-05-31,456.5,0.012320928865824143,1994,5 295 | 1994-06-30,444.2699890136719,-0.027156239046446373,1994,6 296 | 1994-07-29,458.260009765625,0.031004268952846914,1994,7 297 | 1994-08-31,475.489990234375,0.03690910079063592,1994,8 298 | 1994-09-30,462.7099914550781,-0.027245341243997245,1994,9 299 | 1994-10-31,472.3500061035156,0.02061975964867635,1994,10 300 | 1994-11-30,453.6900024414063,-0.040306098324759176,1994,11 301 | 1994-12-30,459.2699890136719,0.012224097678835477,1994,12 302 | 1995-01-31,470.4200134277344,0.023987692740721656,1995,1 303 | 1995-02-28,487.3900146484375,0.03543871277481525,1995,2 304 | 1995-03-31,500.7099914550781,0.026962420103642692,1995,3 305 | 1995-04-28,514.7100219726561,0.027576603842838665,1995,4 306 | 1995-05-31,533.4000244140625,0.03566797956572465,1995,5 307 | 1995-06-30,544.75,0.02105531630617108,1995,6 308 | 1995-07-31,562.0599975585939,0.031281627592512073,1995,7 309 | 1995-08-31,561.8800048828125,-0.00032028876439849086,1995,8 310 | 1995-09-29,584.4099731445312,0.03931443269158841,1995,9 311 | 1995-10-31,581.5,-0.004991773385712328,1995,10 312 | 1995-11-30,605.3699951171875,0.04022886132135195,1995,11 313 | 1995-12-29,615.9299926757812,0.017293475541395154,1995,12 314 | 1996-01-31,636.02001953125,0.03209673127365065,1996,1 315 | 1996-02-29,640.4299926757812,0.006909774215232645,1996,2 316 | 1996-03-29,645.5,0.007885395976347631,1996,3 317 | 1996-04-30,654.1699829101562,0.013342020105707064,1996,4 318 | 1996-05-31,669.1199951171875,0.02259617855049978,1996,5 319 | 1996-06-28,670.6300048828125,0.0022541674267921863,1996,6 320 | 1996-07-31,639.9500122070312,-0.04682750899291932,1996,7 321 | 1996-08-30,651.989990234375,0.01863914203076167,1996,8 322 | 1996-09-30,687.3300170898438,0.052785341693075694,1996,9 323 | 1996-10-31,705.27001953125,0.02576618481072046,1996,10 324 | 1996-11-29,757.02001953125,0.07080896305654694,1996,11 325 | 1996-12-31,740.739990234375,-0.02174002562018984,1996,12 326 | 1997-01-31,786.1599731445312,0.05951062654617001,1997,1 327 | 1997-02-28,790.8200073242188,0.005910091189056388,1997,2 328 | 1997-03-31,757.1199951171875,-0.043548636182142886,1997,3 329 | 1997-04-30,801.3400268554688,0.05676360503236122,1997,4 330 | 1997-05-30,848.280029296875,0.05692544457452353,1997,5 331 | 1997-06-30,885.1400146484375,0.042535036628904344,1997,6 332 | 1997-07-31,954.3099975585938,0.0752427225584924,1997,7 333 | 1997-08-29,899.469970703125,-0.059182895294065396,1997,8 334 | 1997-09-30,947.280029296875,0.05178908254907544,1997,9 335 | 1997-10-31,914.6199951171876,-0.035086077820773554,1997,10 336 | 1997-11-28,955.4000244140624,0.04362145338032786,1997,11 337 | 1997-12-31,970.4299926757812,0.015609138181524429,1997,12 338 | 1998-01-30,980.280029296875,0.010099010336864112,1998,1 339 | 1998-02-27,1049.3399658203123,0.0680783664885869,1998,2 340 | 1998-03-31,1101.75,0.04873846220549982,1998,3 341 | 1998-04-30,1111.75,0.009035525668709354,1998,4 342 | 1998-05-29,1090.8199462890623,-0.01900569265965757,1998,5 343 | 1998-06-30,1133.8399658203125,0.03868041398242994,1998,6 344 | 1998-07-31,1120.6700439453123,-0.011683311784135064,1998,7 345 | 1998-08-31,957.280029296875,-0.15758607868343155,1998,8 346 | 1998-09-30,1017.010009765625,0.060526278198187455,1998,9 347 | 1998-10-30,1098.6700439453123,0.07723343789167902,1998,10 348 | 1998-11-30,1163.6300048828125,0.0574440362046964,1998,11 349 | 1998-12-31,1229.22998046875,0.0548435076467193,1998,12 350 | 1999-01-29,1279.6400146484375,0.04019085861548177,1999,1 351 | 1999-02-26,1238.3299560546875,-0.032815137600251454,1999,2 352 | 1999-03-31,1286.3699951171875,0.03806063225891165,1999,3 353 | 1999-04-30,1335.1800537109375,0.037241859972131586,1999,4 354 | 1999-05-31,1301.8399658203125,-0.025287532336115248,1999,5 355 | 1999-06-30,1372.7099609375,0.053008237590088214,1999,6 356 | 1999-07-30,1328.719970703125,-0.032570808945743046,1999,7 357 | 1999-08-31,1320.4100341796875,-0.006273730443188796,1999,8 358 | 1999-09-30,1282.7099609375,-0.02896732342110031,1999,9 359 | 1999-10-29,1362.9300537109375,0.06066183660855362,1999,10 360 | 1999-11-30,1388.9100341796875,0.0188824579615936,1999,11 361 | 1999-12-31,1469.25,0.05623277504510504,1999,12 362 | 2000-01-31,1394.4599609375,-0.05224485096542075,2000,1 363 | 2000-02-29,1366.4200439453125,-0.02031300243690115,2000,2 364 | 2000-03-31,1498.5799560546875,0.09232375063667675,2000,3 365 | 2000-04-28,1452.4300537109375,-0.031279910953390555,2000,4 366 | 2000-05-31,1420.5999755859375,-0.0221587523957556,2000,5 367 | 2000-06-30,1454.5999755859375,0.023651631558432307,2000,6 368 | 2000-07-31,1430.8299560546875,-0.01647626719348505,2000,7 369 | 2000-08-31,1517.6800537109375,0.05892822369153272,2000,8 370 | 2000-09-29,1436.510009765625,-0.05496632087674769,2000,9 371 | 2000-10-31,1429.4000244140625,-0.004961774691885523,2000,10 372 | 2000-11-30,1314.949951171875,-0.08345618792359133,2000,11 373 | 2000-12-29,1320.280029296875,0.0040452525456853294,2000,12 374 | 2001-01-31,1366.010009765625,0.03405023140926122,2001,1 375 | 2001-02-28,1239.93994140625,-0.09683114482086808,2001,2 376 | 2001-03-30,1160.3299560546875,-0.06635853454793583,2001,3 377 | 2001-04-30,1249.4599609375,0.07400701716559066,2001,4 378 | 2001-05-31,1255.8199462890625,0.005077276192499092,2001,5 379 | 2001-06-29,1224.3800048828125,-0.02535410549182071,2001,6 380 | 2001-07-31,1211.22998046875,-0.010798241319024626,2001,7 381 | 2001-08-31,1133.5799560546875,-0.06625562852916911,2001,8 382 | 2001-09-28,1040.93994140625,-0.0852566327694193,2001,9 383 | 2001-10-31,1059.780029296875,0.01793727226268249,2001,10 384 | 2001-11-30,1139.449951171875,0.07248427993671047,2001,11 385 | 2001-12-31,1148.0799560546875,0.007545296609038132,2001,12 386 | 2002-01-31,1130.199951171875,-0.01569637859279549,2002,1 387 | 2002-02-28,1106.72998046875,-0.020984861119793585,2002,2 388 | 2002-03-29,1147.3900146484375,0.03608010666721562,2002,3 389 | 2002-04-30,1076.9200439453123,-0.06338465474468347,2002,4 390 | 2002-05-31,1067.1400146484377,-0.009122969376783807,2002,5 391 | 2002-06-28,989.8200073242188,-0.07521434960317919,2002,6 392 | 2002-07-31,911.6199951171876,-0.08229988459363824,2002,7 393 | 2002-08-30,916.0700073242188,0.004869557741769448,2002,8 394 | 2002-09-30,815.280029296875,-0.11656114050838795,2002,9 395 | 2002-10-31,885.760009765625,0.08291439611915408,2002,10 396 | 2002-11-29,936.3099975585938,0.055500571043499924,2002,11 397 | 2002-12-31,879.8200073242188,-0.06222926619772107,2002,12 398 | 2003-01-31,855.7000122070312,-0.027797487730551573,2003,1 399 | 2003-02-28,841.1500244140625,-0.017149829499765623,2003,2 400 | 2003-03-31,848.1799926757812,0.00832283659298838,2003,3 401 | 2003-04-30,916.9199829101562,0.07792734002637935,2003,4 402 | 2003-05-30,963.5900268554688,0.04964571199782597,2003,5 403 | 2003-06-30,974.5,0.01125859814062835,2003,6 404 | 2003-07-31,990.3099975585938,0.016093504013478643,2003,7 405 | 2003-08-29,1008.010009765625,0.017715355943955124,2003,8 406 | 2003-09-30,995.969970703125,-0.012016271671428491,2003,9 407 | 2003-10-31,1050.7099609375,0.05350426070312331,2003,10 408 | 2003-11-28,1058.199951171875,0.007103216390662581,2003,11 409 | 2003-12-31,1111.9200439453123,0.04951898497110463,2003,12 410 | 2004-01-30,1131.1300048828125,0.017128847057715113,2004,1 411 | 2004-02-27,1144.93994140625,0.012135045336105321,2004,2 412 | 2004-03-31,1126.2099609375,-0.01649420417864178,2004,3 413 | 2004-04-30,1107.300048828125,-0.016933314713064362,2004,4 414 | 2004-05-31,1120.6800537109377,0.012011028036096327,2004,5 415 | 2004-06-30,1140.8399658203125,0.017829111362111405,2004,6 416 | 2004-07-30,1101.719970703125,-0.03489223484716675,2004,7 417 | 2004-08-31,1104.239990234375,0.002284738319904278,2004,8 418 | 2004-09-30,1114.5799560546877,0.009320306218270069,2004,9 419 | 2004-10-29,1130.199951171875,0.013916952102817959,2004,10 420 | 2004-11-30,1173.8199462890625,0.037868776906828217,2004,11 421 | 2004-12-31,1211.9200439453125,0.03194257321148264,2004,12 422 | 2005-01-31,1181.27001953125,-0.025615767695305713,2005,1 423 | 2005-02-28,1203.5999755859375,0.018726898056026897,2005,2 424 | 2005-03-31,1180.5899658203125,-0.019302760921690698,2005,3 425 | 2005-04-29,1156.8499755859375,-0.020313511500222425,2005,4 426 | 2005-05-31,1191.5,0.02951224448901968,2005,5 427 | 2005-06-30,1191.3299560546875,-0.00014272436450557535,2005,6 428 | 2005-07-29,1234.1800537109375,0.03533653227186839,2005,7 429 | 2005-08-31,1220.3299560546875,-0.011285547502899007,2005,8 430 | 2005-09-30,1228.81005859375,0.006924991121192825,2005,9 431 | 2005-10-31,1207.010009765625,-0.01790003390634265,2005,10 432 | 2005-11-30,1249.47998046875,0.03458121395472791,2005,11 433 | 2005-12-30,1248.2900390625,-0.0009528030899303985,2005,12 434 | 2006-01-31,1280.0799560546875,0.025147895607580573,2006,1 435 | 2006-02-28,1280.6600341796875,0.0004530550834003222,2006,2 436 | 2006-03-31,1294.8699951171875,0.011034703509450239,2006,3 437 | 2006-04-28,1310.6099853515625,0.012082366269225986,2006,4 438 | 2006-05-31,1270.0899658203125,-0.03140492932031602,2006,5 439 | 2006-06-30,1270.199951171875,8.659275533506872e-05,2006,6 440 | 2006-07-31,1276.6600341796875,0.005072989405988437,2006,7 441 | 2006-08-31,1303.8199462890625,0.021051056620195574,2006,8 442 | 2006-09-29,1335.8499755859375,0.02426939911430903,2006,9 443 | 2006-10-31,1377.93994140625,0.031021812670561033,2006,10 444 | 2006-11-30,1400.6300048828125,0.016332551131229778,2006,11 445 | 2006-12-29,1418.300048828125,0.012536866857911555,2006,12 446 | 2007-01-31,1438.239990234375,0.013961131307326013,2007,1 447 | 2007-02-28,1406.8199462890625,-0.022088337053377316,2007,2 448 | 2007-03-30,1420.8599853515625,0.009930511784698837,2007,3 449 | 2007-04-30,1482.3699951171875,0.04237984325324007,2007,4 450 | 2007-05-31,1530.6199951171875,0.032030723851896425,2007,5 451 | 2007-06-29,1503.3499755859375,-0.01797694386967663,2007,6 452 | 2007-07-31,1455.27001953125,-0.03250447118036437,2007,7 453 | 2007-08-31,1473.989990234375,0.01278153901893031,2007,8 454 | 2007-09-28,1526.75,0.035168290262790336,2007,9 455 | 2007-10-31,1549.3800048828125,0.014713560940171178,2007,10 456 | 2007-11-30,1481.1400146484375,-0.045042782630903666,2007,11 457 | 2007-12-31,1468.3599853515625,-0.008665949670829676,2007,12 458 | 2008-01-31,1378.550048828125,-0.06311386420630871,2008,1 459 | 2008-02-29,1330.6300048828125,-0.035379739592448445,2008,2 460 | 2008-03-31,1322.699951171875,-0.0059774528264187055,2008,3 461 | 2008-04-30,1385.5899658203125,0.04645095190758575,2008,4 462 | 2008-05-30,1400.3800048828125,0.010617614807393316,2008,5 463 | 2008-06-30,1280.0,-0.08988355391782221,2008,6 464 | 2008-07-31,1267.3800048828125,-0.009908296633773794,2008,7 465 | 2008-08-29,1282.8299560546875,0.012116759351493478,2008,8 466 | 2008-09-30,1166.3599853515625,-0.09518076507694317,2008,9 467 | 2008-10-31,968.75,-0.1856364738868823,2008,10 468 | 2008-11-28,896.239990234375,-0.07779835731330564,2008,11 469 | 2008-12-31,903.25,0.007791146673498339,2008,12 470 | 2009-01-30,825.8800048828125,-0.08954987959881677,2009,1 471 | 2009-02-27,735.0900268554688,-0.11645651319919015,2009,2 472 | 2009-03-31,797.8699951171875,0.08195269356125578,2009,3 473 | 2009-04-30,872.8099975585938,0.08977221824359916,2009,4 474 | 2009-05-29,919.1400146484376,0.05172057715517475,2009,5 475 | 2009-06-30,919.3200073242188,0.0001958080939532536,2009,6 476 | 2009-07-31,987.47998046875,0.07152194934301459,2009,7 477 | 2009-08-31,1020.6199951171876,0.033009336342854745,2009,8 478 | 2009-09-30,1057.0799560546877,0.035100067367746846,2009,9 479 | 2009-10-30,1036.18994140625,-0.019959880197119695,2009,10 480 | 2009-11-30,1095.6300048828123,0.0557790765867372,2009,11 481 | 2009-12-31,1115.0999755859377,0.017614520350299756,2009,12 482 | 2010-01-29,1073.8699951171877,-0.03767512371219439,2010,1 483 | 2010-02-26,1104.489990234375,0.028114739741840644,2010,2 484 | 2010-03-31,1169.4300537109375,0.05713281541639237,2010,3 485 | 2010-04-30,1186.68994140625,0.014651373006918433,2010,4 486 | 2010-05-31,1089.4100341796877,-0.08553157288349045,2010,5 487 | 2010-06-30,1030.7099609375,-0.05538844940550369,2010,6 488 | 2010-07-30,1101.5999755859377,0.06651579901085647,2010,7 489 | 2010-08-31,1049.3299560546877,-0.048611822887417944,2010,8 490 | 2010-09-30,1141.199951171875,0.08392847418803306,2010,9 491 | 2010-10-29,1183.260009765625,0.03619305175049092,2010,10 492 | 2010-11-30,1180.550048828125,-0.0022928763797240848,2010,11 493 | 2010-12-31,1257.6400146484375,0.06325648750899848,2010,12 494 | 2011-01-31,1286.1199951171875,0.02239296981241168,2011,1 495 | 2011-02-28,1327.219970703125,0.03145657676282454,2011,2 496 | 2011-03-31,1325.8299560546875,-0.0010478617545839342,2011,3 497 | 2011-04-29,1363.6099853515625,0.028096938770245217,2011,4 498 | 2011-05-31,1345.199951171875,-0.013592919455283514,2011,5 499 | 2011-06-30,1320.6400146484375,-0.01842618591193279,2011,6 500 | 2011-07-29,1292.280029296875,-0.02170835585666353,2011,7 501 | 2011-08-31,1218.8900146484375,-0.05846750227195674,2011,8 502 | 2011-09-30,1131.4200439453125,-0.07446710071978657,2011,9 503 | 2011-10-31,1253.300048828125,0.10230659176938861,2011,10 504 | 2011-11-30,1246.9599609375,-0.005071553722512334,2011,11 505 | 2011-12-30,1257.5999755859375,0.008496565407114964,2011,12 506 | 2012-01-31,1312.4100341796875,0.04266004446780691,2012,1 507 | 2012-02-29,1365.6800537109375,0.039787344672045144,2012,2 508 | 2012-03-30,1408.469970703125,0.030851475632995395,2012,3 509 | 2012-04-30,1397.9100341796875,-0.0075256995449883846,2012,4 510 | 2012-05-31,1310.3299560546875,-0.0646993081586249,2012,5 511 | 2012-06-29,1362.1600341796875,0.03879271987370014,2012,6 512 | 2012-07-31,1379.3199462890625,0.01251888494028286,2012,7 513 | 2012-08-31,1406.5799560546875,0.019570609701871078,2012,8 514 | 2012-09-28,1440.6700439453125,0.02394711879625433,2012,9 515 | 2012-10-31,1412.1600341796875,-0.0199878423580504,2012,10 516 | 2012-11-30,1416.1800537109375,0.0028426724604573295,2012,11 517 | 2012-12-31,1426.18994140625,0.007043368100712932,2012,12 518 | 2013-01-31,1498.1099853515625,0.04919779199874608,2013,1 519 | 2013-02-28,1514.6800537109375,0.010999927126354336,2013,2 520 | 2013-03-29,1569.18994140625,0.03535529432970552,2013,3 521 | 2013-04-30,1597.5699462890625,0.017924165836651795,2013,4 522 | 2013-05-31,1630.739990234375,0.020550202383511795,2013,5 523 | 2013-06-28,1606.280029296875,-0.015112928770280476,2013,6 524 | 2013-07-31,1685.72998046875,0.048277728051788316,2013,7 525 | 2013-08-30,1632.969970703125,-0.03179826803794494,2013,8 526 | 2013-09-30,1681.550048828125,0.029315591366424698,2013,9 527 | 2013-10-31,1756.5400390625,0.04362997111283384,2013,10 528 | 2013-11-29,1805.81005859375,0.027663289773235178,2013,11 529 | 2013-12-31,1848.3599853515625,0.023289474482053762,2013,12 530 | 2014-01-31,1782.5899658203125,-0.036231407776019076,2014,1 531 | 2014-02-28,1859.449951171875,0.04221337507227485,2014,2 532 | 2014-03-31,1872.3399658203125,0.006908248426944041,2014,3 533 | 2014-04-30,1883.949951171875,0.006181643365585465,2014,4 534 | 2014-05-30,1923.5699462890625,0.02081219601335782,2014,5 535 | 2014-06-30,1960.22998046875,0.018878996713560525,2014,6 536 | 2014-07-31,1930.6700439453125,-0.015194687637991144,2014,7 537 | 2014-08-29,2003.3699951171875,0.03696364440798927,2014,8 538 | 2014-09-30,1972.2900390625,-0.015635436105290168,2014,9 539 | 2014-10-31,2018.050048828125,0.022936398829564553,2014,10 540 | 2014-11-28,2067.56005859375,0.02423747356330619,2014,11 541 | 2014-12-31,2058.89990234375,-0.0041973842211255885,2014,12 542 | 2015-01-30,1994.989990234375,-0.03153277926642595,2015,1 543 | 2015-02-27,2104.5,0.05343887632562794,2015,2 544 | 2015-03-31,2067.889892578125,-0.017549197433963215,2015,3 545 | 2015-04-30,2085.510009765625,0.008484722544634948,2015,4 546 | 2015-05-29,2107.389892578125,0.010436729675337375,2015,5 547 | 2015-06-30,2063.110107421875,-0.021235558871758542,2015,6 548 | 2015-07-31,2103.840087890625,0.01954968299001969,2015,7 549 | 2015-08-31,1972.1800537109373,-0.06462473099312405,2015,8 550 | 2015-09-30,1920.030029296875,-0.026798730963463413,2015,9 551 | 2015-10-30,2079.360107421875,0.07971937954339925,2015,10 552 | 2015-11-30,2080.409912109375,0.0005047417068047011,2015,11 553 | 2015-12-31,2043.93994140625,-0.017685658390257153,2015,12 554 | 2016-01-29,1940.239990234375,-0.05206761730549658,2016,1 555 | 2016-02-29,1932.22998046875,-0.004136905514992684,2016,2 556 | 2016-03-31,2059.739990234375,0.06390499028682939,2016,3 557 | 2016-04-29,2065.300048828125,0.002695761451154688,2016,4 558 | 2016-05-31,2096.949951171875,0.01520836681052451,2016,5 559 | 2016-06-30,2098.860107421875,0.0009105066031533937,2016,6 560 | 2016-07-29,2173.60009765625,0.034990432691053286,2016,7 561 | 2016-08-31,2170.949951171875,-0.0012199867803515119,2016,8 562 | 2016-09-30,2168.27001953125,-0.0012352137017535014,2016,9 563 | 2016-10-31,2126.14990234375,-0.019616837043472835,2016,10 564 | 2016-11-30,2198.81005859375,0.03360354504443386,2016,11 565 | 2016-12-30,2238.830078125,0.018037111299278763,2016,12 566 | 2017-01-31,2278.8701171875,0.01772631462106311,2017,1 567 | 2017-02-28,2363.639892578125,0.036523000738276856,2017,2 568 | 2017-03-31,2362.719970703125,-0.00038927289213130933,2017,3 569 | 2017-04-28,2384.199951171875,0.009050132478198414,2017,4 570 | 2017-05-31,2411.800048828125,0.01150975911098051,2017,5 571 | 2017-06-30,2423.409912109375,0.004802226040504287,2017,6 572 | 2017-07-31,2470.300048828125,0.01916401754710062,2017,7 573 | 2017-08-31,2471.64990234375,0.0005462837796947895,2017,8 574 | 2017-09-29,2519.360107421875,0.01911903935235504,2017,9 575 | 2017-10-31,2575.260009765625,0.021945560031841893,2017,10 576 | 2017-11-30,2647.580078125,0.02769554104663463,2017,11 577 | 2017-12-29,2673.610107421875,0.009783614574871535,2017,12 578 | 2018-01-31,2823.81005859375,0.05465739835832828,2018,1 579 | 2018-02-28,2713.830078125,-0.03972610759808415,2018,2 580 | 2018-03-30,2640.8701171875,-0.027252497366939465,2018,3 581 | 2018-04-30,2648.050048828125,0.002715085811824558,2018,4 582 | 2018-05-31,2705.27001953125,0.021378191183066164,2018,5 583 | 2018-06-29,2718.3701171875,0.004830749386569799,2018,6 584 | 2018-07-31,2816.2900390625,0.03538795073752432,2018,7 585 | 2018-08-31,2901.52001953125,0.029814314524382546,2018,8 586 | 2018-09-28,2913.97998046875,0.004285093286333641,2018,9 587 | 2018-10-31,2711.739990234375,-0.07192934595429712,2018,10 588 | 2018-11-30,2760.169921875,0.01770175205611757,2018,11 589 | 2018-12-31,2506.85009765625,-0.09626521985789882,2018,12 590 | 2019-01-31,2704.10009765625,0.07574215198675649,2019,1 591 | 2019-02-28,2784.489990234375,0.029295553365401794,2019,2 592 | 2019-03-29,2834.39990234375,0.017765510890228597,2019,3 593 | 2019-04-30,2945.830078125,0.038560397417571224,2019,4 594 | 2019-05-31,2752.06005859375,-0.06804089408287428,2019,5 595 | 2019-06-28,2941.760009765625,0.06665830156302643,2019,6 596 | 2019-07-31,2980.3798828125,0.013042724833705499,2019,7 597 | 2019-08-30,2926.4599609375,-0.018257281743262688,2019,8 598 | 2019-09-30,2976.739990234375,0.01703525059107225,2019,9 599 | 2019-10-31,3037.56005859375,0.020225842153316798,2019,10 600 | 2019-11-29,3140.97998046875,0.033480266071379106,2019,11 601 | 2019-12-31,3230.780029296875,0.028188756298542117,2019,12 602 | --------------------------------------------------------------------------------