1
|
{"cells":[{"cell_type":"markdown","metadata":{"id":"b2ZvPC8MM6ag"},"source":["<div class=\"alert alert-block alert-info\">\n","<h1 align=center> Project 2: Stock Beta Estimation using Python</h1>"]},{"cell_type":"markdown","metadata":{"id":"ArETbpL2M6al"},"source":["## 1. Importing the Modules"]},{"cell_type":"markdown","metadata":{"id":"52H-GaA-M6am"},"source":["First, import the packages we need."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"bGrIDvQoM6an","executionInfo":{"status":"ok","timestamp":1761260645791,"user_tz":0,"elapsed":18267,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/"},"outputId":"7850b06b-d3a2-47b7-8d3f-64d81a1cf8f3"},"outputs":[{"output_type":"stream","name":"stdout","text":["Requirement already satisfied: yfinance in /usr/local/lib/python3.12/dist-packages (0.2.66)\n","Requirement already satisfied: pandas>=1.3.0 in /usr/local/lib/python3.12/dist-packages (from yfinance) (2.2.2)\n","Requirement already satisfied: numpy>=1.16.5 in /usr/local/lib/python3.12/dist-packages (from yfinance) (2.0.2)\n","Requirement already satisfied: requests>=2.31 in /usr/local/lib/python3.12/dist-packages (from yfinance) (2.32.4)\n","Requirement already satisfied: multitasking>=0.0.7 in /usr/local/lib/python3.12/dist-packages (from yfinance) (0.0.12)\n","Requirement already satisfied: platformdirs>=2.0.0 in /usr/local/lib/python3.12/dist-packages (from yfinance) (4.5.0)\n","Requirement already satisfied: pytz>=2022.5 in /usr/local/lib/python3.12/dist-packages (from yfinance) (2025.2)\n","Requirement already satisfied: frozendict>=2.3.4 in /usr/local/lib/python3.12/dist-packages (from yfinance) (2.4.6)\n","Requirement already satisfied: peewee>=3.16.2 in /usr/local/lib/python3.12/dist-packages (from yfinance) (3.18.2)\n","Requirement already satisfied: beautifulsoup4>=4.11.1 in /usr/local/lib/python3.12/dist-packages (from yfinance) (4.13.5)\n","Requirement already satisfied: curl_cffi>=0.7 in /usr/local/lib/python3.12/dist-packages (from yfinance) (0.13.0)\n","Requirement already satisfied: protobuf>=3.19.0 in /usr/local/lib/python3.12/dist-packages (from yfinance) (5.29.5)\n","Requirement already satisfied: websockets>=13.0 in /usr/local/lib/python3.12/dist-packages (from yfinance) (15.0.1)\n","Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.12/dist-packages (from beautifulsoup4>=4.11.1->yfinance) (2.8)\n","Requirement already satisfied: typing-extensions>=4.0.0 in /usr/local/lib/python3.12/dist-packages (from beautifulsoup4>=4.11.1->yfinance) (4.15.0)\n","Requirement already satisfied: cffi>=1.12.0 in /usr/local/lib/python3.12/dist-packages (from curl_cffi>=0.7->yfinance) (2.0.0)\n","Requirement already satisfied: certifi>=2024.2.2 in /usr/local/lib/python3.12/dist-packages (from curl_cffi>=0.7->yfinance) (2025.10.5)\n","Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.12/dist-packages (from pandas>=1.3.0->yfinance) (2.9.0.post0)\n","Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.12/dist-packages (from pandas>=1.3.0->yfinance) (2025.2)\n","Requirement already satisfied: charset_normalizer<4,>=2 in /usr/local/lib/python3.12/dist-packages (from requests>=2.31->yfinance) (3.4.4)\n","Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.12/dist-packages (from requests>=2.31->yfinance) (3.11)\n","Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.12/dist-packages (from requests>=2.31->yfinance) (2.5.0)\n","Requirement already satisfied: pycparser in /usr/local/lib/python3.12/dist-packages (from cffi>=1.12.0->curl_cffi>=0.7->yfinance) (2.23)\n","Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.12/dist-packages (from python-dateutil>=2.8.2->pandas>=1.3.0->yfinance) (1.17.0)\n"]}],"source":["import pandas as pd\n","import numpy as np\n","from datetime import datetime, timedelta\n","import os\n","!pip install yfinance"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"yObAKE5IM6ap"},"outputs":[],"source":["import yfinance as yf"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"VCEeG6vLM6aq"},"outputs":[],"source":["import statsmodels.formula.api as sm\n","# Import the module for visualization (graphs).\n","import matplotlib.pyplot as plt\n","from statsmodels.graphics.regressionplots import abline_plot"]},{"cell_type":"markdown","metadata":{"id":"4sQtk0ZsM6ar"},"source":["Set the folder where you want your output files to be saved. I recommend the `/Downloads` folder for this project.\n","\n","<ul>\n"," <li> C:/Users/YourUserName/Downloads </li>\n","</ul>\n","\n","Note that my User name is \"kyh\". Replace \"kyh\" (in the below command line) with your User name."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"fqL8WWWGM6as"},"outputs":[],"source":["#os.chdir('/content/sample_data')"]},{"cell_type":"markdown","metadata":{"id":"CweJaQxFM6as"},"source":["## 2. Load the Dataset"]},{"cell_type":"markdown","metadata":{"id":"0ZVlO9lUM6at"},"source":["Our S&P 500 return and the risk-free return data is collected from the FRED, the Federal Reserve Economic Data.\n","\n","The FRED, is an online database consisting of hundreds of thousands of economic data time series from scores of national, international, public, and private sources. The FRED is created and maintained by the Research Department at the Federal Reserve Bank of St. Louis.\n","\n","\n","https://fred.stlouisfed.org/series/SP500 <br>\n","https://fred.stlouisfed.org/series/DGS1MO"]},{"cell_type":"markdown","metadata":{"id":"Kl9BMCXwM6au"},"source":["Let us load the two aforementioned datasets into Pandas dataframe. Modify as needed if using Colab vs Local"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"ttScav3OM6av","executionInfo":{"status":"ok","timestamp":1761260656725,"user_tz":0,"elapsed":5500,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/","height":113},"outputId":"3bce8d23-9844-4960-e9ed-4c3914e18f3a"},"outputs":[{"output_type":"display_data","data":{"text/plain":["<IPython.core.display.HTML object>"],"text/html":["\n"," <input type=\"file\" id=\"files-03f7f469-9b0d-43ab-957b-fc38483ae09c\" name=\"files[]\" multiple disabled\n"," style=\"border:none\" />\n"," <output id=\"result-03f7f469-9b0d-43ab-957b-fc38483ae09c\">\n"," Upload widget is only available when the cell has been executed in the\n"," current browser session. Please rerun this cell to enable.\n"," </output>\n"," <script>// Copyright 2017 Google LLC\n","//\n","// Licensed under the Apache License, Version 2.0 (the \"License\");\n","// you may not use this file except in compliance with the License.\n","// You may obtain a copy of the License at\n","//\n","// http://www.apache.org/licenses/LICENSE-2.0\n","//\n","// Unless required by applicable law or agreed to in writing, software\n","// distributed under the License is distributed on an \"AS IS\" BASIS,\n","// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n","// See the License for the specific language governing permissions and\n","// limitations under the License.\n","\n","/**\n"," * @fileoverview Helpers for google.colab Python module.\n"," */\n","(function(scope) {\n","function span(text, styleAttributes = {}) {\n"," const element = document.createElement('span');\n"," element.textContent = text;\n"," for (const key of Object.keys(styleAttributes)) {\n"," element.style[key] = styleAttributes[key];\n"," }\n"," return element;\n","}\n","\n","// Max number of bytes which will be uploaded at a time.\n","const MAX_PAYLOAD_SIZE = 100 * 1024;\n","\n","function _uploadFiles(inputId, outputId) {\n"," const steps = uploadFilesStep(inputId, outputId);\n"," const outputElement = document.getElementById(outputId);\n"," // Cache steps on the outputElement to make it available for the next call\n"," // to uploadFilesContinue from Python.\n"," outputElement.steps = steps;\n","\n"," return _uploadFilesContinue(outputId);\n","}\n","\n","// This is roughly an async generator (not supported in the browser yet),\n","// where there are multiple asynchronous steps and the Python side is going\n","// to poll for completion of each step.\n","// This uses a Promise to block the python side on completion of each step,\n","// then passes the result of the previous step as the input to the next step.\n","function _uploadFilesContinue(outputId) {\n"," const outputElement = document.getElementById(outputId);\n"," const steps = outputElement.steps;\n","\n"," const next = steps.next(outputElement.lastPromiseValue);\n"," return Promise.resolve(next.value.promise).then((value) => {\n"," // Cache the last promise value to make it available to the next\n"," // step of the generator.\n"," outputElement.lastPromiseValue = value;\n"," return next.value.response;\n"," });\n","}\n","\n","/**\n"," * Generator function which is called between each async step of the upload\n"," * process.\n"," * @param {string} inputId Element ID of the input file picker element.\n"," * @param {string} outputId Element ID of the output display.\n"," * @return {!Iterable<!Object>} Iterable of next steps.\n"," */\n","function* uploadFilesStep(inputId, outputId) {\n"," const inputElement = document.getElementById(inputId);\n"," inputElement.disabled = false;\n","\n"," const outputElement = document.getElementById(outputId);\n"," outputElement.innerHTML = '';\n","\n"," const pickedPromise = new Promise((resolve) => {\n"," inputElement.addEventListener('change', (e) => {\n"," resolve(e.target.files);\n"," });\n"," });\n","\n"," const cancel = document.createElement('button');\n"," inputElement.parentElement.appendChild(cancel);\n"," cancel.textContent = 'Cancel upload';\n"," const cancelPromise = new Promise((resolve) => {\n"," cancel.onclick = () => {\n"," resolve(null);\n"," };\n"," });\n","\n"," // Wait for the user to pick the files.\n"," const files = yield {\n"," promise: Promise.race([pickedPromise, cancelPromise]),\n"," response: {\n"," action: 'starting',\n"," }\n"," };\n","\n"," cancel.remove();\n","\n"," // Disable the input element since further picks are not allowed.\n"," inputElement.disabled = true;\n","\n"," if (!files) {\n"," return {\n"," response: {\n"," action: 'complete',\n"," }\n"," };\n"," }\n","\n"," for (const file of files) {\n"," const li = document.createElement('li');\n"," li.append(span(file.name, {fontWeight: 'bold'}));\n"," li.append(span(\n"," `(${file.type || 'n/a'}) - ${file.size} bytes, ` +\n"," `last modified: ${\n"," file.lastModifiedDate ? file.lastModifiedDate.toLocaleDateString() :\n"," 'n/a'} - `));\n"," const percent = span('0% done');\n"," li.appendChild(percent);\n","\n"," outputElement.appendChild(li);\n","\n"," const fileDataPromise = new Promise((resolve) => {\n"," const reader = new FileReader();\n"," reader.onload = (e) => {\n"," resolve(e.target.result);\n"," };\n"," reader.readAsArrayBuffer(file);\n"," });\n"," // Wait for the data to be ready.\n"," let fileData = yield {\n"," promise: fileDataPromise,\n"," response: {\n"," action: 'continue',\n"," }\n"," };\n","\n"," // Use a chunked sending to avoid message size limits. See b/62115660.\n"," let position = 0;\n"," do {\n"," const length = Math.min(fileData.byteLength - position, MAX_PAYLOAD_SIZE);\n"," const chunk = new Uint8Array(fileData, position, length);\n"," position += length;\n","\n"," const base64 = btoa(String.fromCharCode.apply(null, chunk));\n"," yield {\n"," response: {\n"," action: 'append',\n"," file: file.name,\n"," data: base64,\n"," },\n"," };\n","\n"," let percentDone = fileData.byteLength === 0 ?\n"," 100 :\n"," Math.round((position / fileData.byteLength) * 100);\n"," percent.textContent = `${percentDone}% done`;\n","\n"," } while (position < fileData.byteLength);\n"," }\n","\n"," // All done.\n"," yield {\n"," response: {\n"," action: 'complete',\n"," }\n"," };\n","}\n","\n","scope.google = scope.google || {};\n","scope.google.colab = scope.google.colab || {};\n","scope.google.colab._files = {\n"," _uploadFiles,\n"," _uploadFilesContinue,\n","};\n","})(self);\n","</script> "]},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Saving DGS1MO_20120901_20220901.csv to DGS1MO_20120901_20220901.csv\n","Saving SP500_201209014_20220901.csv to SP500_201209014_20220901.csv\n"]}],"source":["from google.colab import files\n","uploaded = files.upload()\n","#snp500 = pd.read_csv('/content/sample_data/SP500_201209014_20220901.csv')\n","#rf = pd.read_csv('/content/sample_data/DGS1MO_20120901_20220901.csv')"]},{"cell_type":"code","source":["import io\n","\n","snp500 = pd.read_csv(io.BytesIO(uploaded['SP500_201209014_20220901.csv']))\n","rf = pd.read_csv(io.BytesIO(uploaded['DGS1MO_20120901_20220901.csv']))"],"metadata":{"id":"hVJIePKZd3jX"},"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"5xFOAKeTM6aw"},"source":["Now, let us check how the dataframes look. The `dataframe.head()` function is used to print the first n rows of the dataframe."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"ZgTqT3YZM6aw","executionInfo":{"status":"ok","timestamp":1761260656908,"user_tz":0,"elapsed":150,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/","height":363},"outputId":"2d7d001f-3917-4cf5-dd7f-10dce0482c60"},"outputs":[{"output_type":"execute_result","data":{"text/plain":[" DATE SP500\n","0 2012-09-04 1404.94\n","1 2012-09-05 1403.44\n","2 2012-09-06 1432.12\n","3 2012-09-07 1437.92\n","4 2012-09-10 1429.08\n","5 2012-09-11 1433.56\n","6 2012-09-12 1436.56\n","7 2012-09-13 1459.99\n","8 2012-09-14 1465.77\n","9 2012-09-17 1461.19"],"text/html":["\n"," <div id=\"df-ccfb26df-58d7-48bd-a94b-51d9c0ad1b9b\" class=\"colab-df-container\">\n"," <div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>DATE</th>\n"," <th>SP500</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>2012-09-04</td>\n"," <td>1404.94</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>2012-09-05</td>\n"," <td>1403.44</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>2012-09-06</td>\n"," <td>1432.12</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>2012-09-07</td>\n"," <td>1437.92</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>2012-09-10</td>\n"," <td>1429.08</td>\n"," </tr>\n"," <tr>\n"," <th>5</th>\n"," <td>2012-09-11</td>\n"," <td>1433.56</td>\n"," </tr>\n"," <tr>\n"," <th>6</th>\n"," <td>2012-09-12</td>\n"," <td>1436.56</td>\n"," </tr>\n"," <tr>\n"," <th>7</th>\n"," <td>2012-09-13</td>\n"," <td>1459.99</td>\n"," </tr>\n"," <tr>\n"," <th>8</th>\n"," <td>2012-09-14</td>\n"," <td>1465.77</td>\n"," </tr>\n"," <tr>\n"," <th>9</th>\n"," <td>2012-09-17</td>\n"," <td>1461.19</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>\n"," <div class=\"colab-df-buttons\">\n","\n"," <div class=\"colab-df-container\">\n"," <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-ccfb26df-58d7-48bd-a94b-51d9c0ad1b9b')\"\n"," title=\"Convert this dataframe to an interactive table.\"\n"," style=\"display:none;\">\n","\n"," <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n"," <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n"," </svg>\n"," </button>\n","\n"," <style>\n"," .colab-df-container {\n"," display:flex;\n"," gap: 12px;\n"," }\n","\n"," .colab-df-convert {\n"," background-color: #E8F0FE;\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: #1967D2;\n"," height: 32px;\n"," padding: 0 0 0 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-convert:hover {\n"," background-color: #E2EBFA;\n"," box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: #174EA6;\n"," }\n","\n"," .colab-df-buttons div {\n"," margin-bottom: 4px;\n"," }\n","\n"," [theme=dark] .colab-df-convert {\n"," background-color: #3B4455;\n"," fill: #D2E3FC;\n"," }\n","\n"," [theme=dark] .colab-df-convert:hover {\n"," background-color: #434B5C;\n"," box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n"," filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n"," fill: #FFFFFF;\n"," }\n"," </style>\n","\n"," <script>\n"," const buttonEl =\n"," document.querySelector('#df-ccfb26df-58d7-48bd-a94b-51d9c0ad1b9b button.colab-df-convert');\n"," buttonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n"," async function convertToInteractive(key) {\n"," const element = document.querySelector('#df-ccfb26df-58d7-48bd-a94b-51d9c0ad1b9b');\n"," const dataTable =\n"," await google.colab.kernel.invokeFunction('convertToInteractive',\n"," [key], {});\n"," if (!dataTable) return;\n","\n"," const docLinkHtml = 'Like what you see? Visit the ' +\n"," '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n"," + ' to learn more about interactive tables.';\n"," element.innerHTML = '';\n"," dataTable['output_type'] = 'display_data';\n"," await google.colab.output.renderOutput(dataTable, element);\n"," const docLink = document.createElement('div');\n"," docLink.innerHTML = docLinkHtml;\n"," element.appendChild(docLink);\n"," }\n"," </script>\n"," </div>\n","\n","\n"," <div id=\"df-c1bbc825-5793-493f-a0fc-21fc5c226451\">\n"," <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-c1bbc825-5793-493f-a0fc-21fc5c226451')\"\n"," title=\"Suggest charts\"\n"," style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n"," width=\"24px\">\n"," <g>\n"," <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n"," </g>\n","</svg>\n"," </button>\n","\n","<style>\n"," .colab-df-quickchart {\n"," --bg-color: #E8F0FE;\n"," --fill-color: #1967D2;\n"," --hover-bg-color: #E2EBFA;\n"," --hover-fill-color: #174EA6;\n"," --disabled-fill-color: #AAA;\n"," --disabled-bg-color: #DDD;\n"," }\n","\n"," [theme=dark] .colab-df-quickchart {\n"," --bg-color: #3B4455;\n"," --fill-color: #D2E3FC;\n"," --hover-bg-color: #434B5C;\n"," --hover-fill-color: #FFFFFF;\n"," --disabled-bg-color: #3B4455;\n"," --disabled-fill-color: #666;\n"," }\n","\n"," .colab-df-quickchart {\n"," background-color: var(--bg-color);\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: var(--fill-color);\n"," height: 32px;\n"," padding: 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-quickchart:hover {\n"," background-color: var(--hover-bg-color);\n"," box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: var(--button-hover-fill-color);\n"," }\n","\n"," .colab-df-quickchart-complete:disabled,\n"," .colab-df-quickchart-complete:disabled:hover {\n"," background-color: var(--disabled-bg-color);\n"," fill: var(--disabled-fill-color);\n"," box-shadow: none;\n"," }\n","\n"," .colab-df-spinner {\n"," border: 2px solid var(--fill-color);\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," animation:\n"," spin 1s steps(1) infinite;\n"," }\n","\n"," @keyframes spin {\n"," 0% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," border-left-color: var(--fill-color);\n"," }\n"," 20% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 30% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," border-right-color: var(--fill-color);\n"," }\n"," 40% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 60% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," }\n"," 80% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-bottom-color: var(--fill-color);\n"," }\n"," 90% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," }\n"," }\n","</style>\n","\n"," <script>\n"," async function quickchart(key) {\n"," const quickchartButtonEl =\n"," document.querySelector('#' + key + ' button');\n"," quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n"," quickchartButtonEl.classList.add('colab-df-spinner');\n"," try {\n"," const charts = await google.colab.kernel.invokeFunction(\n"," 'suggestCharts', [key], {});\n"," } catch (error) {\n"," console.error('Error during call to suggestCharts:', error);\n"," }\n"," quickchartButtonEl.classList.remove('colab-df-spinner');\n"," quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n"," }\n"," (() => {\n"," let quickchartButtonEl =\n"," document.querySelector('#df-c1bbc825-5793-493f-a0fc-21fc5c226451 button');\n"," quickchartButtonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n"," })();\n"," </script>\n"," </div>\n","\n"," </div>\n"," </div>\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"snp500","summary":"{\n \"name\": \"snp500\",\n \"rows\": 2609,\n \"fields\": [\n {\n \"column\": \"DATE\",\n \"properties\": {\n \"dtype\": \"object\",\n \"num_unique_values\": 2609,\n \"samples\": [\n \"2018-05-01\",\n \"2019-09-16\",\n \"2013-06-25\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"SP500\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 2506,\n \"samples\": [\n \"3925.43\",\n \"1409.15\",\n \"2430.06\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"}},"metadata":{},"execution_count":7}],"source":["snp500.head(10)"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"d2yW0xpfM6ax","executionInfo":{"status":"ok","timestamp":1761260656975,"user_tz":0,"elapsed":50,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/","height":206},"outputId":"f0ed4e0b-fce4-43ca-bebc-f01c14bf084d"},"outputs":[{"output_type":"execute_result","data":{"text/plain":[" DATE DGS1MO\n","0 2012-09-04 0.10\n","1 2012-09-05 0.11\n","2 2012-09-06 0.10\n","3 2012-09-07 0.09\n","4 2012-09-10 0.09"],"text/html":["\n"," <div id=\"df-ea22da8c-2e91-4bbc-a80a-a927715a916b\" class=\"colab-df-container\">\n"," <div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>DATE</th>\n"," <th>DGS1MO</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>2012-09-04</td>\n"," <td>0.10</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>2012-09-05</td>\n"," <td>0.11</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>2012-09-06</td>\n"," <td>0.10</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>2012-09-07</td>\n"," <td>0.09</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>2012-09-10</td>\n"," <td>0.09</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>\n"," <div class=\"colab-df-buttons\">\n","\n"," <div class=\"colab-df-container\">\n"," <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-ea22da8c-2e91-4bbc-a80a-a927715a916b')\"\n"," title=\"Convert this dataframe to an interactive table.\"\n"," style=\"display:none;\">\n","\n"," <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n"," <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n"," </svg>\n"," </button>\n","\n"," <style>\n"," .colab-df-container {\n"," display:flex;\n"," gap: 12px;\n"," }\n","\n"," .colab-df-convert {\n"," background-color: #E8F0FE;\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: #1967D2;\n"," height: 32px;\n"," padding: 0 0 0 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-convert:hover {\n"," background-color: #E2EBFA;\n"," box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: #174EA6;\n"," }\n","\n"," .colab-df-buttons div {\n"," margin-bottom: 4px;\n"," }\n","\n"," [theme=dark] .colab-df-convert {\n"," background-color: #3B4455;\n"," fill: #D2E3FC;\n"," }\n","\n"," [theme=dark] .colab-df-convert:hover {\n"," background-color: #434B5C;\n"," box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n"," filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n"," fill: #FFFFFF;\n"," }\n"," </style>\n","\n"," <script>\n"," const buttonEl =\n"," document.querySelector('#df-ea22da8c-2e91-4bbc-a80a-a927715a916b button.colab-df-convert');\n"," buttonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n"," async function convertToInteractive(key) {\n"," const element = document.querySelector('#df-ea22da8c-2e91-4bbc-a80a-a927715a916b');\n"," const dataTable =\n"," await google.colab.kernel.invokeFunction('convertToInteractive',\n"," [key], {});\n"," if (!dataTable) return;\n","\n"," const docLinkHtml = 'Like what you see? Visit the ' +\n"," '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n"," + ' to learn more about interactive tables.';\n"," element.innerHTML = '';\n"," dataTable['output_type'] = 'display_data';\n"," await google.colab.output.renderOutput(dataTable, element);\n"," const docLink = document.createElement('div');\n"," docLink.innerHTML = docLinkHtml;\n"," element.appendChild(docLink);\n"," }\n"," </script>\n"," </div>\n","\n","\n"," <div id=\"df-88c0e521-1911-4076-acf4-32a498082409\">\n"," <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-88c0e521-1911-4076-acf4-32a498082409')\"\n"," title=\"Suggest charts\"\n"," style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n"," width=\"24px\">\n"," <g>\n"," <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n"," </g>\n","</svg>\n"," </button>\n","\n","<style>\n"," .colab-df-quickchart {\n"," --bg-color: #E8F0FE;\n"," --fill-color: #1967D2;\n"," --hover-bg-color: #E2EBFA;\n"," --hover-fill-color: #174EA6;\n"," --disabled-fill-color: #AAA;\n"," --disabled-bg-color: #DDD;\n"," }\n","\n"," [theme=dark] .colab-df-quickchart {\n"," --bg-color: #3B4455;\n"," --fill-color: #D2E3FC;\n"," --hover-bg-color: #434B5C;\n"," --hover-fill-color: #FFFFFF;\n"," --disabled-bg-color: #3B4455;\n"," --disabled-fill-color: #666;\n"," }\n","\n"," .colab-df-quickchart {\n"," background-color: var(--bg-color);\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: var(--fill-color);\n"," height: 32px;\n"," padding: 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-quickchart:hover {\n"," background-color: var(--hover-bg-color);\n"," box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: var(--button-hover-fill-color);\n"," }\n","\n"," .colab-df-quickchart-complete:disabled,\n"," .colab-df-quickchart-complete:disabled:hover {\n"," background-color: var(--disabled-bg-color);\n"," fill: var(--disabled-fill-color);\n"," box-shadow: none;\n"," }\n","\n"," .colab-df-spinner {\n"," border: 2px solid var(--fill-color);\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," animation:\n"," spin 1s steps(1) infinite;\n"," }\n","\n"," @keyframes spin {\n"," 0% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," border-left-color: var(--fill-color);\n"," }\n"," 20% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 30% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," border-right-color: var(--fill-color);\n"," }\n"," 40% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 60% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," }\n"," 80% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-bottom-color: var(--fill-color);\n"," }\n"," 90% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," }\n"," }\n","</style>\n","\n"," <script>\n"," async function quickchart(key) {\n"," const quickchartButtonEl =\n"," document.querySelector('#' + key + ' button');\n"," quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n"," quickchartButtonEl.classList.add('colab-df-spinner');\n"," try {\n"," const charts = await google.colab.kernel.invokeFunction(\n"," 'suggestCharts', [key], {});\n"," } catch (error) {\n"," console.error('Error during call to suggestCharts:', error);\n"," }\n"," quickchartButtonEl.classList.remove('colab-df-spinner');\n"," quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n"," }\n"," (() => {\n"," let quickchartButtonEl =\n"," document.querySelector('#df-88c0e521-1911-4076-acf4-32a498082409 button');\n"," quickchartButtonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n"," })();\n"," </script>\n"," </div>\n","\n"," </div>\n"," </div>\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"rf","summary":"{\n \"name\": \"rf\",\n \"rows\": 2608,\n \"fields\": [\n {\n \"column\": \"DATE\",\n \"properties\": {\n \"dtype\": \"object\",\n \"num_unique_values\": 2608,\n \"samples\": [\n \"2018-05-01\",\n \"2019-09-16\",\n \"2013-06-25\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"DGS1MO\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 239,\n \"samples\": [\n \"0.18\",\n \"0.03\",\n \"1.09\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"}},"metadata":{},"execution_count":8}],"source":["rf.head()"]},{"cell_type":"markdown","metadata":{"id":"kh30lP-xM6ay"},"source":["Now, we proceed to collect the daily stock data from Yahoo! Finance."]},{"cell_type":"markdown","metadata":{"id":"hHlgtma6M6az"},"source":["We will get Boeing's daily stock data using its ticker symbol \"BA\"<br>"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"OKag5rflM6az","executionInfo":{"status":"ok","timestamp":1761260658092,"user_tz":0,"elapsed":1101,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/"},"outputId":"0cb92120-fd26-4c66-c1a7-22472c9a92c4"},"outputs":[{"output_type":"stream","name":"stderr","text":["\r[*********************100%***********************] 1 of 1 completed\n"]}],"source":["stock_df = yf.download(\"BA\", start=\"2018-01-01\", end=\"2021-12-31\", multi_level_index = False, auto_adjust = True)"]},{"cell_type":"markdown","metadata":{"id":"eNsOPQNsM6a0"},"source":["Let us change the data type to Pandas dataframe for tractability."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"2Rbj2RDFM6a0"},"outputs":[],"source":["stock_df = pd.DataFrame(stock_df)"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"skt70sZYM6a1","executionInfo":{"status":"ok","timestamp":1761260658292,"user_tz":0,"elapsed":134,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/","height":237},"outputId":"41a44dbf-f67e-4be3-cd83-8cb95cbb74ad"},"outputs":[{"output_type":"execute_result","data":{"text/plain":[" Close High Low Open Volume\n","Date \n","2018-01-02 282.886475 283.029418 281.514162 281.847716 2978900\n","2018-01-03 283.801270 284.468376 281.580809 282.028717 3211200\n","2018-01-04 282.724365 284.392103 281.580762 283.934656 4171700\n","2018-01-05 294.322357 294.370024 282.772087 282.819725 6177700\n","2018-01-08 295.570709 296.247326 291.377547 294.150759 4124900"],"text/html":["\n"," <div id=\"df-058f2b0c-2b3c-4b01-a57a-6c794034e9b3\" class=\"colab-df-container\">\n"," <div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>Close</th>\n"," <th>High</th>\n"," <th>Low</th>\n"," <th>Open</th>\n"," <th>Volume</th>\n"," </tr>\n"," <tr>\n"," <th>Date</th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," <th></th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>2018-01-02</th>\n"," <td>282.886475</td>\n"," <td>283.029418</td>\n"," <td>281.514162</td>\n"," <td>281.847716</td>\n"," <td>2978900</td>\n"," </tr>\n"," <tr>\n"," <th>2018-01-03</th>\n"," <td>283.801270</td>\n"," <td>284.468376</td>\n"," <td>281.580809</td>\n"," <td>282.028717</td>\n"," <td>3211200</td>\n"," </tr>\n"," <tr>\n"," <th>2018-01-04</th>\n"," <td>282.724365</td>\n"," <td>284.392103</td>\n"," <td>281.580762</td>\n"," <td>283.934656</td>\n"," <td>4171700</td>\n"," </tr>\n"," <tr>\n"," <th>2018-01-05</th>\n"," <td>294.322357</td>\n"," <td>294.370024</td>\n"," <td>282.772087</td>\n"," <td>282.819725</td>\n"," <td>6177700</td>\n"," </tr>\n"," <tr>\n"," <th>2018-01-08</th>\n"," <td>295.570709</td>\n"," <td>296.247326</td>\n"," <td>291.377547</td>\n"," <td>294.150759</td>\n"," <td>4124900</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>\n"," <div class=\"colab-df-buttons\">\n","\n"," <div class=\"colab-df-container\">\n"," <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-058f2b0c-2b3c-4b01-a57a-6c794034e9b3')\"\n"," title=\"Convert this dataframe to an interactive table.\"\n"," style=\"display:none;\">\n","\n"," <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n"," <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n"," </svg>\n"," </button>\n","\n"," <style>\n"," .colab-df-container {\n"," display:flex;\n"," gap: 12px;\n"," }\n","\n"," .colab-df-convert {\n"," background-color: #E8F0FE;\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: #1967D2;\n"," height: 32px;\n"," padding: 0 0 0 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-convert:hover {\n"," background-color: #E2EBFA;\n"," box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: #174EA6;\n"," }\n","\n"," .colab-df-buttons div {\n"," margin-bottom: 4px;\n"," }\n","\n"," [theme=dark] .colab-df-convert {\n"," background-color: #3B4455;\n"," fill: #D2E3FC;\n"," }\n","\n"," [theme=dark] .colab-df-convert:hover {\n"," background-color: #434B5C;\n"," box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n"," filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n"," fill: #FFFFFF;\n"," }\n"," </style>\n","\n"," <script>\n"," const buttonEl =\n"," document.querySelector('#df-058f2b0c-2b3c-4b01-a57a-6c794034e9b3 button.colab-df-convert');\n"," buttonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n"," async function convertToInteractive(key) {\n"," const element = document.querySelector('#df-058f2b0c-2b3c-4b01-a57a-6c794034e9b3');\n"," const dataTable =\n"," await google.colab.kernel.invokeFunction('convertToInteractive',\n"," [key], {});\n"," if (!dataTable) return;\n","\n"," const docLinkHtml = 'Like what you see? Visit the ' +\n"," '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n"," + ' to learn more about interactive tables.';\n"," element.innerHTML = '';\n"," dataTable['output_type'] = 'display_data';\n"," await google.colab.output.renderOutput(dataTable, element);\n"," const docLink = document.createElement('div');\n"," docLink.innerHTML = docLinkHtml;\n"," element.appendChild(docLink);\n"," }\n"," </script>\n"," </div>\n","\n","\n"," <div id=\"df-dc202e24-461e-4700-aa67-076e147a693a\">\n"," <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-dc202e24-461e-4700-aa67-076e147a693a')\"\n"," title=\"Suggest charts\"\n"," style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n"," width=\"24px\">\n"," <g>\n"," <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n"," </g>\n","</svg>\n"," </button>\n","\n","<style>\n"," .colab-df-quickchart {\n"," --bg-color: #E8F0FE;\n"," --fill-color: #1967D2;\n"," --hover-bg-color: #E2EBFA;\n"," --hover-fill-color: #174EA6;\n"," --disabled-fill-color: #AAA;\n"," --disabled-bg-color: #DDD;\n"," }\n","\n"," [theme=dark] .colab-df-quickchart {\n"," --bg-color: #3B4455;\n"," --fill-color: #D2E3FC;\n"," --hover-bg-color: #434B5C;\n"," --hover-fill-color: #FFFFFF;\n"," --disabled-bg-color: #3B4455;\n"," --disabled-fill-color: #666;\n"," }\n","\n"," .colab-df-quickchart {\n"," background-color: var(--bg-color);\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: var(--fill-color);\n"," height: 32px;\n"," padding: 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-quickchart:hover {\n"," background-color: var(--hover-bg-color);\n"," box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: var(--button-hover-fill-color);\n"," }\n","\n"," .colab-df-quickchart-complete:disabled,\n"," .colab-df-quickchart-complete:disabled:hover {\n"," background-color: var(--disabled-bg-color);\n"," fill: var(--disabled-fill-color);\n"," box-shadow: none;\n"," }\n","\n"," .colab-df-spinner {\n"," border: 2px solid var(--fill-color);\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," animation:\n"," spin 1s steps(1) infinite;\n"," }\n","\n"," @keyframes spin {\n"," 0% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," border-left-color: var(--fill-color);\n"," }\n"," 20% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 30% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," border-right-color: var(--fill-color);\n"," }\n"," 40% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 60% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," }\n"," 80% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-bottom-color: var(--fill-color);\n"," }\n"," 90% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," }\n"," }\n","</style>\n","\n"," <script>\n"," async function quickchart(key) {\n"," const quickchartButtonEl =\n"," document.querySelector('#' + key + ' button');\n"," quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n"," quickchartButtonEl.classList.add('colab-df-spinner');\n"," try {\n"," const charts = await google.colab.kernel.invokeFunction(\n"," 'suggestCharts', [key], {});\n"," } catch (error) {\n"," console.error('Error during call to suggestCharts:', error);\n"," }\n"," quickchartButtonEl.classList.remove('colab-df-spinner');\n"," quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n"," }\n"," (() => {\n"," let quickchartButtonEl =\n"," document.querySelector('#df-dc202e24-461e-4700-aa67-076e147a693a button');\n"," quickchartButtonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n"," })();\n"," </script>\n"," </div>\n","\n"," </div>\n"," </div>\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"stock_df","summary":"{\n \"name\": \"stock_df\",\n \"rows\": 1007,\n \"fields\": [\n {\n \"column\": \"Date\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2018-01-02 00:00:00\",\n \"max\": \"2021-12-30 00:00:00\",\n \"num_unique_values\": 1007,\n \"samples\": [\n \"2021-09-08 00:00:00\",\n \"2020-07-06 00:00:00\",\n \"2020-09-17 00:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Close\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 77.62237911493436,\n \"min\": 95.01000213623047,\n \"max\": 430.2999572753906,\n \"num_unique_values\": 990,\n \"samples\": [\n 354.46087646484375,\n 367.9747314453125,\n 331.7660827636719\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"High\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 77.29740405800827,\n \"min\": 103.56999969482422,\n \"max\": 435.5637290030435,\n \"num_unique_values\": 995,\n \"samples\": [\n 215.63999938964844,\n 317.5904399278108,\n 131.2899932861328\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Low\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 77.42474922094743,\n \"min\": 89.0,\n \"max\": 429.88003572832554,\n \"num_unique_values\": 994,\n \"samples\": [\n 212.1699981689453,\n 313.16674740898316,\n 122.5\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Open\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 77.27435420583971,\n \"min\": 98.75,\n \"max\": 435.5637290030435,\n \"num_unique_values\": 992,\n \"samples\": [\n 347.97078950027515,\n 369.6251765450559,\n 328.54526970517907\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Volume\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 14075166,\n \"min\": 1390900,\n \"max\": 103212800,\n \"num_unique_values\": 1003,\n \"samples\": [\n 41792300,\n 38116200,\n 9218900\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"}},"metadata":{},"execution_count":11}],"source":["stock_df.head()"]},{"cell_type":"markdown","metadata":{"id":"_CD4EsPuM6a2"},"source":["## 3. Clean the Datasets"]},{"cell_type":"markdown","metadata":{"id":"dx39a0RzM6a2"},"source":["Change the column name of the dataframes"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"zua8lGtMM6a3"},"outputs":[],"source":["rf = rf.rename(columns = {'DGS1MO':'rf_rate'})\n","\n","snp500 = snp500.rename(columns = {'SP500':'snp500_close'})"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"i3ExTUd5M6a3","executionInfo":{"status":"ok","timestamp":1761260658475,"user_tz":0,"elapsed":33,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/","height":206},"outputId":"fc0f2235-1b10-45f2-81d8-476bb405e608"},"outputs":[{"output_type":"execute_result","data":{"text/plain":[" DATE rf_rate\n","0 2012-09-04 0.10\n","1 2012-09-05 0.11\n","2 2012-09-06 0.10\n","3 2012-09-07 0.09\n","4 2012-09-10 0.09"],"text/html":["\n"," <div id=\"df-9e4a49fb-4999-4eef-9c18-44a905de1e04\" class=\"colab-df-container\">\n"," <div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>DATE</th>\n"," <th>rf_rate</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>2012-09-04</td>\n"," <td>0.10</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>2012-09-05</td>\n"," <td>0.11</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>2012-09-06</td>\n"," <td>0.10</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>2012-09-07</td>\n"," <td>0.09</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>2012-09-10</td>\n"," <td>0.09</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>\n"," <div class=\"colab-df-buttons\">\n","\n"," <div class=\"colab-df-container\">\n"," <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-9e4a49fb-4999-4eef-9c18-44a905de1e04')\"\n"," title=\"Convert this dataframe to an interactive table.\"\n"," style=\"display:none;\">\n","\n"," <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n"," <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n"," </svg>\n"," </button>\n","\n"," <style>\n"," .colab-df-container {\n"," display:flex;\n"," gap: 12px;\n"," }\n","\n"," .colab-df-convert {\n"," background-color: #E8F0FE;\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: #1967D2;\n"," height: 32px;\n"," padding: 0 0 0 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-convert:hover {\n"," background-color: #E2EBFA;\n"," box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: #174EA6;\n"," }\n","\n"," .colab-df-buttons div {\n"," margin-bottom: 4px;\n"," }\n","\n"," [theme=dark] .colab-df-convert {\n"," background-color: #3B4455;\n"," fill: #D2E3FC;\n"," }\n","\n"," [theme=dark] .colab-df-convert:hover {\n"," background-color: #434B5C;\n"," box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n"," filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n"," fill: #FFFFFF;\n"," }\n"," </style>\n","\n"," <script>\n"," const buttonEl =\n"," document.querySelector('#df-9e4a49fb-4999-4eef-9c18-44a905de1e04 button.colab-df-convert');\n"," buttonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n"," async function convertToInteractive(key) {\n"," const element = document.querySelector('#df-9e4a49fb-4999-4eef-9c18-44a905de1e04');\n"," const dataTable =\n"," await google.colab.kernel.invokeFunction('convertToInteractive',\n"," [key], {});\n"," if (!dataTable) return;\n","\n"," const docLinkHtml = 'Like what you see? Visit the ' +\n"," '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n"," + ' to learn more about interactive tables.';\n"," element.innerHTML = '';\n"," dataTable['output_type'] = 'display_data';\n"," await google.colab.output.renderOutput(dataTable, element);\n"," const docLink = document.createElement('div');\n"," docLink.innerHTML = docLinkHtml;\n"," element.appendChild(docLink);\n"," }\n"," </script>\n"," </div>\n","\n","\n"," <div id=\"df-eca66593-a98b-4648-b977-7c5a137d1eb8\">\n"," <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-eca66593-a98b-4648-b977-7c5a137d1eb8')\"\n"," title=\"Suggest charts\"\n"," style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n"," width=\"24px\">\n"," <g>\n"," <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n"," </g>\n","</svg>\n"," </button>\n","\n","<style>\n"," .colab-df-quickchart {\n"," --bg-color: #E8F0FE;\n"," --fill-color: #1967D2;\n"," --hover-bg-color: #E2EBFA;\n"," --hover-fill-color: #174EA6;\n"," --disabled-fill-color: #AAA;\n"," --disabled-bg-color: #DDD;\n"," }\n","\n"," [theme=dark] .colab-df-quickchart {\n"," --bg-color: #3B4455;\n"," --fill-color: #D2E3FC;\n"," --hover-bg-color: #434B5C;\n"," --hover-fill-color: #FFFFFF;\n"," --disabled-bg-color: #3B4455;\n"," --disabled-fill-color: #666;\n"," }\n","\n"," .colab-df-quickchart {\n"," background-color: var(--bg-color);\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: var(--fill-color);\n"," height: 32px;\n"," padding: 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-quickchart:hover {\n"," background-color: var(--hover-bg-color);\n"," box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: var(--button-hover-fill-color);\n"," }\n","\n"," .colab-df-quickchart-complete:disabled,\n"," .colab-df-quickchart-complete:disabled:hover {\n"," background-color: var(--disabled-bg-color);\n"," fill: var(--disabled-fill-color);\n"," box-shadow: none;\n"," }\n","\n"," .colab-df-spinner {\n"," border: 2px solid var(--fill-color);\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," animation:\n"," spin 1s steps(1) infinite;\n"," }\n","\n"," @keyframes spin {\n"," 0% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," border-left-color: var(--fill-color);\n"," }\n"," 20% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 30% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," border-right-color: var(--fill-color);\n"," }\n"," 40% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 60% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," }\n"," 80% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-bottom-color: var(--fill-color);\n"," }\n"," 90% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," }\n"," }\n","</style>\n","\n"," <script>\n"," async function quickchart(key) {\n"," const quickchartButtonEl =\n"," document.querySelector('#' + key + ' button');\n"," quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n"," quickchartButtonEl.classList.add('colab-df-spinner');\n"," try {\n"," const charts = await google.colab.kernel.invokeFunction(\n"," 'suggestCharts', [key], {});\n"," } catch (error) {\n"," console.error('Error during call to suggestCharts:', error);\n"," }\n"," quickchartButtonEl.classList.remove('colab-df-spinner');\n"," quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n"," }\n"," (() => {\n"," let quickchartButtonEl =\n"," document.querySelector('#df-eca66593-a98b-4648-b977-7c5a137d1eb8 button');\n"," quickchartButtonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n"," })();\n"," </script>\n"," </div>\n","\n"," </div>\n"," </div>\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"rf","summary":"{\n \"name\": \"rf\",\n \"rows\": 2608,\n \"fields\": [\n {\n \"column\": \"DATE\",\n \"properties\": {\n \"dtype\": \"object\",\n \"num_unique_values\": 2608,\n \"samples\": [\n \"2018-05-01\",\n \"2019-09-16\",\n \"2013-06-25\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"rf_rate\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 239,\n \"samples\": [\n \"0.18\",\n \"0.03\",\n \"1.09\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"}},"metadata":{},"execution_count":13}],"source":["rf.head()"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"apk5xv6fM6a4","executionInfo":{"status":"ok","timestamp":1761260658475,"user_tz":0,"elapsed":0,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/","height":206},"outputId":"284de5d3-c45b-493a-e70a-dfaa4a1b7b91"},"outputs":[{"output_type":"execute_result","data":{"text/plain":[" DATE snp500_close\n","0 2012-09-04 1404.94\n","1 2012-09-05 1403.44\n","2 2012-09-06 1432.12\n","3 2012-09-07 1437.92\n","4 2012-09-10 1429.08"],"text/html":["\n"," <div id=\"df-f02e55eb-cb75-49d7-b296-5c66860242e6\" class=\"colab-df-container\">\n"," <div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>DATE</th>\n"," <th>snp500_close</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>2012-09-04</td>\n"," <td>1404.94</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>2012-09-05</td>\n"," <td>1403.44</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>2012-09-06</td>\n"," <td>1432.12</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>2012-09-07</td>\n"," <td>1437.92</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>2012-09-10</td>\n"," <td>1429.08</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>\n"," <div class=\"colab-df-buttons\">\n","\n"," <div class=\"colab-df-container\">\n"," <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f02e55eb-cb75-49d7-b296-5c66860242e6')\"\n"," title=\"Convert this dataframe to an interactive table.\"\n"," style=\"display:none;\">\n","\n"," <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n"," <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n"," </svg>\n"," </button>\n","\n"," <style>\n"," .colab-df-container {\n"," display:flex;\n"," gap: 12px;\n"," }\n","\n"," .colab-df-convert {\n"," background-color: #E8F0FE;\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: #1967D2;\n"," height: 32px;\n"," padding: 0 0 0 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-convert:hover {\n"," background-color: #E2EBFA;\n"," box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: #174EA6;\n"," }\n","\n"," .colab-df-buttons div {\n"," margin-bottom: 4px;\n"," }\n","\n"," [theme=dark] .colab-df-convert {\n"," background-color: #3B4455;\n"," fill: #D2E3FC;\n"," }\n","\n"," [theme=dark] .colab-df-convert:hover {\n"," background-color: #434B5C;\n"," box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n"," filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n"," fill: #FFFFFF;\n"," }\n"," </style>\n","\n"," <script>\n"," const buttonEl =\n"," document.querySelector('#df-f02e55eb-cb75-49d7-b296-5c66860242e6 button.colab-df-convert');\n"," buttonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n","\n"," async function convertToInteractive(key) {\n"," const element = document.querySelector('#df-f02e55eb-cb75-49d7-b296-5c66860242e6');\n"," const dataTable =\n"," await google.colab.kernel.invokeFunction('convertToInteractive',\n"," [key], {});\n"," if (!dataTable) return;\n","\n"," const docLinkHtml = 'Like what you see? Visit the ' +\n"," '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n"," + ' to learn more about interactive tables.';\n"," element.innerHTML = '';\n"," dataTable['output_type'] = 'display_data';\n"," await google.colab.output.renderOutput(dataTable, element);\n"," const docLink = document.createElement('div');\n"," docLink.innerHTML = docLinkHtml;\n"," element.appendChild(docLink);\n"," }\n"," </script>\n"," </div>\n","\n","\n"," <div id=\"df-02afe2d1-98b9-4d7b-a110-df078df45b75\">\n"," <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-02afe2d1-98b9-4d7b-a110-df078df45b75')\"\n"," title=\"Suggest charts\"\n"," style=\"display:none;\">\n","\n","<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n"," width=\"24px\">\n"," <g>\n"," <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n"," </g>\n","</svg>\n"," </button>\n","\n","<style>\n"," .colab-df-quickchart {\n"," --bg-color: #E8F0FE;\n"," --fill-color: #1967D2;\n"," --hover-bg-color: #E2EBFA;\n"," --hover-fill-color: #174EA6;\n"," --disabled-fill-color: #AAA;\n"," --disabled-bg-color: #DDD;\n"," }\n","\n"," [theme=dark] .colab-df-quickchart {\n"," --bg-color: #3B4455;\n"," --fill-color: #D2E3FC;\n"," --hover-bg-color: #434B5C;\n"," --hover-fill-color: #FFFFFF;\n"," --disabled-bg-color: #3B4455;\n"," --disabled-fill-color: #666;\n"," }\n","\n"," .colab-df-quickchart {\n"," background-color: var(--bg-color);\n"," border: none;\n"," border-radius: 50%;\n"," cursor: pointer;\n"," display: none;\n"," fill: var(--fill-color);\n"," height: 32px;\n"," padding: 0;\n"," width: 32px;\n"," }\n","\n"," .colab-df-quickchart:hover {\n"," background-color: var(--hover-bg-color);\n"," box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n"," fill: var(--button-hover-fill-color);\n"," }\n","\n"," .colab-df-quickchart-complete:disabled,\n"," .colab-df-quickchart-complete:disabled:hover {\n"," background-color: var(--disabled-bg-color);\n"," fill: var(--disabled-fill-color);\n"," box-shadow: none;\n"," }\n","\n"," .colab-df-spinner {\n"," border: 2px solid var(--fill-color);\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," animation:\n"," spin 1s steps(1) infinite;\n"," }\n","\n"," @keyframes spin {\n"," 0% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," border-left-color: var(--fill-color);\n"," }\n"," 20% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 30% {\n"," border-color: transparent;\n"," border-left-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," border-right-color: var(--fill-color);\n"," }\n"," 40% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-top-color: var(--fill-color);\n"," }\n"," 60% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," }\n"," 80% {\n"," border-color: transparent;\n"," border-right-color: var(--fill-color);\n"," border-bottom-color: var(--fill-color);\n"," }\n"," 90% {\n"," border-color: transparent;\n"," border-bottom-color: var(--fill-color);\n"," }\n"," }\n","</style>\n","\n"," <script>\n"," async function quickchart(key) {\n"," const quickchartButtonEl =\n"," document.querySelector('#' + key + ' button');\n"," quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n"," quickchartButtonEl.classList.add('colab-df-spinner');\n"," try {\n"," const charts = await google.colab.kernel.invokeFunction(\n"," 'suggestCharts', [key], {});\n"," } catch (error) {\n"," console.error('Error during call to suggestCharts:', error);\n"," }\n"," quickchartButtonEl.classList.remove('colab-df-spinner');\n"," quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n"," }\n"," (() => {\n"," let quickchartButtonEl =\n"," document.querySelector('#df-02afe2d1-98b9-4d7b-a110-df078df45b75 button');\n"," quickchartButtonEl.style.display =\n"," google.colab.kernel.accessAllowed ? 'block' : 'none';\n"," })();\n"," </script>\n"," </div>\n","\n"," </div>\n"," </div>\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"snp500","summary":"{\n \"name\": \"snp500\",\n \"rows\": 2609,\n \"fields\": [\n {\n \"column\": \"DATE\",\n \"properties\": {\n \"dtype\": \"object\",\n \"num_unique_values\": 2609,\n \"samples\": [\n \"2018-05-01\",\n \"2019-09-16\",\n \"2013-06-25\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"snp500_close\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 2506,\n \"samples\": [\n \"3925.43\",\n \"1409.15\",\n \"2430.06\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"}},"metadata":{},"execution_count":14}],"source":["snp500.head()"]},{"cell_type":"markdown","metadata":{"id":"ORlfuiLpM6a4"},"source":["Drop the columns that we do not need."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"UFBaBfAJM6a5"},"outputs":[],"source":["stock_df = stock_df.drop( ['Open', 'High', 'Low', 'Volume' ], axis=1)"]},{"cell_type":"markdown","metadata":{"id":"9exixiSUM6a5"},"source":["Let's rename some columns."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"nQOIYcvrM6a6"},"outputs":[],"source":["stock_df = stock_df.rename({'Close': 'stock_close'}, axis=1)\n","stock_df = stock_df.reset_index(level=0)\n","stock_df = stock_df.rename({'Date': 'DATE'}, axis=1)"]},{"cell_type":"markdown","metadata":{"id":"_vET2dPdM6a6"},"source":["Convert the dates to Pandas datetime format. This is just a technical manipulation."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"1dCsygP-M6a7"},"outputs":[],"source":["rf[\"DATE\"] = pd.to_datetime(rf[\"DATE\"])\n","snp500[\"DATE\"] = pd.to_datetime(snp500[\"DATE\"])\n","stock_df[\"DATE\"] = pd.to_datetime(stock_df[\"DATE\"])"]},{"cell_type":"markdown","metadata":{"id":"bvroQURHM6a7"},"source":["Convert the data type of the returns in the dataframe \"rf\" to numeric. First check the data type by using the function `dtypes`."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"Arp651NdM6a8","executionInfo":{"status":"ok","timestamp":1761260658525,"user_tz":0,"elapsed":33,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/"},"outputId":"b685a77b-0930-4701-dc50-a397dece9b52"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["dtype('O')"]},"metadata":{},"execution_count":18}],"source":["rf['rf_rate'].dtypes"]},{"cell_type":"markdown","metadata":{"id":"Rse2m73sM6a8"},"source":[" 'O' means Python object. And pandas object are strings. So, let us change the dytpe to numeric."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"8ytG3y7tM6a9"},"outputs":[],"source":["rf['rf_rate'] = pd.to_numeric(rf['rf_rate'],errors='coerce')"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"jZmDypPvM6a9"},"outputs":[],"source":["snp500['snp500_close'] = pd.to_numeric(snp500['snp500_close'],errors='coerce')"]},{"cell_type":"markdown","metadata":{"id":"DZktxCsiM6a-"},"source":["## 4. Set the Sample Period"]},{"cell_type":"markdown","metadata":{"id":"JzJujTERM6a-"},"source":["Get the data points for the sample period. Our first sample period is from 2/1/2019 to 1/31/2020."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"OuHulrD7M6bO"},"outputs":[],"source":["#sample_period_begins = \"2019-02-01\"\n","#sample_period_ends = \"2020-01-31\"\n","\n","#sample_period_begins = \"2020-02-01\"\n","#sample_period_ends = \"2020-03-31\"\n","\n","sample_period_begins = \"2020-04-01\"\n","sample_period_ends = \"2021-03-31\""]},{"cell_type":"markdown","metadata":{"id":"Xh6Rs5CBM6bP"},"source":["Slice out the data points (rows) that do not belong to the sample period."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"d1hh5OKEM6bP"},"outputs":[],"source":["rf = rf[rf[\"DATE\"] <= pd.to_datetime(sample_period_ends)]\n","rf = rf[rf[\"DATE\"] >= pd.to_datetime(sample_period_begins)]\n","\n","snp500 = snp500[snp500[\"DATE\"] <= pd.to_datetime(sample_period_ends)]\n","snp500 = snp500[snp500[\"DATE\"] >= pd.to_datetime(sample_period_begins)]\n","\n","stock_df = stock_df[stock_df[\"DATE\"] <= pd.to_datetime(sample_period_ends)]\n","stock_df = stock_df[stock_df[\"DATE\"] >= pd.to_datetime(sample_period_begins)]\n","\n","rf = rf.reset_index(drop=True)\n","snp500 = snp500.reset_index(drop=True)\n","stock_df = stock_df.reset_index(drop=True)"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"scwBgoWEM6bQ","executionInfo":{"status":"ok","timestamp":1761260658625,"user_tz":0,"elapsed":0,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/"},"outputId":"5bd6b261-4d5a-4abe-b9af-b302c1958ac6"},"outputs":[{"output_type":"stream","name":"stdout","text":[" DATE stock_close\n","0 2020-04-01 130.699997\n","1 2020-04-02 123.269997\n","2 2020-04-03 124.519997\n","3 2020-04-06 148.770004\n","4 2020-04-07 141.580002\n"]}],"source":["print(stock_df.head())"]},{"cell_type":"markdown","metadata":{"id":"wJ0ggF1VM6bR"},"source":["## 5. Merge the Datasets"]},{"cell_type":"markdown","metadata":{"id":"9sb1RsPAM6bR"},"source":["Merge the FRED datasets and the yahoo dataset<br>\n","The function that we will be using is the `pd.merge` function in the Pandas module."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"ScUwjJ-qM6bS"},"outputs":[],"source":["merged_rf_snp500 = pd.merge(rf, snp500, how='left', on='DATE')"]},{"cell_type":"markdown","metadata":{"id":"igSMjYLgM6bS"},"source":["Let us check whether the merge went well."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"I_XbBKx7M6bT","executionInfo":{"status":"ok","timestamp":1761260658708,"user_tz":0,"elapsed":16,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/"},"outputId":"c630bb69-3013-4fa0-85e0-49920ba297b2"},"outputs":[{"output_type":"stream","name":"stdout","text":[" DATE rf_rate snp500_close\n","0 2020-04-01 0.03 2470.50\n","1 2020-04-02 0.09 2526.90\n","2 2020-04-03 0.09 2488.65\n","3 2020-04-06 0.09 2663.68\n","4 2020-04-07 0.10 2659.41\n"]}],"source":["print(merged_rf_snp500.head())"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"3k5_S9enM6bU","executionInfo":{"status":"ok","timestamp":1761260658708,"user_tz":0,"elapsed":0,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/"},"outputId":"bf0dd784-278c-4570-e865-ef2ab5f8a259"},"outputs":[{"output_type":"stream","name":"stdout","text":[" DATE stock_close\n","0 2020-04-01 130.699997\n","1 2020-04-02 123.269997\n","2 2020-04-03 124.519997\n","3 2020-04-06 148.770004\n","4 2020-04-07 141.580002\n"]}],"source":["print(stock_df.head())"]},{"cell_type":"markdown","metadata":{"id":"MoPCDk-DM6bV"},"source":["Finally, merge the stock return data"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"NbaiYE9TM6bV"},"outputs":[],"source":["merged_df = pd.merge(merged_rf_snp500, stock_df, how='left', on='DATE')"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"s5l3G6N9M6bW","executionInfo":{"status":"ok","timestamp":1761260658775,"user_tz":0,"elapsed":50,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/"},"outputId":"f7332ecb-4c2b-4502-93e6-2cb284ab389c"},"outputs":[{"output_type":"stream","name":"stdout","text":[" DATE rf_rate snp500_close stock_close\n","0 2020-04-01 0.03 2470.50 130.699997\n","1 2020-04-02 0.09 2526.90 123.269997\n","2 2020-04-03 0.09 2488.65 124.519997\n","3 2020-04-06 0.09 2663.68 148.770004\n","4 2020-04-07 0.10 2659.41 141.580002\n"]}],"source":["print(merged_df.head())"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"vMhwvQi5M6bW","executionInfo":{"status":"ok","timestamp":1761260658775,"user_tz":0,"elapsed":0,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/"},"outputId":"8fdb071f-b162-48cf-fbac-849895ed914e"},"outputs":[{"output_type":"stream","name":"stdout","text":[" DATE rf_rate snp500_close stock_close\n","256 2021-03-25 0.02 3909.52 247.190002\n","257 2021-03-26 0.02 3974.54 244.869995\n","258 2021-03-29 0.02 3971.09 250.520004\n","259 2021-03-30 0.01 3958.55 252.009995\n","260 2021-03-31 0.01 3972.89 254.720001\n"]}],"source":["print(merged_df.tail())"]},{"cell_type":"markdown","metadata":{"id":"d8LfdYJSM6bX"},"source":["## 6. Compute the Returns and the Excess Returns"]},{"cell_type":"markdown","metadata":{"id":"Rk_YVAimM6bY"},"source":["Compute the daily returns"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"_-gDf6hpM6bY"},"outputs":[],"source":["merged_df = merged_df.sort_values(by=['DATE'], ascending=True)\n","merged_df = merged_df.reset_index(drop=True)"]},{"cell_type":"markdown","metadata":{"id":"8LY-WOOWM6bZ"},"source":["Rearrange the columns so the df looks nice"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"zQZHazscM6bZ"},"outputs":[],"source":["merged_df = merged_df[['DATE','rf_rate', 'stock_close', 'snp500_close']]"]},{"cell_type":"markdown","metadata":{"id":"M3N28OSZM6ba"},"source":["Drop rows with missing data"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"idYE5XTbM6ba"},"outputs":[],"source":["merged_df = merged_df[merged_df['rf_rate'].notna()]\n","merged_df = merged_df.reset_index(drop=True)"]},{"cell_type":"markdown","metadata":{"id":"S9gYN_ApM6bb"},"source":["Use loop to compute daily returns for the stock and S&P 500 index<br>\n","First find the number of rows that you will be looping over."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"Q8v1bFuRM6bb"},"outputs":[],"source":["row_num_merged_df = merged_df.shape[0]"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"Ks336B68M6bc"},"outputs":[],"source":["for i in range(1,row_num_merged_df):\n"," merged_df.loc[i,'stock_daily_rtn'] = (merged_df.loc[i,'stock_close'] - merged_df.loc[i-1,'stock_close'] )/ (merged_df.loc[i-1,'stock_close'])"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"B9rT6NViM6bc"},"outputs":[],"source":["for i in range(1,row_num_merged_df):\n"," merged_df.loc[i,'snp500_close_daily_rtn'] = (merged_df.loc[i,'snp500_close'] - merged_df.loc[i-1,'snp500_close'] )/ (merged_df.loc[i-1,'snp500_close'])"]},{"cell_type":"markdown","metadata":{"id":"buoF4NkFM6bd"},"source":["Now, let us compute the market premium and the stock's excesss return."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"jkM14QTYM6bd"},"outputs":[],"source":["merged_df['rf_daily'] = (merged_df['rf_rate']*0.01)/365\n","merged_df['mrkt_premium'] = merged_df['snp500_close_daily_rtn'] - merged_df['rf_daily']\n","merged_df['stock_exc_rtn'] = merged_df['stock_daily_rtn'] - merged_df['rf_daily']"]},{"cell_type":"markdown","metadata":{"id":"QRxDkvlEM6be"},"source":["## 7. Run the Regression to Estimate the Beta"]},{"cell_type":"markdown","metadata":{"id":"uUdut3CxM6bf"},"source":["Finally, we run the regression using the `statsmodels` module"]},{"cell_type":"markdown","metadata":{"id":"6dGgq8fOM6bf"},"source":["Drop the first row."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"8DKhwqypM6bg"},"outputs":[],"source":["merged_df = merged_df[1:].copy()"]},{"cell_type":"markdown","metadata":{"id":"3pm9lYinM6bg"},"source":["Run the OLS regression."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"4NcecquYM6bh"},"outputs":[],"source":["model = sm.ols(formula=\"stock_exc_rtn ~ mrkt_premium\", data=merged_df).fit(cov_type='HAC',cov_kwds={'maxlags':3}, use_t= True)"]},{"cell_type":"markdown","metadata":{"id":"g_qXaG99M6bh"},"source":["Print the regression table!"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"scqDLntjM6bi","executionInfo":{"status":"ok","timestamp":1761260659275,"user_tz":0,"elapsed":217,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/"},"outputId":"12e6dd9e-da7a-4a90-d404-53c5cda920b0"},"outputs":[{"output_type":"stream","name":"stdout","text":[" OLS Regression Results \n","==============================================================================\n","Dep. Variable: stock_exc_rtn R-squared: 0.343\n","Model: OLS Adj. R-squared: 0.340\n","Method: Least Squares F-statistic: 73.52\n","Date: Thu, 23 Oct 2025 Prob (F-statistic): 1.11e-15\n","Time: 23:04:19 Log-Likelihood: 490.00\n","No. Observations: 249 AIC: -976.0\n","Df Residuals: 247 BIC: -969.0\n","Df Model: 1 \n","Covariance Type: HAC \n","================================================================================\n"," coef std err t P>|t| [0.025 0.975]\n","--------------------------------------------------------------------------------\n","Intercept -0.0002 0.002 -0.114 0.909 -0.004 0.003\n","mrkt_premium 1.8720 0.218 8.575 0.000 1.442 2.302\n","==============================================================================\n","Omnibus: 21.304 Durbin-Watson: 2.178\n","Prob(Omnibus): 0.000 Jarque-Bera (JB): 38.712\n","Skew: 0.472 Prob(JB): 3.93e-09\n","Kurtosis: 4.685 Cond. No. 76.6\n","==============================================================================\n","\n","Notes:\n","[1] Standard Errors are heteroscedasticity and autocorrelation robust (HAC) using 3 lags and without small sample correction\n"]}],"source":["print(model.summary())"]},{"cell_type":"markdown","metadata":{"id":"VIyPdjivM6bj"},"source":["## 8. Visualization"]},{"cell_type":"markdown","metadata":{"id":"McLhM1vfM6bj"},"source":["Visualize the regression results."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"-77gRhZxM6bk","executionInfo":{"status":"ok","timestamp":1761260659575,"user_tz":0,"elapsed":300,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/","height":450},"outputId":"b8e9f765-614f-49ca-a3f3-031f60235fbb"},"outputs":[{"output_type":"display_data","data":{"text/plain":["<Figure size 640x480 with 1 Axes>"],"image/png":"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\n"},"metadata":{}}],"source":["ax = merged_df.plot(x='mrkt_premium', y='stock_exc_rtn', kind='scatter')"]},{"cell_type":"markdown","metadata":{"id":"ojuKvtb7M6bk"},"source":["Let us add the fitted line."]},{"cell_type":"code","execution_count":null,"metadata":{"id":"K0NG_KiDM6bl","executionInfo":{"status":"ok","timestamp":1761260659708,"user_tz":0,"elapsed":133,"user":{"displayName":"Tyler Hoang","userId":"16204799084525586839"}},"colab":{"base_uri":"https://localhost:8080/","height":450},"outputId":"06cb4ccf-6bd7-48a7-c659-a310f6430e29"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["<Figure size 640x480 with 1 Axes>"],"image/png":"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\n"},"metadata":{},"execution_count":41}],"source":["abline_plot(model_results=model, ax=ax, color='red')"]}],"metadata":{"kernelspec":{"display_name":"Python 3 (ipykernel)","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.13.5"},"colab":{"provenance":[]}},"nbformat":4,"nbformat_minor":0}
|