From 40f21edf78171b0ee211e3810d5bfca9e3052034 Mon Sep 17 00:00:00 2001 From: stevegbrooks Date: Mon, 20 Dec 2021 10:10:29 +0800 Subject: [PATCH] cleanup --- README.md | 2 + notebooks/{GLM.ipynb => step2_GLM.ipynb} | 700 +++++++++--------- ...analysis.ipynb => step3a_single_tsa.ipynb} | 6 +- ...analysis.ipynb => step3b_global_tsa.ipynb} | 84 +-- 4 files changed, 396 insertions(+), 396 deletions(-) rename notebooks/{GLM.ipynb => step2_GLM.ipynb} (99%) rename notebooks/{single-time-series-analysis.ipynb => step3a_single_tsa.ipynb} (99%) rename notebooks/{step2_time_series_analysis.ipynb => step3b_global_tsa.ipynb} (98%) diff --git a/README.md b/README.md index 30d9977..5879395 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,8 @@ The subdirectory `notebooks/` contains the iPython notebooks designed to run on These notebook pull the data from an S3 bucket, do some Exploratory Data Analysis, clean and munges the data, and finally implements the core logic of predicting which stocks to invest in using time series analysis. +_NOTE:_ Due to the time constraints, we were only able to finish up to `step3a_single_tsa.ipynb` where we implement a time series analysis on a single stock. `step3b_global_tsa.ipynb` was intended to implement a global time series analysis on all stocks' time series, but wasn't finished. + ## Pulling data from the Alpha Vantage API ### DataLoader.py diff --git a/notebooks/GLM.ipynb b/notebooks/step2_GLM.ipynb similarity index 99% rename from notebooks/GLM.ipynb rename to notebooks/step2_GLM.ipynb index d97b682..a226af4 100644 --- a/notebooks/GLM.ipynb +++ b/notebooks/step2_GLM.ipynb @@ -3,11 +3,11 @@ { "cell_type": "markdown", "metadata": { - "id": "view-in-github", - "colab_type": "text" + "colab_type": "text", + "id": "view-in-github" }, "source": [ - "\"Open" + "\"Open" ] }, { @@ -25,12 +25,12 @@ }, { "cell_type": "markdown", - "source": [ - "# Section 1: Setting Up Environment" - ], "metadata": { "id": "4yW0AkRlznO9" - } + }, + "source": [ + "# Section 1: Setting Up Environment" + ] }, { "cell_type": "code", @@ -172,8 +172,8 @@ }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "The sparkmagic.magics extension is already loaded. To reload it, use:\n", " %reload_ext sparkmagic.magics\n" @@ -257,18 +257,18 @@ "cell_type": "code", "execution_count": 268, "metadata": { - "id": "_AfnFZqh06EY", "colab": { "base_uri": "https://localhost:8080/", "height": 796 }, + "id": "_AfnFZqh06EY", "outputId": "954e4ec3-f6c8-45a1-8adc-0a77acc100d1" }, "outputs": [ { - "output_type": "error", "ename": "ValueError", "evalue": "ignored", + "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mPy4JError\u001b[0m Traceback (most recent call last)", @@ -319,15 +319,20 @@ }, { "cell_type": "markdown", - "source": [ - "Second, we set up the spark dataframe for technical indicators. " - ], "metadata": { "id": "aQHIU6XP0L2u" - } + }, + "source": [ + "Second, we set up the spark dataframe for technical indicators. " + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "-GpP2kuO0MKg" + }, + "outputs": [], "source": [ "technical_data_sdf = spark.read.load(\n", " 'technical_data/*.csv', \n", @@ -336,12 +341,7 @@ " inferSchema = 'true', \n", " sep = ','\n", ")" - ], - "metadata": { - "id": "-GpP2kuO0MKg" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", @@ -377,56 +377,45 @@ }, { "cell_type": "markdown", - "source": [ - "# Section 4: Load Other Data. " - ], "metadata": { "id": "_HFodb100nCt" - } + }, + "source": [ + "# Section 4: Load Other Data. " + ] }, { "cell_type": "markdown", - "source": [ - "### Step 1: Download other data from google drive. " - ], "metadata": { "id": "F8zlYS3D02iv" - } + }, + "source": [ + "### Step 1: Download other data from google drive. " + ] }, { "cell_type": "code", - "source": [ - "from google.colab import drive\n", - "drive.mount('/content/gdrive')\n", - "\n", - "os.mkdir('/content/other_data')\n", - "!cp '/content/gdrive/My Drive/other_data/forex.csv' other_data/forex.csv\n", - "!cp '/content/gdrive/My Drive/other_data/gdp.csv' other_data/gdp.csv\n", - "!cp '/content/gdrive/My Drive/other_data/stockindex.csv' other_data/stockindex.csv\n", - "!cp '/content/gdrive/My Drive/other_data/tbond.csv' other_data/tbond.csv\n", - "!cp '/content/gdrive/My Drive/other_data/unemployment.csv' other_data/unemployment.csv\n" - ], + "execution_count": 259, "metadata": { - "id": "m6IUvrRW1Eds", "colab": { "base_uri": "https://localhost:8080/", "height": 252 }, + "id": "m6IUvrRW1Eds", "outputId": "77095eaa-4d81-4f70-9cc5-e1a08d527f59" }, - "execution_count": 259, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "Drive already mounted at /content/gdrive; to attempt to forcibly remount, call drive.mount(\"/content/gdrive\", force_remount=True).\n" ] }, { - "output_type": "error", "ename": "FileExistsError", "evalue": "ignored", + "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mFileExistsError\u001b[0m Traceback (most recent call last)", @@ -434,60 +423,41 @@ "\u001b[0;31mFileExistsError\u001b[0m: [Errno 17] File exists: '/content/other_data'" ] } + ], + "source": [ + "from google.colab import drive\n", + "drive.mount('/content/gdrive')\n", + "\n", + "os.mkdir('/content/other_data')\n", + "!cp '/content/gdrive/My Drive/other_data/forex.csv' other_data/forex.csv\n", + "!cp '/content/gdrive/My Drive/other_data/gdp.csv' other_data/gdp.csv\n", + "!cp '/content/gdrive/My Drive/other_data/stockindex.csv' other_data/stockindex.csv\n", + "!cp '/content/gdrive/My Drive/other_data/tbond.csv' other_data/tbond.csv\n", + "!cp '/content/gdrive/My Drive/other_data/unemployment.csv' other_data/unemployment.csv\n" ] }, { "cell_type": "markdown", - "source": [ - "### Step 2: Acquire overnight stock index performance of other major stock markets, e.g. FTSE, DAX, CAC, Nikkei, HKSE, SHSE." - ], "metadata": { "id": "Xor1-lra-sw-" - } + }, + "source": [ + "### Step 2: Acquire overnight stock index performance of other major stock markets, e.g. FTSE, DAX, CAC, Nikkei, HKSE, SHSE." + ] }, { "cell_type": "code", - "source": [ - "stockindex_data = pd.read_csv('/content/other_data/stockindex.csv')\n", - "\n", - "stockindex_data = stockindex_data[['date', 'FTSE100', 'DAX', 'CAC', 'Nikkei225', 'Hang_Seng', 'SHSZ300']]\n", - "stockindex_data['date'] = pd.to_datetime(stockindex_data.date)\n", - "stockindex_data = stockindex_data[stockindex_data['date'] < pd.Timestamp(2020,1,1)]\n", - "\n", - "# filling missing data\n", - "stockindex_data = stockindex_data.fillna(method='ffill')\n", - "stockindex_data.iloc[0, stockindex_data.columns.get_loc('Nikkei225')] = 10871.49\n", - "stockindex_data.iloc[1, stockindex_data.columns.get_loc('Nikkei225')] = 10871.49\n", - "stockindex_data.iloc[0, stockindex_data.columns.get_loc('SHSZ300')] = 1316.46\n", - "stockindex_data.iloc[1, stockindex_data.columns.get_loc('SHSZ300')] = 1316.46\n", - "\n", - "# add quarter / month column\n", - "stockindex_data['quarter'] = stockindex_data['date'].dt.to_period('Q')\n", - "stockindex_data['month'] = stockindex_data['date'].dt.to_period('M')\n", - "\n", - "# calculating day-over-day % price change\n", - "stockindex_data['FTSE100_DoD'] = stockindex_data['FTSE100'].pct_change(1)\n", - "stockindex_data['DAX_DoD'] = stockindex_data['DAX'].pct_change(1)\n", - "stockindex_data['CAC_DoD'] = stockindex_data['CAC'].pct_change(1)\n", - "stockindex_data['Nikkei225_DoD'] = stockindex_data['Nikkei225'].pct_change(1)\n", - "stockindex_data['Hang_Seng_DoD'] = stockindex_data['Hang_Seng'].pct_change(1)\n", - "stockindex_data['SHSZ300_DoD'] = stockindex_data['SHSZ300'].pct_change(1)\n", - "stockindex_data = stockindex_data[['date', 'quarter', 'month', 'FTSE100_DoD', 'DAX_DoD', 'CAC_DoD', 'Nikkei225_DoD', 'Hang_Seng_DoD', 'SHSZ300_DoD']]\n", - " \n", - "stockindex_data.head()" - ], + "execution_count": 260, "metadata": { - "id": "0T7mUheI-tFB", "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, + "id": "0T7mUheI-tFB", "outputId": "6552cf77-ae8f-41d4-e284-370a70f37620" }, - "execution_count": 260, "outputs": [ { - "output_type": "execute_result", "data": { "text/html": [ "\n", @@ -674,48 +644,63 @@ "[5 rows x 9 columns]" ] }, + "execution_count": 260, "metadata": {}, - "execution_count": 260 + "output_type": "execute_result" } + ], + "source": [ + "stockindex_data = pd.read_csv('/content/other_data/stockindex.csv')\n", + "\n", + "stockindex_data = stockindex_data[['date', 'FTSE100', 'DAX', 'CAC', 'Nikkei225', 'Hang_Seng', 'SHSZ300']]\n", + "stockindex_data['date'] = pd.to_datetime(stockindex_data.date)\n", + "stockindex_data = stockindex_data[stockindex_data['date'] < pd.Timestamp(2020,1,1)]\n", + "\n", + "# filling missing data\n", + "stockindex_data = stockindex_data.fillna(method='ffill')\n", + "stockindex_data.iloc[0, stockindex_data.columns.get_loc('Nikkei225')] = 10871.49\n", + "stockindex_data.iloc[1, stockindex_data.columns.get_loc('Nikkei225')] = 10871.49\n", + "stockindex_data.iloc[0, stockindex_data.columns.get_loc('SHSZ300')] = 1316.46\n", + "stockindex_data.iloc[1, stockindex_data.columns.get_loc('SHSZ300')] = 1316.46\n", + "\n", + "# add quarter / month column\n", + "stockindex_data['quarter'] = stockindex_data['date'].dt.to_period('Q')\n", + "stockindex_data['month'] = stockindex_data['date'].dt.to_period('M')\n", + "\n", + "# calculating day-over-day % price change\n", + "stockindex_data['FTSE100_DoD'] = stockindex_data['FTSE100'].pct_change(1)\n", + "stockindex_data['DAX_DoD'] = stockindex_data['DAX'].pct_change(1)\n", + "stockindex_data['CAC_DoD'] = stockindex_data['CAC'].pct_change(1)\n", + "stockindex_data['Nikkei225_DoD'] = stockindex_data['Nikkei225'].pct_change(1)\n", + "stockindex_data['Hang_Seng_DoD'] = stockindex_data['Hang_Seng'].pct_change(1)\n", + "stockindex_data['SHSZ300_DoD'] = stockindex_data['SHSZ300'].pct_change(1)\n", + "stockindex_data = stockindex_data[['date', 'quarter', 'month', 'FTSE100_DoD', 'DAX_DoD', 'CAC_DoD', 'Nikkei225_DoD', 'Hang_Seng_DoD', 'SHSZ300_DoD']]\n", + " \n", + "stockindex_data.head()" ] }, { "cell_type": "markdown", - "source": [ - "### Step 3: Acquire tresaury bond (1-yr, 3yr, 10-yr) market daily performance" - ], "metadata": { "id": "e15HhL81-_H-" - } + }, + "source": [ + "### Step 3: Acquire tresaury bond (1-yr, 3yr, 10-yr) market daily performance" + ] }, { "cell_type": "code", - "source": [ - "tbond_data = pd.read_csv('/content/other_data/tbond.csv')\n", - "\n", - "tbond_data = tbond_data[['date', '3M', '1Y', '10Y']]\n", - "tbond_data['date'] = pd.to_datetime(tbond_data.date)\n", - "tbond_data = tbond_data[tbond_data['date'] < pd.Timestamp(2020,1,1)]\n", - "\n", - "tbond_data['3M_DoD'] = tbond_data['3M'].pct_change(1)\n", - "tbond_data['1Y_DoD'] = tbond_data['1Y'].pct_change(1)\n", - "tbond_data['10Y_DoD'] = tbond_data['10Y'].pct_change(1)\n", - "tbond_data = tbond_data[['date', '3M_DoD', '1Y_DoD','10Y_DoD']]\n", - " \n", - "tbond_data.head()" - ], + "execution_count": 261, "metadata": { - "id": "d_OU3HDw-_O7", "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, + "id": "d_OU3HDw-_O7", "outputId": "833899dc-c5db-4cec-9efa-0a45544be32a" }, - "execution_count": 261, "outputs": [ { - "output_type": "execute_result", "data": { "text/html": [ "\n", @@ -870,57 +855,48 @@ "4 2002-01-08 0.000000 0.000000 0.001965" ] }, + "execution_count": 261, "metadata": {}, - "execution_count": 261 + "output_type": "execute_result" } + ], + "source": [ + "tbond_data = pd.read_csv('/content/other_data/tbond.csv')\n", + "\n", + "tbond_data = tbond_data[['date', '3M', '1Y', '10Y']]\n", + "tbond_data['date'] = pd.to_datetime(tbond_data.date)\n", + "tbond_data = tbond_data[tbond_data['date'] < pd.Timestamp(2020,1,1)]\n", + "\n", + "tbond_data['3M_DoD'] = tbond_data['3M'].pct_change(1)\n", + "tbond_data['1Y_DoD'] = tbond_data['1Y'].pct_change(1)\n", + "tbond_data['10Y_DoD'] = tbond_data['10Y'].pct_change(1)\n", + "tbond_data = tbond_data[['date', '3M_DoD', '1Y_DoD','10Y_DoD']]\n", + " \n", + "tbond_data.head()" ] }, { "cell_type": "markdown", - "source": [ - "### Step 4: Acquire forex market (USD/EUR, USD/JPY, USD/AUD, etc.) daily performance. " - ], "metadata": { "id": "XkJQWz_k_Od1" - } + }, + "source": [ + "### Step 4: Acquire forex market (USD/EUR, USD/JPY, USD/AUD, etc.) daily performance. " + ] }, { "cell_type": "code", - "source": [ - "forex_data = pd.read_csv('/content/other_data/forex.csv')\n", - "\n", - "forex_data = forex_data[['date', 'USDGBP', 'USDEUR', 'USDJPY', 'USDHKD', 'USDAUD', 'USDCAD']]\n", - "\n", - "# filling missing data\n", - "forex_data = forex_data.fillna(method='ffill')\n", - "\n", - "# convert data format\n", - "forex_data['date'] = pd.to_datetime(forex_data.date)\n", - "forex_data = forex_data[forex_data['date'] < pd.Timestamp(2020,1,1)]\n", - "\n", - "# calculating day-over-day % price change\n", - "forex_data['USDGBP_DoD'] = forex_data['USDGBP'].pct_change(1)\n", - "forex_data['USDEUR_DoD'] = forex_data['USDEUR'].pct_change(1)\n", - "forex_data['USDJPY_DoD'] = forex_data['USDJPY'].pct_change(1)\n", - "forex_data['USDHKD_DoD'] = forex_data['USDHKD'].pct_change(1)\n", - "forex_data['USDAUD_DoD'] = forex_data['USDAUD'].pct_change(1)\n", - "forex_data['USDCAD_DoD'] = forex_data['USDCAD'].pct_change(1)\n", - "forex_data = forex_data[['date', 'USDGBP_DoD', 'USDEUR_DoD', 'USDJPY_DoD', 'USDHKD_DoD', 'USDAUD_DoD', 'USDCAD_DoD']]\n", - " \n", - "forex_data.head()" - ], + "execution_count": 262, "metadata": { - "id": "NPzR4Pho_T6m", "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, + "id": "NPzR4Pho_T6m", "outputId": "cdb2101d-eb29-44dd-df48-4d970cbc798e" }, - "execution_count": 262, "outputs": [ { - "output_type": "execute_result", "data": { "text/html": [ "\n", @@ -1095,53 +1071,57 @@ "[5 rows x 7 columns]" ] }, + "execution_count": 262, "metadata": {}, - "execution_count": 262 + "output_type": "execute_result" } + ], + "source": [ + "forex_data = pd.read_csv('/content/other_data/forex.csv')\n", + "\n", + "forex_data = forex_data[['date', 'USDGBP', 'USDEUR', 'USDJPY', 'USDHKD', 'USDAUD', 'USDCAD']]\n", + "\n", + "# filling missing data\n", + "forex_data = forex_data.fillna(method='ffill')\n", + "\n", + "# convert data format\n", + "forex_data['date'] = pd.to_datetime(forex_data.date)\n", + "forex_data = forex_data[forex_data['date'] < pd.Timestamp(2020,1,1)]\n", + "\n", + "# calculating day-over-day % price change\n", + "forex_data['USDGBP_DoD'] = forex_data['USDGBP'].pct_change(1)\n", + "forex_data['USDEUR_DoD'] = forex_data['USDEUR'].pct_change(1)\n", + "forex_data['USDJPY_DoD'] = forex_data['USDJPY'].pct_change(1)\n", + "forex_data['USDHKD_DoD'] = forex_data['USDHKD'].pct_change(1)\n", + "forex_data['USDAUD_DoD'] = forex_data['USDAUD'].pct_change(1)\n", + "forex_data['USDCAD_DoD'] = forex_data['USDCAD'].pct_change(1)\n", + "forex_data = forex_data[['date', 'USDGBP_DoD', 'USDEUR_DoD', 'USDJPY_DoD', 'USDHKD_DoD', 'USDAUD_DoD', 'USDCAD_DoD']]\n", + " \n", + "forex_data.head()" ] }, { "cell_type": "markdown", - "source": [ - "### Step 5: Acquire economic data, including monthly unemployment rate, quarterly yoy GDP growth. " - ], "metadata": { "id": "bhOzemO8_Wk1" - } + }, + "source": [ + "### Step 5: Acquire economic data, including monthly unemployment rate, quarterly yoy GDP growth. " + ] }, { "cell_type": "code", - "source": [ - "gdp_data = pd.read_csv('/content/other_data/gdp.csv')\n", - "\n", - "gdp_data = gdp_data[['date', 'real_gdp']]\n", - "\n", - "# filling missing data\n", - "gdp_data = gdp_data.fillna(method='ffill')\n", - "\n", - "# convert data format\n", - "gdp_data['date'] = pd.to_datetime(gdp_data.date)\n", - "gdp_data = gdp_data[gdp_data['date'] < pd.Timestamp(2020,1,1)]\n", - "gdp_data['real_gdp_QoQ'] = gdp_data['real_gdp'].pct_change(1)\n", - "gdp_data = gdp_data.drop(columns=['real_gdp'])\n", - "\n", - "# add quarter column\n", - "gdp_data['quarter'] = gdp_data['date'].dt.to_period('Q')\n", - "\n", - "gdp_data.head()" - ], + "execution_count": 263, "metadata": { - "id": "cGv0hL31_Wxw", "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, + "id": "cGv0hL31_Wxw", "outputId": "83ca371b-bdb2-4098-91e2-ca5fda708255" }, - "execution_count": 263, "outputs": [ { - "output_type": "execute_result", "data": { "text/html": [ "\n", @@ -1290,53 +1270,53 @@ "4 2003-03-31 0.005166 2003Q1" ] }, + "execution_count": 263, "metadata": {}, - "execution_count": 263 + "output_type": "execute_result" } - ] - }, - { - "cell_type": "markdown", - "source": [ - "### Step 5: Acquire monthly unemployment data." ], - "metadata": { - "id": "XGtKY9_W_fh9" - } - }, - { - "cell_type": "code", "source": [ - "unemployment_data = pd.read_csv('/content/other_data/unemployment.csv')\n", + "gdp_data = pd.read_csv('/content/other_data/gdp.csv')\n", "\n", - "unemployment_data = unemployment_data[['date', 'unemployment']]\n", + "gdp_data = gdp_data[['date', 'real_gdp']]\n", "\n", "# filling missing data\n", - "unemployment_data = unemployment_data.fillna(method='ffill')\n", + "gdp_data = gdp_data.fillna(method='ffill')\n", "\n", "# convert data format\n", - "unemployment_data['date'] = pd.to_datetime(unemployment_data.date)\n", - "unemployment_data = unemployment_data[unemployment_data['date'] < pd.Timestamp(2020,1,1)]\n", - "unemployment_data['unemployment_MoM'] = unemployment_data['unemployment'].pct_change(1)\n", - "unemployment_data = unemployment_data.drop(columns=['unemployment'])\n", + "gdp_data['date'] = pd.to_datetime(gdp_data.date)\n", + "gdp_data = gdp_data[gdp_data['date'] < pd.Timestamp(2020,1,1)]\n", + "gdp_data['real_gdp_QoQ'] = gdp_data['real_gdp'].pct_change(1)\n", + "gdp_data = gdp_data.drop(columns=['real_gdp'])\n", "\n", - "# add month column\n", - "unemployment_data['month'] = unemployment_data['date'].dt.to_period('M')\n", + "# add quarter column\n", + "gdp_data['quarter'] = gdp_data['date'].dt.to_period('Q')\n", "\n", - "unemployment_data.head()" - ], + "gdp_data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XGtKY9_W_fh9" + }, + "source": [ + "### Step 5: Acquire monthly unemployment data." + ] + }, + { + "cell_type": "code", + "execution_count": 264, "metadata": { - "id": "EA6D5uiQ_foE", "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, + "id": "EA6D5uiQ_foE", "outputId": "7ffc7f4d-2477-4e2d-a4fa-d5177e6e3dab" }, - "execution_count": 264, "outputs": [ { - "output_type": "execute_result", "data": { "text/html": [ "\n", @@ -1485,45 +1465,54 @@ "4 2002-05-31 -0.016949 2002-05" ] }, + "execution_count": 264, "metadata": {}, - "execution_count": 264 + "output_type": "execute_result" } + ], + "source": [ + "unemployment_data = pd.read_csv('/content/other_data/unemployment.csv')\n", + "\n", + "unemployment_data = unemployment_data[['date', 'unemployment']]\n", + "\n", + "# filling missing data\n", + "unemployment_data = unemployment_data.fillna(method='ffill')\n", + "\n", + "# convert data format\n", + "unemployment_data['date'] = pd.to_datetime(unemployment_data.date)\n", + "unemployment_data = unemployment_data[unemployment_data['date'] < pd.Timestamp(2020,1,1)]\n", + "unemployment_data['unemployment_MoM'] = unemployment_data['unemployment'].pct_change(1)\n", + "unemployment_data = unemployment_data.drop(columns=['unemployment'])\n", + "\n", + "# add month column\n", + "unemployment_data['month'] = unemployment_data['date'].dt.to_period('M')\n", + "\n", + "unemployment_data.head()" ] }, { "cell_type": "markdown", - "source": [ - "### Step 6: Merge all other data into a single dataframe. " - ], "metadata": { "id": "cy945R7j_oSu" - } + }, + "source": [ + "### Step 6: Merge all other data into a single dataframe. " + ] }, { "cell_type": "code", - "source": [ - "all_other_data = stockindex_data.merge(tbond_data, left_on='date', right_on='date', how='left')\n", - "all_other_data = all_other_data.merge(forex_data, left_on='date', right_on='date', how='left')\n", - "all_other_data = all_other_data.merge(gdp_data, left_on='quarter', right_on='quarter', how='left')\n", - "all_other_data = all_other_data.merge(unemployment_data, left_on='month', right_on='month', how='left')\n", - "\n", - "all_other_data = all_other_data.drop(columns=['date_x', 'date_y'])\n", - "all_other_data = all_other_data.dropna()\n", - "\n", - "all_other_data.info()" - ], + "execution_count": 265, "metadata": { - "id": "rqBgWTdK_odY", "colab": { "base_uri": "https://localhost:8080/" }, + "id": "rqBgWTdK_odY", "outputId": "a9e7df1a-ddd6-4d30-d2ba-a1018115e6eb" }, - "execution_count": 265, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "\n", "Int64Index: 4438 entries, 63 to 4682\n", @@ -1554,52 +1543,53 @@ "memory usage: 728.1 KB\n" ] } + ], + "source": [ + "all_other_data = stockindex_data.merge(tbond_data, left_on='date', right_on='date', how='left')\n", + "all_other_data = all_other_data.merge(forex_data, left_on='date', right_on='date', how='left')\n", + "all_other_data = all_other_data.merge(gdp_data, left_on='quarter', right_on='quarter', how='left')\n", + "all_other_data = all_other_data.merge(unemployment_data, left_on='month', right_on='month', how='left')\n", + "\n", + "all_other_data = all_other_data.drop(columns=['date_x', 'date_y'])\n", + "all_other_data = all_other_data.dropna()\n", + "\n", + "all_other_data.info()" ] }, { "cell_type": "markdown", - "source": [ - "# Section 5: Combine stock price with all other data to create mega_data. " - ], "metadata": { "id": "9MsN8589BM4b" - } + }, + "source": [ + "# Section 5: Combine stock price with all other data to create mega_data. " + ] }, { "cell_type": "markdown", - "source": [ - "### Step 1: Prepare stock data for integration. " - ], "metadata": { "id": "1KSk49oWG6lG" - } + }, + "source": [ + "### Step 1: Prepare stock data for integration. " + ] }, { "cell_type": "code", - "source": [ - "from pyspark.sql import functions as F\n", - "from pyspark.sql.window import Window\n", - "\n", - "price_window = Window.partitionBy(\"symbol\").orderBy(\"symbol\")\n", - "stock_data_2002_2019_sdf = stock_data_2002_2019_sdf.withColumn(\"prev_price\", F.lead(stock_data_2002_2019_sdf.adjusted_close).over(price_window))\n", - "stock_data_2002_2019_sdf = stock_data_2002_2019_sdf.withColumn(\"price_DoD\", F.when(F.isnull(stock_data_2002_2019_sdf.adjusted_close - stock_data_2002_2019_sdf.prev_price), 0).otherwise((stock_data_2002_2019_sdf.adjusted_close - stock_data_2002_2019_sdf.prev_price)/stock_data_2002_2019_sdf.prev_price))\n", - "\n", - "stock_data_2002_2019_sdf.show()\n" - ], + "execution_count": 266, "metadata": { - "id": "JrbT7cyrBVkR", "colab": { "base_uri": "https://localhost:8080/", "height": 432 }, + "id": "JrbT7cyrBVkR", "outputId": "d8ce0f04-3e7a-42aa-85c4-0271a52c8177" }, - "execution_count": 266, "outputs": [ { - "output_type": "error", "ename": "Py4JError", "evalue": "ignored", + "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mPy4JError\u001b[0m Traceback (most recent call last)", @@ -1609,19 +1599,34 @@ "\u001b[0;31mPy4JError\u001b[0m: org does not exist in the JVM" ] } + ], + "source": [ + "from pyspark.sql import functions as F\n", + "from pyspark.sql.window import Window\n", + "\n", + "price_window = Window.partitionBy(\"symbol\").orderBy(\"symbol\")\n", + "stock_data_2002_2019_sdf = stock_data_2002_2019_sdf.withColumn(\"prev_price\", F.lead(stock_data_2002_2019_sdf.adjusted_close).over(price_window))\n", + "stock_data_2002_2019_sdf = stock_data_2002_2019_sdf.withColumn(\"price_DoD\", F.when(F.isnull(stock_data_2002_2019_sdf.adjusted_close - stock_data_2002_2019_sdf.prev_price), 0).otherwise((stock_data_2002_2019_sdf.adjusted_close - stock_data_2002_2019_sdf.prev_price)/stock_data_2002_2019_sdf.prev_price))\n", + "\n", + "stock_data_2002_2019_sdf.show()\n" ] }, { "cell_type": "markdown", - "source": [ - "### Step 2: Integration by joining stock data with all other data. " - ], "metadata": { "id": "uwbAqm84HCCd" - } + }, + "source": [ + "### Step 2: Integration by joining stock data with all other data. " + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "gBGRMoWVHCOt" + }, + "outputs": [], "source": [ "all_other_data_sdf = spark.createDataFrame(all_other_data) \n", "\n", @@ -1638,33 +1643,33 @@ ")\n", "\n", "mega_data_sdf.show()\n" - ], - "metadata": { - "id": "gBGRMoWVHCOt" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", - "source": [ - "# Section 6: Run Linear Regression model on mega data. " - ], "metadata": { "id": "UxsKzNdtQSLU" - } + }, + "source": [ + "# Section 6: Run Linear Regression model on mega data. " + ] }, { "cell_type": "markdown", - "source": [ - "### Step 1: Split the data into features and label" - ], "metadata": { "id": "Fgnw67-WQ5B-" - } + }, + "source": [ + "### Step 1: Split the data into features and label" + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "KlCSQ74HQ7WW" + }, + "outputs": [], "source": [ "from pyspark.ml.feature import StringIndexer, VectorAssembler\n", "\n", @@ -1684,24 +1689,24 @@ "modified_data_sdf.show(5)\n", "\n", "train_sdf, test_sdf = modified_data_sdf.randomSplit([0.8, 0.2])\n" - ], - "metadata": { - "id": "KlCSQ74HQ7WW" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", - "source": [ - "### Step 2: Run linear regression model on spark" - ], "metadata": { "id": "5_48GUBmSnXp" - } + }, + "source": [ + "### Step 2: Run linear regression model on spark" + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0E9ULtpvSs7b" + }, + "outputs": [], "source": [ "from pyspark.ml.regression import LinearRegression\n", "\n", @@ -1712,24 +1717,24 @@ "\n", "print(\"RMSE: %f\" % trainingSummary.rootMeanSquaredError)\n", "print(\"r2: %f\" % trainingSummary.r2)\n" - ], - "metadata": { - "id": "0E9ULtpvSs7b" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", - "source": [ - "### Step3: Evaluate linear regression model. " - ], "metadata": { "id": "c1XrPgKcVUFC" - } + }, + "source": [ + "### Step3: Evaluate linear regression model. " + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "WLxrZmknVY73" + }, + "outputs": [], "source": [ "from pyspark.ml.evaluation import RegressionEvaluator\n", "from pyspark.sql.functions import col\n", @@ -1742,33 +1747,33 @@ "y_pred = predictions.select(col(\"prediction\")).collect()\n", "test_rmse_orig = mean_squared_error(y_test, y_pred, squared=False)\n", "print(test_rmse_orig)\n" - ], - "metadata": { - "id": "WLxrZmknVY73" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", - "source": [ - "# Section 7: Construct our portfolio with GLM. " - ], "metadata": { "id": "NPYfDBDOQYPs" - } + }, + "source": [ + "# Section 7: Construct our portfolio with GLM. " + ] }, { "cell_type": "markdown", - "source": [ - "### Step 0: Set up assumptions. " - ], "metadata": { "id": "QewQDMKEV244" - } + }, + "source": [ + "### Step 0: Set up assumptions. " + ] }, { "cell_type": "code", + "execution_count": 235, + "metadata": { + "id": "SByEEUNpV_w0" + }, + "outputs": [], "source": [ "# Initiating cash balance and portfolio\n", "\n", @@ -1782,24 +1787,53 @@ "\n", "num_stock_to_buy = 20\n", "num_stock_to_sell = 50 # only if it's in our portfolio\n" - ], - "metadata": { - "id": "SByEEUNpV_w0" - }, - "execution_count": 235, - "outputs": [] + ] }, { "cell_type": "markdown", - "source": [ - "### Step 1: Predict stock price using our model. " - ], "metadata": { "id": "gxSrF3gUWAFf" - } + }, + "source": [ + "### Step 1: Predict stock price using our model. " + ] }, { "cell_type": "code", + "execution_count": 267, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 640 + }, + "id": "EqxIzH1kWFh3", + "outputId": "d6aa6f21-308f-4064-9ec1-88de21b43681" + }, + "outputs": [ + { + "ename": "Py4JError", + "evalue": "ignored", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mPy4JJavaError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pyspark/sql/utils.py\u001b[0m in \u001b[0;36mdeco\u001b[0;34m(*a, **kw)\u001b[0m\n\u001b[1;32m 110\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 111\u001b[0;31m \u001b[0mjarr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0marr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 112\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mjarr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/py4j/protocol.py\u001b[0m in \u001b[0;36mget_return_value\u001b[0;34m(answer, gateway_client, target_id, name)\u001b[0m\n\u001b[1;32m 327\u001b[0m \u001b[0;34m\"An error occurred while calling {0}{1}{2}.\\n\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 328\u001b[0;31m format(target_id, \".\", name), value)\n\u001b[0m\u001b[1;32m 329\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mPy4JJavaError\u001b[0m: An error occurred while calling o432.showString.\n: org.apache.spark.sql.AnalysisException: Undefined function: 'Timestamp'. This function is neither a registered temporary function nor a permanent function registered in the database 'pd'.; line 6 pos 48", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mPy4JError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 12\u001b[0m )\n\u001b[1;32m 13\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 14\u001b[0;31m \u001b[0mreal_world_sdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mstock_to_buy\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'ADP'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pyspark/sql/dataframe.py\u001b[0m in \u001b[0;36mshow\u001b[0;34m(self, n, truncate, vertical)\u001b[0m\n\u001b[1;32m 492\u001b[0m \u001b[0;34m:\u001b[0m\u001b[0mparam\u001b[0m \u001b[0mparameters\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mOptional\u001b[0m \u001b[0mparameters\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 493\u001b[0m \u001b[0;34m:\u001b[0m\u001b[0;32mreturn\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m:\u001b[0m\u001b[0;32mclass\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;31m`\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[0;31m`\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 494\u001b[0;31m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 495\u001b[0m \u001b[0;34m>>\u001b[0m\u001b[0;34m>\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf2\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"broadcast\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"name\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 496\u001b[0m \u001b[0;34m+\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args)\u001b[0m\n\u001b[1;32m 1308\u001b[0m self._gateway_doc = gateway_help(\n\u001b[1;32m 1309\u001b[0m self._gateway_client, self, display=False)\n\u001b[0;32m-> 1310\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_gateway_doc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1311\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1312\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__getattr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pyspark/sql/utils.py\u001b[0m in \u001b[0;36mdeco\u001b[0;34m(*a, **kw)\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0mjarr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0marr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mjarr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 113\u001b[0;31m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 114\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrequire_minimum_pandas_version\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pyspark/sql/utils.py\u001b[0m in \u001b[0;36mconvert_exception\u001b[0;34m(e)\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mIllegalArgumentException\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m': '\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstackTrace\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 80\u001b[0m \u001b[0;32mraise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 81\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mdeco\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 82\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 83\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args)\u001b[0m\n\u001b[1;32m 1308\u001b[0m self._gateway_doc = gateway_help(\n\u001b[1;32m 1309\u001b[0m self._gateway_client, self, display=False)\n\u001b[0;32m-> 1310\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_gateway_doc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1311\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1312\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__getattr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pyspark/sql/utils.py\u001b[0m in \u001b[0;36mdeco\u001b[0;34m(*a, **kw)\u001b[0m\n\u001b[1;32m 109\u001b[0m \u001b[0mjarr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgateway\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnew_array\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mjtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 110\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 111\u001b[0;31m \u001b[0mjarr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0marr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 112\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mjarr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/py4j/protocol.py\u001b[0m in \u001b[0;36mget_return_value\u001b[0;34m(answer, gateway_client, target_id, name)\u001b[0m\n\u001b[1;32m 330\u001b[0m raise Py4JError(\n\u001b[1;32m 331\u001b[0m \u001b[0;34m\"An error occurred while calling {0}{1}{2}. Trace:\\n{3}\\n\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 332\u001b[0;31m format(target_id, \".\", name, value))\n\u001b[0m\u001b[1;32m 333\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 334\u001b[0m raise Py4JError(\n", + "\u001b[0;31mPy4JError\u001b[0m: An error occurred while calling o433.toString. Trace:\npy4j.Py4JException: Method showString([class java.lang.Integer, class java.lang.Integer, class java.lang.Boolean]) does not exist\n\tat py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318)\n\tat py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:326)\n\tat py4j.Gateway.invoke(Gateway.java:274)\n\tat py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\n\tat py4j.commands.CallCommand.execute(CallCommand.java:79)\n\tat py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\n\tat py4j.ClientServerConnection.run(ClientServerConnection.java:106)\n\tat java.base/java.lang.Thread.run(Thread.java:829)\n\n" + ] + } + ], "source": [ "# Run model to get projected share price change for each stock during 2018-2019. \n", "\n", @@ -1838,53 +1872,39 @@ " )\n", " list_of_stock_to_buy[trading_date] = single_day_prediction_sdf.loc[0:19]['symbol']\n", " list_of_stock_to_sell[trading_date] = single_day_prediction_sdf.loc[-50:]['symbol']\n" - ], - "metadata": { - "id": "EqxIzH1kWFh3", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 640 - }, - "outputId": "d6aa6f21-308f-4064-9ec1-88de21b43681" - }, - "execution_count": 267, - "outputs": [ - { - "output_type": "error", - "ename": "Py4JError", - "evalue": "ignored", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mPy4JJavaError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pyspark/sql/utils.py\u001b[0m in \u001b[0;36mdeco\u001b[0;34m(*a, **kw)\u001b[0m\n\u001b[1;32m 110\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 111\u001b[0;31m \u001b[0mjarr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0marr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 112\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mjarr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/py4j/protocol.py\u001b[0m in \u001b[0;36mget_return_value\u001b[0;34m(answer, gateway_client, target_id, name)\u001b[0m\n\u001b[1;32m 327\u001b[0m \u001b[0;34m\"An error occurred while calling {0}{1}{2}.\\n\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 328\u001b[0;31m format(target_id, \".\", name), value)\n\u001b[0m\u001b[1;32m 329\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mPy4JJavaError\u001b[0m: An error occurred while calling o432.showString.\n: org.apache.spark.sql.AnalysisException: Undefined function: 'Timestamp'. This function is neither a registered temporary function nor a permanent function registered in the database 'pd'.; line 6 pos 48", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mPy4JError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 12\u001b[0m )\n\u001b[1;32m 13\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 14\u001b[0;31m \u001b[0mreal_world_sdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mstock_to_buy\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'ADP'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pyspark/sql/dataframe.py\u001b[0m in \u001b[0;36mshow\u001b[0;34m(self, n, truncate, vertical)\u001b[0m\n\u001b[1;32m 492\u001b[0m \u001b[0;34m:\u001b[0m\u001b[0mparam\u001b[0m \u001b[0mparameters\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mOptional\u001b[0m \u001b[0mparameters\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 493\u001b[0m \u001b[0;34m:\u001b[0m\u001b[0;32mreturn\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m:\u001b[0m\u001b[0;32mclass\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;31m`\u001b[0m\u001b[0mDataFrame\u001b[0m\u001b[0;31m`\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 494\u001b[0;31m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 495\u001b[0m \u001b[0;34m>>\u001b[0m\u001b[0;34m>\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf2\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"broadcast\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"name\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 496\u001b[0m \u001b[0;34m+\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args)\u001b[0m\n\u001b[1;32m 1308\u001b[0m self._gateway_doc = gateway_help(\n\u001b[1;32m 1309\u001b[0m self._gateway_client, self, display=False)\n\u001b[0;32m-> 1310\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_gateway_doc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1311\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1312\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__getattr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pyspark/sql/utils.py\u001b[0m in \u001b[0;36mdeco\u001b[0;34m(*a, **kw)\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0mjarr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0marr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mjarr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 113\u001b[0;31m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 114\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrequire_minimum_pandas_version\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pyspark/sql/utils.py\u001b[0m in \u001b[0;36mconvert_exception\u001b[0;34m(e)\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mIllegalArgumentException\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ms\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m': '\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstackTrace\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 80\u001b[0m \u001b[0;32mraise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 81\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mdeco\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 82\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 83\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/py4j/java_gateway.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args)\u001b[0m\n\u001b[1;32m 1308\u001b[0m self._gateway_doc = gateway_help(\n\u001b[1;32m 1309\u001b[0m self._gateway_client, self, display=False)\n\u001b[0;32m-> 1310\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_gateway_doc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1311\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1312\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__getattr__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/pyspark/sql/utils.py\u001b[0m in \u001b[0;36mdeco\u001b[0;34m(*a, **kw)\u001b[0m\n\u001b[1;32m 109\u001b[0m \u001b[0mjarr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgateway\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnew_array\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mjtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 110\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 111\u001b[0;31m \u001b[0mjarr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0marr\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 112\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mjarr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/py4j/protocol.py\u001b[0m in \u001b[0;36mget_return_value\u001b[0;34m(answer, gateway_client, target_id, name)\u001b[0m\n\u001b[1;32m 330\u001b[0m raise Py4JError(\n\u001b[1;32m 331\u001b[0m \u001b[0;34m\"An error occurred while calling {0}{1}{2}. Trace:\\n{3}\\n\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 332\u001b[0;31m format(target_id, \".\", name, value))\n\u001b[0m\u001b[1;32m 333\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 334\u001b[0m raise Py4JError(\n", - "\u001b[0;31mPy4JError\u001b[0m: An error occurred while calling o433.toString. Trace:\npy4j.Py4JException: Method showString([class java.lang.Integer, class java.lang.Integer, class java.lang.Boolean]) does not exist\n\tat py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318)\n\tat py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:326)\n\tat py4j.Gateway.invoke(Gateway.java:274)\n\tat py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\n\tat py4j.commands.CallCommand.execute(CallCommand.java:79)\n\tat py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\n\tat py4j.ClientServerConnection.run(ClientServerConnection.java:106)\n\tat java.base/java.lang.Thread.run(Thread.java:829)\n\n" - ] - } ] }, { "cell_type": "markdown", - "source": [ - "### Step 2: Do daily stock trades and update portfolio" - ], "metadata": { "id": "P92_MdTXP53r" - } + }, + "source": [ + "### Step 2: Do daily stock trades and update portfolio" + ] }, { "cell_type": "code", + "execution_count": 256, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "wNsspfvSQAis", + "outputId": "fcda117c-9fcd-43c2-e9c8-dd3158b78c22" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{Timestamp('2018-12-31 00:00:00'): 1000000, Timestamp('2019-01-01 00:00:00'): 1000000.0, Timestamp('2019-01-02 00:00:00'): 1000000.0, Timestamp('2019-01-03 00:00:00'): 1000000.0, Timestamp('2019-01-04 00:00:00'): 1000000.0, Timestamp('2019-01-05 00:00:00'): 1000000.0, Timestamp('2019-01-06 00:00:00'): 1000000.0, Timestamp('2019-01-07 00:00:00'): 1000000.0, Timestamp('2019-01-08 00:00:00'): 1000000.0, Timestamp('2019-01-09 00:00:00'): 1000000.0, Timestamp('2019-01-10 00:00:00'): 1000000.0, Timestamp('2019-01-11 00:00:00'): 1000000.0, Timestamp('2019-01-12 00:00:00'): 1000000.0, Timestamp('2019-01-13 00:00:00'): 1000000.0, Timestamp('2019-01-14 00:00:00'): 1000000.0, Timestamp('2019-01-15 00:00:00'): 1000000.0, Timestamp('2019-01-16 00:00:00'): 1000000.0, Timestamp('2019-01-17 00:00:00'): 1000000.0, Timestamp('2019-01-18 00:00:00'): 1000000.0, Timestamp('2019-01-19 00:00:00'): 1000000.0, Timestamp('2019-01-20 00:00:00'): 1000000.0, Timestamp('2019-01-21 00:00:00'): 1000000.0, Timestamp('2019-01-22 00:00:00'): 1000000.0, Timestamp('2019-01-23 00:00:00'): 1000000.0, Timestamp('2019-01-24 00:00:00'): 1000000.0, Timestamp('2019-01-25 00:00:00'): 1000000.0, Timestamp('2019-01-26 00:00:00'): 1000000.0, Timestamp('2019-01-27 00:00:00'): 1000000.0, Timestamp('2019-01-28 00:00:00'): 1000000.0, Timestamp('2019-01-29 00:00:00'): 1000000.0, Timestamp('2019-01-30 00:00:00'): 1000000.0, Timestamp('2019-01-31 00:00:00'): 1000000.0, Timestamp('2019-02-01 00:00:00'): 1000000.0, Timestamp('2019-02-02 00:00:00'): 1000000.0, Timestamp('2019-02-03 00:00:00'): 1000000.0, Timestamp('2019-02-04 00:00:00'): 1000000.0, Timestamp('2019-02-05 00:00:00'): 1000000.0, Timestamp('2019-02-06 00:00:00'): 1000000.0, Timestamp('2019-02-07 00:00:00'): 1000000.0, Timestamp('2019-02-08 00:00:00'): 1000000.0, Timestamp('2019-02-09 00:00:00'): 1000000.0, Timestamp('2019-02-10 00:00:00'): 1000000.0, Timestamp('2019-02-11 00:00:00'): 1000000.0, Timestamp('2019-02-12 00:00:00'): 1000000.0, Timestamp('2019-02-13 00:00:00'): 1000000.0, Timestamp('2019-02-14 00:00:00'): 1000000.0, Timestamp('2019-02-15 00:00:00'): 1000000.0, Timestamp('2019-02-16 00:00:00'): 1000000.0, Timestamp('2019-02-17 00:00:00'): 1000000.0, Timestamp('2019-02-18 00:00:00'): 1000000.0, Timestamp('2019-02-19 00:00:00'): 1000000.0, Timestamp('2019-02-20 00:00:00'): 1000000.0, Timestamp('2019-02-21 00:00:00'): 1000000.0, Timestamp('2019-02-22 00:00:00'): 1000000.0, Timestamp('2019-02-23 00:00:00'): 1000000.0, Timestamp('2019-02-24 00:00:00'): 1000000.0, Timestamp('2019-02-25 00:00:00'): 1000000.0, Timestamp('2019-02-26 00:00:00'): 1000000.0, Timestamp('2019-02-27 00:00:00'): 1000000.0, Timestamp('2019-02-28 00:00:00'): 1000000.0, Timestamp('2019-03-01 00:00:00'): 1000000.0, Timestamp('2019-03-02 00:00:00'): 1000000.0, Timestamp('2019-03-03 00:00:00'): 1000000.0, Timestamp('2019-03-04 00:00:00'): 1000000.0, Timestamp('2019-03-05 00:00:00'): 1000000.0, Timestamp('2019-03-06 00:00:00'): 1000000.0, Timestamp('2019-03-07 00:00:00'): 1000000.0, Timestamp('2019-03-08 00:00:00'): 1000000.0, Timestamp('2019-03-09 00:00:00'): 1000000.0, Timestamp('2019-03-10 00:00:00'): 1000000.0, Timestamp('2019-03-11 00:00:00'): 1000000.0, Timestamp('2019-03-12 00:00:00'): 1000000.0, Timestamp('2019-03-13 00:00:00'): 1000000.0, Timestamp('2019-03-14 00:00:00'): 1000000.0, Timestamp('2019-03-15 00:00:00'): 1000000.0, Timestamp('2019-03-16 00:00:00'): 1000000.0, Timestamp('2019-03-17 00:00:00'): 1000000.0, Timestamp('2019-03-18 00:00:00'): 1000000.0, Timestamp('2019-03-19 00:00:00'): 1000000.0, Timestamp('2019-03-20 00:00:00'): 1000000.0, Timestamp('2019-03-21 00:00:00'): 1000000.0, Timestamp('2019-03-22 00:00:00'): 1000000.0, Timestamp('2019-03-23 00:00:00'): 1000000.0, Timestamp('2019-03-24 00:00:00'): 1000000.0, Timestamp('2019-03-25 00:00:00'): 1000000.0, Timestamp('2019-03-26 00:00:00'): 1000000.0, Timestamp('2019-03-27 00:00:00'): 1000000.0, Timestamp('2019-03-28 00:00:00'): 1000000.0, Timestamp('2019-03-29 00:00:00'): 1000000.0, Timestamp('2019-03-30 00:00:00'): 1000000.0, Timestamp('2019-03-31 00:00:00'): 1000000.0, Timestamp('2019-04-01 00:00:00'): 1000000.0, Timestamp('2019-04-02 00:00:00'): 1000000.0, Timestamp('2019-04-03 00:00:00'): 1000000.0, Timestamp('2019-04-04 00:00:00'): 1000000.0, Timestamp('2019-04-05 00:00:00'): 1000000.0, Timestamp('2019-04-06 00:00:00'): 1000000.0, Timestamp('2019-04-07 00:00:00'): 1000000.0, Timestamp('2019-04-08 00:00:00'): 1000000.0, Timestamp('2019-04-09 00:00:00'): 1000000.0, Timestamp('2019-04-10 00:00:00'): 1000000.0, Timestamp('2019-04-11 00:00:00'): 1000000.0, Timestamp('2019-04-12 00:00:00'): 1000000.0, Timestamp('2019-04-13 00:00:00'): 1000000.0, Timestamp('2019-04-14 00:00:00'): 1000000.0, Timestamp('2019-04-15 00:00:00'): 1000000.0, Timestamp('2019-04-16 00:00:00'): 1000000.0, Timestamp('2019-04-17 00:00:00'): 1000000.0, Timestamp('2019-04-18 00:00:00'): 1000000.0, Timestamp('2019-04-19 00:00:00'): 1000000.0, Timestamp('2019-04-20 00:00:00'): 1000000.0, Timestamp('2019-04-21 00:00:00'): 1000000.0, Timestamp('2019-04-22 00:00:00'): 1000000.0, Timestamp('2019-04-23 00:00:00'): 1000000.0, Timestamp('2019-04-24 00:00:00'): 1000000.0, Timestamp('2019-04-25 00:00:00'): 1000000.0, Timestamp('2019-04-26 00:00:00'): 1000000.0, Timestamp('2019-04-27 00:00:00'): 1000000.0, Timestamp('2019-04-28 00:00:00'): 1000000.0, Timestamp('2019-04-29 00:00:00'): 1000000.0, Timestamp('2019-04-30 00:00:00'): 1000000.0, Timestamp('2019-05-01 00:00:00'): 1000000.0, Timestamp('2019-05-02 00:00:00'): 1000000.0, Timestamp('2019-05-03 00:00:00'): 1000000.0, Timestamp('2019-05-04 00:00:00'): 1000000.0, Timestamp('2019-05-05 00:00:00'): 1000000.0, Timestamp('2019-05-06 00:00:00'): 1000000.0, Timestamp('2019-05-07 00:00:00'): 1000000.0, Timestamp('2019-05-08 00:00:00'): 1000000.0, Timestamp('2019-05-09 00:00:00'): 1000000.0, Timestamp('2019-05-10 00:00:00'): 1000000.0, Timestamp('2019-05-11 00:00:00'): 1000000.0, Timestamp('2019-05-12 00:00:00'): 1000000.0, Timestamp('2019-05-13 00:00:00'): 1000000.0, Timestamp('2019-05-14 00:00:00'): 1000000.0, Timestamp('2019-05-15 00:00:00'): 1000000.0, Timestamp('2019-05-16 00:00:00'): 1000000.0, Timestamp('2019-05-17 00:00:00'): 1000000.0, Timestamp('2019-05-18 00:00:00'): 1000000.0, Timestamp('2019-05-19 00:00:00'): 1000000.0, Timestamp('2019-05-20 00:00:00'): 1000000.0, Timestamp('2019-05-21 00:00:00'): 1000000.0, Timestamp('2019-05-22 00:00:00'): 1000000.0, Timestamp('2019-05-23 00:00:00'): 1000000.0, Timestamp('2019-05-24 00:00:00'): 1000000.0, Timestamp('2019-05-25 00:00:00'): 1000000.0, Timestamp('2019-05-26 00:00:00'): 1000000.0, Timestamp('2019-05-27 00:00:00'): 1000000.0, Timestamp('2019-05-28 00:00:00'): 1000000.0, Timestamp('2019-05-29 00:00:00'): 1000000.0, Timestamp('2019-05-30 00:00:00'): 1000000.0, Timestamp('2019-05-31 00:00:00'): 1000000.0, Timestamp('2019-06-01 00:00:00'): 1000000.0, Timestamp('2019-06-02 00:00:00'): 1000000.0, Timestamp('2019-06-03 00:00:00'): 1000000.0, Timestamp('2019-06-04 00:00:00'): 1000000.0, Timestamp('2019-06-05 00:00:00'): 1000000.0, Timestamp('2019-06-06 00:00:00'): 1000000.0, Timestamp('2019-06-07 00:00:00'): 1000000.0, Timestamp('2019-06-08 00:00:00'): 1000000.0, Timestamp('2019-06-09 00:00:00'): 1000000.0, Timestamp('2019-06-10 00:00:00'): 1000000.0, Timestamp('2019-06-11 00:00:00'): 1000000.0, Timestamp('2019-06-12 00:00:00'): 1000000.0, Timestamp('2019-06-13 00:00:00'): 1000000.0, Timestamp('2019-06-14 00:00:00'): 1000000.0, Timestamp('2019-06-15 00:00:00'): 1000000.0, Timestamp('2019-06-16 00:00:00'): 1000000.0, Timestamp('2019-06-17 00:00:00'): 1000000.0, Timestamp('2019-06-18 00:00:00'): 1000000.0, Timestamp('2019-06-19 00:00:00'): 1000000.0, Timestamp('2019-06-20 00:00:00'): 1000000.0, Timestamp('2019-06-21 00:00:00'): 1000000.0, Timestamp('2019-06-22 00:00:00'): 1000000.0, Timestamp('2019-06-23 00:00:00'): 1000000.0, Timestamp('2019-06-24 00:00:00'): 1000000.0, Timestamp('2019-06-25 00:00:00'): 1000000.0, Timestamp('2019-06-26 00:00:00'): 1000000.0, Timestamp('2019-06-27 00:00:00'): 1000000.0, Timestamp('2019-06-28 00:00:00'): 1000000.0, Timestamp('2019-06-29 00:00:00'): 1000000.0, Timestamp('2019-06-30 00:00:00'): 1000000.0, Timestamp('2019-07-01 00:00:00'): 1000000.0, Timestamp('2019-07-02 00:00:00'): 1000000.0, Timestamp('2019-07-03 00:00:00'): 1000000.0, Timestamp('2019-07-04 00:00:00'): 1000000.0, Timestamp('2019-07-05 00:00:00'): 1000000.0, Timestamp('2019-07-06 00:00:00'): 1000000.0, Timestamp('2019-07-07 00:00:00'): 1000000.0, Timestamp('2019-07-08 00:00:00'): 1000000.0, Timestamp('2019-07-09 00:00:00'): 1000000.0, Timestamp('2019-07-10 00:00:00'): 1000000.0, Timestamp('2019-07-11 00:00:00'): 1000000.0, Timestamp('2019-07-12 00:00:00'): 1000000.0, Timestamp('2019-07-13 00:00:00'): 1000000.0, Timestamp('2019-07-14 00:00:00'): 1000000.0, Timestamp('2019-07-15 00:00:00'): 1000000.0, Timestamp('2019-07-16 00:00:00'): 1000000.0, Timestamp('2019-07-17 00:00:00'): 1000000.0, Timestamp('2019-07-18 00:00:00'): 1000000.0, Timestamp('2019-07-19 00:00:00'): 1000000.0, Timestamp('2019-07-20 00:00:00'): 1000000.0, Timestamp('2019-07-21 00:00:00'): 1000000.0, Timestamp('2019-07-22 00:00:00'): 1000000.0, Timestamp('2019-07-23 00:00:00'): 1000000.0, Timestamp('2019-07-24 00:00:00'): 1000000.0, Timestamp('2019-07-25 00:00:00'): 1000000.0, Timestamp('2019-07-26 00:00:00'): 1000000.0, Timestamp('2019-07-27 00:00:00'): 1000000.0, Timestamp('2019-07-28 00:00:00'): 1000000.0, Timestamp('2019-07-29 00:00:00'): 1000000.0, Timestamp('2019-07-30 00:00:00'): 1000000.0, Timestamp('2019-07-31 00:00:00'): 1000000.0, Timestamp('2019-08-01 00:00:00'): 1000000.0, Timestamp('2019-08-02 00:00:00'): 1000000.0, Timestamp('2019-08-03 00:00:00'): 1000000.0, Timestamp('2019-08-04 00:00:00'): 1000000.0, Timestamp('2019-08-05 00:00:00'): 1000000.0, Timestamp('2019-08-06 00:00:00'): 1000000.0, Timestamp('2019-08-07 00:00:00'): 1000000.0, Timestamp('2019-08-08 00:00:00'): 1000000.0, Timestamp('2019-08-09 00:00:00'): 1000000.0, Timestamp('2019-08-10 00:00:00'): 1000000.0, Timestamp('2019-08-11 00:00:00'): 1000000.0, Timestamp('2019-08-12 00:00:00'): 1000000.0, Timestamp('2019-08-13 00:00:00'): 1000000.0, Timestamp('2019-08-14 00:00:00'): 1000000.0, Timestamp('2019-08-15 00:00:00'): 1000000.0, Timestamp('2019-08-16 00:00:00'): 1000000.0, Timestamp('2019-08-17 00:00:00'): 1000000.0, Timestamp('2019-08-18 00:00:00'): 1000000.0, Timestamp('2019-08-19 00:00:00'): 1000000.0, Timestamp('2019-08-20 00:00:00'): 1000000.0, Timestamp('2019-08-21 00:00:00'): 1000000.0, Timestamp('2019-08-22 00:00:00'): 1000000.0, Timestamp('2019-08-23 00:00:00'): 1000000.0, Timestamp('2019-08-24 00:00:00'): 1000000.0, Timestamp('2019-08-25 00:00:00'): 1000000.0, Timestamp('2019-08-26 00:00:00'): 1000000.0, Timestamp('2019-08-27 00:00:00'): 1000000.0, Timestamp('2019-08-28 00:00:00'): 1000000.0, Timestamp('2019-08-29 00:00:00'): 1000000.0, Timestamp('2019-08-30 00:00:00'): 1000000.0, Timestamp('2019-08-31 00:00:00'): 1000000.0, Timestamp('2019-09-01 00:00:00'): 1000000.0, Timestamp('2019-09-02 00:00:00'): 1000000.0, Timestamp('2019-09-03 00:00:00'): 1000000.0, Timestamp('2019-09-04 00:00:00'): 1000000.0, Timestamp('2019-09-05 00:00:00'): 1000000.0, Timestamp('2019-09-06 00:00:00'): 1000000.0, Timestamp('2019-09-07 00:00:00'): 1000000.0, Timestamp('2019-09-08 00:00:00'): 1000000.0, Timestamp('2019-09-09 00:00:00'): 1000000.0, Timestamp('2019-09-10 00:00:00'): 1000000.0, Timestamp('2019-09-11 00:00:00'): 1000000.0, Timestamp('2019-09-12 00:00:00'): 1000000.0, Timestamp('2019-09-13 00:00:00'): 1000000.0, Timestamp('2019-09-14 00:00:00'): 1000000.0, Timestamp('2019-09-15 00:00:00'): 1000000.0, Timestamp('2019-09-16 00:00:00'): 1000000.0, Timestamp('2019-09-17 00:00:00'): 1000000.0, Timestamp('2019-09-18 00:00:00'): 1000000.0, Timestamp('2019-09-19 00:00:00'): 1000000.0, Timestamp('2019-09-20 00:00:00'): 1000000.0, Timestamp('2019-09-21 00:00:00'): 1000000.0, Timestamp('2019-09-22 00:00:00'): 1000000.0, Timestamp('2019-09-23 00:00:00'): 1000000.0, Timestamp('2019-09-24 00:00:00'): 1000000.0, Timestamp('2019-09-25 00:00:00'): 1000000.0, Timestamp('2019-09-26 00:00:00'): 1000000.0, Timestamp('2019-09-27 00:00:00'): 1000000.0, Timestamp('2019-09-28 00:00:00'): 1000000.0, Timestamp('2019-09-29 00:00:00'): 1000000.0, Timestamp('2019-09-30 00:00:00'): 1000000.0, Timestamp('2019-10-01 00:00:00'): 1000000.0, Timestamp('2019-10-02 00:00:00'): 1000000.0, Timestamp('2019-10-03 00:00:00'): 1000000.0, Timestamp('2019-10-04 00:00:00'): 1000000.0, Timestamp('2019-10-05 00:00:00'): 1000000.0, Timestamp('2019-10-06 00:00:00'): 1000000.0, Timestamp('2019-10-07 00:00:00'): 1000000.0, Timestamp('2019-10-08 00:00:00'): 1000000.0, Timestamp('2019-10-09 00:00:00'): 1000000.0, Timestamp('2019-10-10 00:00:00'): 1000000.0, Timestamp('2019-10-11 00:00:00'): 1000000.0, Timestamp('2019-10-12 00:00:00'): 1000000.0, Timestamp('2019-10-13 00:00:00'): 1000000.0, Timestamp('2019-10-14 00:00:00'): 1000000.0, Timestamp('2019-10-15 00:00:00'): 1000000.0, Timestamp('2019-10-16 00:00:00'): 1000000.0, Timestamp('2019-10-17 00:00:00'): 1000000.0, Timestamp('2019-10-18 00:00:00'): 1000000.0, Timestamp('2019-10-19 00:00:00'): 1000000.0, Timestamp('2019-10-20 00:00:00'): 1000000.0, Timestamp('2019-10-21 00:00:00'): 1000000.0, Timestamp('2019-10-22 00:00:00'): 1000000.0, Timestamp('2019-10-23 00:00:00'): 1000000.0, Timestamp('2019-10-24 00:00:00'): 1000000.0, Timestamp('2019-10-25 00:00:00'): 1000000.0, Timestamp('2019-10-26 00:00:00'): 1000000.0, Timestamp('2019-10-27 00:00:00'): 1000000.0, Timestamp('2019-10-28 00:00:00'): 1000000.0, Timestamp('2019-10-29 00:00:00'): 1000000.0, Timestamp('2019-10-30 00:00:00'): 1000000.0, Timestamp('2019-10-31 00:00:00'): 1000000.0, Timestamp('2019-11-01 00:00:00'): 1000000.0, Timestamp('2019-11-02 00:00:00'): 1000000.0, Timestamp('2019-11-03 00:00:00'): 1000000.0, Timestamp('2019-11-04 00:00:00'): 1000000.0, Timestamp('2019-11-05 00:00:00'): 1000000.0, Timestamp('2019-11-06 00:00:00'): 1000000.0, Timestamp('2019-11-07 00:00:00'): 1000000.0, Timestamp('2019-11-08 00:00:00'): 1000000.0, Timestamp('2019-11-09 00:00:00'): 1000000.0, Timestamp('2019-11-10 00:00:00'): 1000000.0, Timestamp('2019-11-11 00:00:00'): 1000000.0, Timestamp('2019-11-12 00:00:00'): 1000000.0, Timestamp('2019-11-13 00:00:00'): 1000000.0, Timestamp('2019-11-14 00:00:00'): 1000000.0, Timestamp('2019-11-15 00:00:00'): 1000000.0, Timestamp('2019-11-16 00:00:00'): 1000000.0, Timestamp('2019-11-17 00:00:00'): 1000000.0, Timestamp('2019-11-18 00:00:00'): 1000000.0, Timestamp('2019-11-19 00:00:00'): 1000000.0, Timestamp('2019-11-20 00:00:00'): 1000000.0, Timestamp('2019-11-21 00:00:00'): 1000000.0, Timestamp('2019-11-22 00:00:00'): 1000000.0, Timestamp('2019-11-23 00:00:00'): 1000000.0, Timestamp('2019-11-24 00:00:00'): 1000000.0, Timestamp('2019-11-25 00:00:00'): 1000000.0, Timestamp('2019-11-26 00:00:00'): 1000000.0, Timestamp('2019-11-27 00:00:00'): 1000000.0, Timestamp('2019-11-28 00:00:00'): 1000000.0, Timestamp('2019-11-29 00:00:00'): 1000000.0, Timestamp('2019-11-30 00:00:00'): 1000000.0, Timestamp('2019-12-01 00:00:00'): 1000000.0, Timestamp('2019-12-02 00:00:00'): 1000000.0, Timestamp('2019-12-03 00:00:00'): 1000000.0, Timestamp('2019-12-04 00:00:00'): 1000000.0, Timestamp('2019-12-05 00:00:00'): 1000000.0, Timestamp('2019-12-06 00:00:00'): 1000000.0, Timestamp('2019-12-07 00:00:00'): 1000000.0, Timestamp('2019-12-08 00:00:00'): 1000000.0, Timestamp('2019-12-09 00:00:00'): 1000000.0, Timestamp('2019-12-10 00:00:00'): 1000000.0, Timestamp('2019-12-11 00:00:00'): 1000000.0, Timestamp('2019-12-12 00:00:00'): 1000000.0, Timestamp('2019-12-13 00:00:00'): 1000000.0, Timestamp('2019-12-14 00:00:00'): 1000000.0, Timestamp('2019-12-15 00:00:00'): 1000000.0, Timestamp('2019-12-16 00:00:00'): 1000000.0, Timestamp('2019-12-17 00:00:00'): 1000000.0, Timestamp('2019-12-18 00:00:00'): 1000000.0, Timestamp('2019-12-19 00:00:00'): 1000000.0, Timestamp('2019-12-20 00:00:00'): 1000000.0, Timestamp('2019-12-21 00:00:00'): 1000000.0, Timestamp('2019-12-22 00:00:00'): 1000000.0, Timestamp('2019-12-23 00:00:00'): 1000000.0, Timestamp('2019-12-24 00:00:00'): 1000000.0, Timestamp('2019-12-25 00:00:00'): 1000000.0, Timestamp('2019-12-26 00:00:00'): 1000000.0, Timestamp('2019-12-27 00:00:00'): 1000000.0, Timestamp('2019-12-28 00:00:00'): 1000000.0, Timestamp('2019-12-29 00:00:00'): 1000000.0, Timestamp('2019-12-30 00:00:00'): 1000000.0, Timestamp('2019-12-31 00:00:00'): 1000000.0, Timestamp('2020-01-01 00:00:00'): 1000000.0, Timestamp('2020-01-02 00:00:00'): 1000000.0, Timestamp('2020-01-03 00:00:00'): 1000000.0, Timestamp('2020-01-04 00:00:00'): 1000000.0, Timestamp('2020-01-05 00:00:00'): 1000000.0, Timestamp('2020-01-06 00:00:00'): 1000000.0, Timestamp('2020-01-07 00:00:00'): 1000000.0, Timestamp('2020-01-08 00:00:00'): 1000000.0, Timestamp('2020-01-09 00:00:00'): 1000000.0, Timestamp('2020-01-10 00:00:00'): 1000000.0, Timestamp('2020-01-11 00:00:00'): 1000000.0, Timestamp('2020-01-12 00:00:00'): 1000000.0, Timestamp('2020-01-13 00:00:00'): 1000000.0, Timestamp('2020-01-14 00:00:00'): 1000000.0, Timestamp('2020-01-15 00:00:00'): 1000000.0, Timestamp('2020-01-16 00:00:00'): 1000000.0, Timestamp('2020-01-17 00:00:00'): 1000000.0, Timestamp('2020-01-18 00:00:00'): 1000000.0, Timestamp('2020-01-19 00:00:00'): 1000000.0, Timestamp('2020-01-20 00:00:00'): 1000000.0, Timestamp('2020-01-21 00:00:00'): 1000000.0, Timestamp('2020-01-22 00:00:00'): 1000000.0, Timestamp('2020-01-23 00:00:00'): 1000000.0, Timestamp('2020-01-24 00:00:00'): 1000000.0, Timestamp('2020-01-25 00:00:00'): 1000000.0, Timestamp('2020-01-26 00:00:00'): 1000000.0, Timestamp('2020-01-27 00:00:00'): 1000000.0, Timestamp('2020-01-28 00:00:00'): 1000000.0, Timestamp('2020-01-29 00:00:00'): 1000000.0, Timestamp('2020-01-30 00:00:00'): 1000000.0, Timestamp('2020-01-31 00:00:00'): 1000000.0, Timestamp('2020-02-01 00:00:00'): 1000000.0, Timestamp('2020-02-02 00:00:00'): 1000000.0, Timestamp('2020-02-03 00:00:00'): 1000000.0, Timestamp('2020-02-04 00:00:00'): 1000000.0, Timestamp('2020-02-05 00:00:00'): 1000000.0, Timestamp('2020-02-06 00:00:00'): 1000000.0, Timestamp('2020-02-07 00:00:00'): 1000000.0, Timestamp('2020-02-08 00:00:00'): 1000000.0, Timestamp('2020-02-09 00:00:00'): 1000000.0, Timestamp('2020-02-10 00:00:00'): 1000000.0, Timestamp('2020-02-11 00:00:00'): 1000000.0, Timestamp('2020-02-12 00:00:00'): 1000000.0, Timestamp('2020-02-13 00:00:00'): 1000000.0, Timestamp('2020-02-14 00:00:00'): 1000000.0, Timestamp('2020-02-15 00:00:00'): 1000000.0, Timestamp('2020-02-16 00:00:00'): 1000000.0, Timestamp('2020-02-17 00:00:00'): 1000000.0, Timestamp('2020-02-18 00:00:00'): 1000000.0, Timestamp('2020-02-19 00:00:00'): 1000000.0, Timestamp('2020-02-20 00:00:00'): 1000000.0, Timestamp('2020-02-21 00:00:00'): 1000000.0, Timestamp('2020-02-22 00:00:00'): 1000000.0, Timestamp('2020-02-23 00:00:00'): 1000000.0, Timestamp('2020-02-24 00:00:00'): 1000000.0, Timestamp('2020-02-25 00:00:00'): 1000000.0, Timestamp('2020-02-26 00:00:00'): 1000000.0, Timestamp('2020-02-27 00:00:00'): 1000000.0, Timestamp('2020-02-28 00:00:00'): 1000000.0, Timestamp('2020-02-29 00:00:00'): 1000000.0, Timestamp('2020-03-01 00:00:00'): 1000000.0, Timestamp('2020-03-02 00:00:00'): 1000000.0, Timestamp('2020-03-03 00:00:00'): 1000000.0, Timestamp('2020-03-04 00:00:00'): 1000000.0, Timestamp('2020-03-05 00:00:00'): 1000000.0, Timestamp('2020-03-06 00:00:00'): 1000000.0, Timestamp('2020-03-07 00:00:00'): 1000000.0, Timestamp('2020-03-08 00:00:00'): 1000000.0, Timestamp('2020-03-09 00:00:00'): 1000000.0, Timestamp('2020-03-10 00:00:00'): 1000000.0, Timestamp('2020-03-11 00:00:00'): 1000000.0, Timestamp('2020-03-12 00:00:00'): 1000000.0, Timestamp('2020-03-13 00:00:00'): 1000000.0, Timestamp('2020-03-14 00:00:00'): 1000000.0, Timestamp('2020-03-15 00:00:00'): 1000000.0, Timestamp('2020-03-16 00:00:00'): 1000000.0, Timestamp('2020-03-17 00:00:00'): 1000000.0, Timestamp('2020-03-18 00:00:00'): 1000000.0, Timestamp('2020-03-19 00:00:00'): 1000000.0, Timestamp('2020-03-20 00:00:00'): 1000000.0, Timestamp('2020-03-21 00:00:00'): 1000000.0, Timestamp('2020-03-22 00:00:00'): 1000000.0, Timestamp('2020-03-23 00:00:00'): 1000000.0, Timestamp('2020-03-24 00:00:00'): 1000000.0, Timestamp('2020-03-25 00:00:00'): 1000000.0, Timestamp('2020-03-26 00:00:00'): 1000000.0, Timestamp('2020-03-27 00:00:00'): 1000000.0, Timestamp('2020-03-28 00:00:00'): 1000000.0, Timestamp('2020-03-29 00:00:00'): 1000000.0, Timestamp('2020-03-30 00:00:00'): 1000000.0, Timestamp('2020-03-31 00:00:00'): 1000000.0, Timestamp('2020-04-01 00:00:00'): 1000000.0, Timestamp('2020-04-02 00:00:00'): 1000000.0, Timestamp('2020-04-03 00:00:00'): 1000000.0, Timestamp('2020-04-04 00:00:00'): 1000000.0, Timestamp('2020-04-05 00:00:00'): 1000000.0, Timestamp('2020-04-06 00:00:00'): 1000000.0, Timestamp('2020-04-07 00:00:00'): 1000000.0, Timestamp('2020-04-08 00:00:00'): 1000000.0, Timestamp('2020-04-09 00:00:00'): 1000000.0, Timestamp('2020-04-10 00:00:00'): 1000000.0, Timestamp('2020-04-11 00:00:00'): 1000000.0, Timestamp('2020-04-12 00:00:00'): 1000000.0, Timestamp('2020-04-13 00:00:00'): 1000000.0, Timestamp('2020-04-14 00:00:00'): 1000000.0, Timestamp('2020-04-15 00:00:00'): 1000000.0, Timestamp('2020-04-16 00:00:00'): 1000000.0, Timestamp('2020-04-17 00:00:00'): 1000000.0, Timestamp('2020-04-18 00:00:00'): 1000000.0, Timestamp('2020-04-19 00:00:00'): 1000000.0, Timestamp('2020-04-20 00:00:00'): 1000000.0, Timestamp('2020-04-21 00:00:00'): 1000000.0, Timestamp('2020-04-22 00:00:00'): 1000000.0, Timestamp('2020-04-23 00:00:00'): 1000000.0, Timestamp('2020-04-24 00:00:00'): 1000000.0, Timestamp('2020-04-25 00:00:00'): 1000000.0, Timestamp('2020-04-26 00:00:00'): 1000000.0, Timestamp('2020-04-27 00:00:00'): 1000000.0, Timestamp('2020-04-28 00:00:00'): 1000000.0, Timestamp('2020-04-29 00:00:00'): 1000000.0, Timestamp('2020-04-30 00:00:00'): 1000000.0, Timestamp('2020-05-01 00:00:00'): 1000000.0, Timestamp('2020-05-02 00:00:00'): 1000000.0, Timestamp('2020-05-03 00:00:00'): 1000000.0, Timestamp('2020-05-04 00:00:00'): 1000000.0, Timestamp('2020-05-05 00:00:00'): 1000000.0, Timestamp('2020-05-06 00:00:00'): 1000000.0, Timestamp('2020-05-07 00:00:00'): 1000000.0, Timestamp('2020-05-08 00:00:00'): 1000000.0, Timestamp('2020-05-09 00:00:00'): 1000000.0, Timestamp('2020-05-10 00:00:00'): 1000000.0, Timestamp('2020-05-11 00:00:00'): 1000000.0, Timestamp('2020-05-12 00:00:00'): 1000000.0, Timestamp('2020-05-13 00:00:00'): 1000000.0, Timestamp('2020-05-14 00:00:00'): 1000000.0}\n", + "{Timestamp('2018-12-31 00:00:00'): 2506.85, Timestamp('2019-01-01 00:00:00'): 2506.85, Timestamp('2019-01-02 00:00:00'): 2510.03, Timestamp('2019-01-03 00:00:00'): 2447.89, Timestamp('2019-01-04 00:00:00'): 2531.94, Timestamp('2019-01-05 00:00:00'): 2531.94, Timestamp('2019-01-06 00:00:00'): 2531.94, Timestamp('2019-01-07 00:00:00'): 2549.69, Timestamp('2019-01-08 00:00:00'): 2574.41, Timestamp('2019-01-09 00:00:00'): 2584.96, Timestamp('2019-01-10 00:00:00'): 2596.64, Timestamp('2019-01-11 00:00:00'): 2596.26, Timestamp('2019-01-12 00:00:00'): 2596.26, Timestamp('2019-01-13 00:00:00'): 2596.26, Timestamp('2019-01-14 00:00:00'): 2582.61, Timestamp('2019-01-15 00:00:00'): 2610.3, Timestamp('2019-01-16 00:00:00'): 2616.1, Timestamp('2019-01-17 00:00:00'): 2635.96, Timestamp('2019-01-18 00:00:00'): 2670.71, Timestamp('2019-01-19 00:00:00'): 2670.71, Timestamp('2019-01-20 00:00:00'): 2670.71, Timestamp('2019-01-21 00:00:00'): nan, Timestamp('2019-01-22 00:00:00'): 2632.9, Timestamp('2019-01-23 00:00:00'): 2638.7, Timestamp('2019-01-24 00:00:00'): 2642.33, Timestamp('2019-01-25 00:00:00'): 2664.76, Timestamp('2019-01-26 00:00:00'): 2664.76, Timestamp('2019-01-27 00:00:00'): 2664.76, Timestamp('2019-01-28 00:00:00'): 2643.85, Timestamp('2019-01-29 00:00:00'): 2640.0, Timestamp('2019-01-30 00:00:00'): 2681.05, Timestamp('2019-01-31 00:00:00'): 2704.1, Timestamp('2019-02-01 00:00:00'): 2706.53, Timestamp('2019-02-02 00:00:00'): 2706.53, Timestamp('2019-02-03 00:00:00'): 2706.53, Timestamp('2019-02-04 00:00:00'): 2724.87, Timestamp('2019-02-05 00:00:00'): 2737.7, Timestamp('2019-02-06 00:00:00'): 2731.61, Timestamp('2019-02-07 00:00:00'): 2706.05, Timestamp('2019-02-08 00:00:00'): 2707.88, Timestamp('2019-02-09 00:00:00'): 2707.88, Timestamp('2019-02-10 00:00:00'): 2707.88, Timestamp('2019-02-11 00:00:00'): 2709.8, Timestamp('2019-02-12 00:00:00'): 2744.73, Timestamp('2019-02-13 00:00:00'): 2753.03, Timestamp('2019-02-14 00:00:00'): 2745.73, Timestamp('2019-02-15 00:00:00'): 2775.6, Timestamp('2019-02-16 00:00:00'): 2775.6, Timestamp('2019-02-17 00:00:00'): 2775.6, Timestamp('2019-02-18 00:00:00'): nan, Timestamp('2019-02-19 00:00:00'): 2779.76, Timestamp('2019-02-20 00:00:00'): 2784.7, Timestamp('2019-02-21 00:00:00'): 2774.88, Timestamp('2019-02-22 00:00:00'): 2792.67, Timestamp('2019-02-23 00:00:00'): 2792.67, Timestamp('2019-02-24 00:00:00'): 2792.67, Timestamp('2019-02-25 00:00:00'): 2796.11, Timestamp('2019-02-26 00:00:00'): 2793.9, Timestamp('2019-02-27 00:00:00'): 2792.38, Timestamp('2019-02-28 00:00:00'): 2784.49, Timestamp('2019-03-01 00:00:00'): 2803.69, Timestamp('2019-03-02 00:00:00'): 2803.69, Timestamp('2019-03-03 00:00:00'): 2803.69, Timestamp('2019-03-04 00:00:00'): 2792.81, Timestamp('2019-03-05 00:00:00'): 2789.65, Timestamp('2019-03-06 00:00:00'): 2771.45, Timestamp('2019-03-07 00:00:00'): 2748.93, Timestamp('2019-03-08 00:00:00'): 2743.07, Timestamp('2019-03-09 00:00:00'): 2743.07, Timestamp('2019-03-10 00:00:00'): 2743.07, Timestamp('2019-03-11 00:00:00'): 2783.3, Timestamp('2019-03-12 00:00:00'): 2791.52, Timestamp('2019-03-13 00:00:00'): 2810.92, Timestamp('2019-03-14 00:00:00'): 2808.48, Timestamp('2019-03-15 00:00:00'): 2822.48, Timestamp('2019-03-16 00:00:00'): 2822.48, Timestamp('2019-03-17 00:00:00'): 2822.48, Timestamp('2019-03-18 00:00:00'): 2832.94, Timestamp('2019-03-19 00:00:00'): 2832.57, Timestamp('2019-03-20 00:00:00'): 2824.23, Timestamp('2019-03-21 00:00:00'): 2854.88, Timestamp('2019-03-22 00:00:00'): 2800.71, Timestamp('2019-03-23 00:00:00'): 2800.71, Timestamp('2019-03-24 00:00:00'): 2800.71, Timestamp('2019-03-25 00:00:00'): 2798.36, Timestamp('2019-03-26 00:00:00'): 2818.46, Timestamp('2019-03-27 00:00:00'): 2805.37, Timestamp('2019-03-28 00:00:00'): 2815.44, Timestamp('2019-03-29 00:00:00'): 2834.4, Timestamp('2019-03-30 00:00:00'): 2834.4, Timestamp('2019-03-31 00:00:00'): 2834.4, Timestamp('2019-04-01 00:00:00'): 2867.19, Timestamp('2019-04-02 00:00:00'): 2867.24, Timestamp('2019-04-03 00:00:00'): 2873.4, Timestamp('2019-04-04 00:00:00'): 2879.39, Timestamp('2019-04-05 00:00:00'): 2892.74, Timestamp('2019-04-06 00:00:00'): 2892.74, Timestamp('2019-04-07 00:00:00'): 2892.74, Timestamp('2019-04-08 00:00:00'): 2895.77, Timestamp('2019-04-09 00:00:00'): 2878.2, Timestamp('2019-04-10 00:00:00'): 2888.21, Timestamp('2019-04-11 00:00:00'): 2888.32, Timestamp('2019-04-12 00:00:00'): 2907.41, Timestamp('2019-04-13 00:00:00'): 2907.41, Timestamp('2019-04-14 00:00:00'): 2907.41, Timestamp('2019-04-15 00:00:00'): 2905.58, Timestamp('2019-04-16 00:00:00'): 2907.06, Timestamp('2019-04-17 00:00:00'): 2900.45, Timestamp('2019-04-18 00:00:00'): 2905.03, Timestamp('2019-04-19 00:00:00'): nan, Timestamp('2019-04-20 00:00:00'): nan, Timestamp('2019-04-21 00:00:00'): nan, Timestamp('2019-04-22 00:00:00'): 2907.97, Timestamp('2019-04-23 00:00:00'): 2933.68, Timestamp('2019-04-24 00:00:00'): 2927.25, Timestamp('2019-04-25 00:00:00'): 2926.17, Timestamp('2019-04-26 00:00:00'): 2939.88, Timestamp('2019-04-27 00:00:00'): 2939.88, Timestamp('2019-04-28 00:00:00'): 2939.88, Timestamp('2019-04-29 00:00:00'): 2943.03, Timestamp('2019-04-30 00:00:00'): 2945.83, Timestamp('2019-05-01 00:00:00'): 2923.73, Timestamp('2019-05-02 00:00:00'): 2917.52, Timestamp('2019-05-03 00:00:00'): 2945.64, Timestamp('2019-05-04 00:00:00'): 2945.64, Timestamp('2019-05-05 00:00:00'): 2945.64, Timestamp('2019-05-06 00:00:00'): 2932.47, Timestamp('2019-05-07 00:00:00'): 2884.05, Timestamp('2019-05-08 00:00:00'): 2879.42, Timestamp('2019-05-09 00:00:00'): 2870.72, Timestamp('2019-05-10 00:00:00'): 2881.4, Timestamp('2019-05-11 00:00:00'): 2881.4, Timestamp('2019-05-12 00:00:00'): 2881.4, Timestamp('2019-05-13 00:00:00'): 2811.87, Timestamp('2019-05-14 00:00:00'): 2834.41, Timestamp('2019-05-15 00:00:00'): 2850.96, Timestamp('2019-05-16 00:00:00'): 2876.32, Timestamp('2019-05-17 00:00:00'): 2859.53, Timestamp('2019-05-18 00:00:00'): 2859.53, Timestamp('2019-05-19 00:00:00'): 2859.53, Timestamp('2019-05-20 00:00:00'): 2840.23, Timestamp('2019-05-21 00:00:00'): 2864.36, Timestamp('2019-05-22 00:00:00'): 2856.27, Timestamp('2019-05-23 00:00:00'): 2822.24, Timestamp('2019-05-24 00:00:00'): 2826.06, Timestamp('2019-05-25 00:00:00'): 2826.06, Timestamp('2019-05-26 00:00:00'): 2826.06, Timestamp('2019-05-27 00:00:00'): nan, Timestamp('2019-05-28 00:00:00'): 2802.39, Timestamp('2019-05-29 00:00:00'): 2783.02, Timestamp('2019-05-30 00:00:00'): 2788.86, Timestamp('2019-05-31 00:00:00'): 2752.06, Timestamp('2019-06-01 00:00:00'): 2752.06, Timestamp('2019-06-02 00:00:00'): 2752.06, Timestamp('2019-06-03 00:00:00'): 2744.45, Timestamp('2019-06-04 00:00:00'): 2803.27, Timestamp('2019-06-05 00:00:00'): 2826.15, Timestamp('2019-06-06 00:00:00'): 2843.49, Timestamp('2019-06-07 00:00:00'): 2873.34, Timestamp('2019-06-08 00:00:00'): 2873.34, Timestamp('2019-06-09 00:00:00'): 2873.34, Timestamp('2019-06-10 00:00:00'): 2886.73, Timestamp('2019-06-11 00:00:00'): 2885.72, Timestamp('2019-06-12 00:00:00'): 2879.84, Timestamp('2019-06-13 00:00:00'): 2891.64, Timestamp('2019-06-14 00:00:00'): 2886.98, Timestamp('2019-06-15 00:00:00'): 2886.98, Timestamp('2019-06-16 00:00:00'): 2886.98, Timestamp('2019-06-17 00:00:00'): 2889.67, Timestamp('2019-06-18 00:00:00'): 2917.75, Timestamp('2019-06-19 00:00:00'): 2926.46, Timestamp('2019-06-20 00:00:00'): 2954.18, Timestamp('2019-06-21 00:00:00'): 2950.46, Timestamp('2019-06-22 00:00:00'): 2950.46, Timestamp('2019-06-23 00:00:00'): 2950.46, Timestamp('2019-06-24 00:00:00'): 2945.35, Timestamp('2019-06-25 00:00:00'): 2917.38, Timestamp('2019-06-26 00:00:00'): 2913.78, Timestamp('2019-06-27 00:00:00'): 2924.92, Timestamp('2019-06-28 00:00:00'): 2941.76, Timestamp('2019-06-29 00:00:00'): 2941.76, Timestamp('2019-06-30 00:00:00'): 2941.76, Timestamp('2019-07-01 00:00:00'): 2964.33, Timestamp('2019-07-02 00:00:00'): 2973.01, Timestamp('2019-07-03 00:00:00'): 2995.82, Timestamp('2019-07-04 00:00:00'): nan, Timestamp('2019-07-05 00:00:00'): 2990.41, Timestamp('2019-07-06 00:00:00'): 2990.41, Timestamp('2019-07-07 00:00:00'): 2990.41, Timestamp('2019-07-08 00:00:00'): 2975.95, Timestamp('2019-07-09 00:00:00'): 2979.63, Timestamp('2019-07-10 00:00:00'): 2993.07, Timestamp('2019-07-11 00:00:00'): 2999.91, Timestamp('2019-07-12 00:00:00'): 3013.77, Timestamp('2019-07-13 00:00:00'): 3013.77, Timestamp('2019-07-14 00:00:00'): 3013.77, Timestamp('2019-07-15 00:00:00'): 3014.3, Timestamp('2019-07-16 00:00:00'): 3004.04, Timestamp('2019-07-17 00:00:00'): 2984.42, Timestamp('2019-07-18 00:00:00'): 2995.11, Timestamp('2019-07-19 00:00:00'): 2976.61, Timestamp('2019-07-20 00:00:00'): 2976.61, Timestamp('2019-07-21 00:00:00'): 2976.61, Timestamp('2019-07-22 00:00:00'): 2985.03, Timestamp('2019-07-23 00:00:00'): 3005.47, Timestamp('2019-07-24 00:00:00'): 3019.56, Timestamp('2019-07-25 00:00:00'): 3003.67, Timestamp('2019-07-26 00:00:00'): 3025.86, Timestamp('2019-07-27 00:00:00'): 3025.86, Timestamp('2019-07-28 00:00:00'): 3025.86, Timestamp('2019-07-29 00:00:00'): 3020.97, Timestamp('2019-07-30 00:00:00'): 3013.18, Timestamp('2019-07-31 00:00:00'): 2980.38, Timestamp('2019-08-01 00:00:00'): 2953.56, Timestamp('2019-08-02 00:00:00'): 2932.05, Timestamp('2019-08-03 00:00:00'): 2932.05, Timestamp('2019-08-04 00:00:00'): 2932.05, Timestamp('2019-08-05 00:00:00'): 2844.74, Timestamp('2019-08-06 00:00:00'): 2881.77, Timestamp('2019-08-07 00:00:00'): 2883.98, Timestamp('2019-08-08 00:00:00'): 2938.09, Timestamp('2019-08-09 00:00:00'): 2918.65, Timestamp('2019-08-10 00:00:00'): 2918.65, Timestamp('2019-08-11 00:00:00'): 2918.65, Timestamp('2019-08-12 00:00:00'): 2883.75, Timestamp('2019-08-13 00:00:00'): 2926.32, Timestamp('2019-08-14 00:00:00'): 2840.6, Timestamp('2019-08-15 00:00:00'): 2847.6, Timestamp('2019-08-16 00:00:00'): 2888.68, Timestamp('2019-08-17 00:00:00'): 2888.68, Timestamp('2019-08-18 00:00:00'): 2888.68, Timestamp('2019-08-19 00:00:00'): 2923.65, Timestamp('2019-08-20 00:00:00'): 2900.51, Timestamp('2019-08-21 00:00:00'): 2924.43, Timestamp('2019-08-22 00:00:00'): 2922.95, Timestamp('2019-08-23 00:00:00'): 2847.11, Timestamp('2019-08-24 00:00:00'): 2847.11, Timestamp('2019-08-25 00:00:00'): 2847.11, Timestamp('2019-08-26 00:00:00'): 2878.38, Timestamp('2019-08-27 00:00:00'): 2869.16, Timestamp('2019-08-28 00:00:00'): 2887.94, Timestamp('2019-08-29 00:00:00'): 2924.58, Timestamp('2019-08-30 00:00:00'): 2926.46, Timestamp('2019-08-31 00:00:00'): 2926.46, Timestamp('2019-09-01 00:00:00'): 2926.46, Timestamp('2019-09-02 00:00:00'): nan, Timestamp('2019-09-03 00:00:00'): 2906.27, Timestamp('2019-09-04 00:00:00'): 2937.78, Timestamp('2019-09-05 00:00:00'): 2976.0, Timestamp('2019-09-06 00:00:00'): 2978.71, Timestamp('2019-09-07 00:00:00'): 2978.71, Timestamp('2019-09-08 00:00:00'): 2978.71, Timestamp('2019-09-09 00:00:00'): 2978.43, Timestamp('2019-09-10 00:00:00'): 2979.39, Timestamp('2019-09-11 00:00:00'): 3000.93, Timestamp('2019-09-12 00:00:00'): 3009.57, Timestamp('2019-09-13 00:00:00'): 3007.39, Timestamp('2019-09-14 00:00:00'): 3007.39, Timestamp('2019-09-15 00:00:00'): 3007.39, Timestamp('2019-09-16 00:00:00'): 2997.96, Timestamp('2019-09-17 00:00:00'): 3005.7, Timestamp('2019-09-18 00:00:00'): 3006.73, Timestamp('2019-09-19 00:00:00'): 3006.79, Timestamp('2019-09-20 00:00:00'): 2992.07, Timestamp('2019-09-21 00:00:00'): 2992.07, Timestamp('2019-09-22 00:00:00'): 2992.07, Timestamp('2019-09-23 00:00:00'): 2991.78, Timestamp('2019-09-24 00:00:00'): 2966.6, Timestamp('2019-09-25 00:00:00'): 2984.87, Timestamp('2019-09-26 00:00:00'): 2977.62, Timestamp('2019-09-27 00:00:00'): 2961.79, Timestamp('2019-09-28 00:00:00'): 2961.79, Timestamp('2019-09-29 00:00:00'): 2961.79, Timestamp('2019-09-30 00:00:00'): 2976.74, Timestamp('2019-10-01 00:00:00'): 2940.25, Timestamp('2019-10-02 00:00:00'): 2887.61, Timestamp('2019-10-03 00:00:00'): 2910.63, Timestamp('2019-10-04 00:00:00'): 2952.01, Timestamp('2019-10-05 00:00:00'): 2952.01, Timestamp('2019-10-06 00:00:00'): 2952.01, Timestamp('2019-10-07 00:00:00'): 2938.79, Timestamp('2019-10-08 00:00:00'): 2893.06, Timestamp('2019-10-09 00:00:00'): 2919.4, Timestamp('2019-10-10 00:00:00'): 2938.13, Timestamp('2019-10-11 00:00:00'): 2970.27, Timestamp('2019-10-12 00:00:00'): 2970.27, Timestamp('2019-10-13 00:00:00'): 2970.27, Timestamp('2019-10-14 00:00:00'): 2966.15, Timestamp('2019-10-15 00:00:00'): 2995.68, Timestamp('2019-10-16 00:00:00'): 2989.69, Timestamp('2019-10-17 00:00:00'): 2997.95, Timestamp('2019-10-18 00:00:00'): 2986.2, Timestamp('2019-10-19 00:00:00'): 2986.2, Timestamp('2019-10-20 00:00:00'): 2986.2, Timestamp('2019-10-21 00:00:00'): 3006.72, Timestamp('2019-10-22 00:00:00'): 2995.99, Timestamp('2019-10-23 00:00:00'): 3004.52, Timestamp('2019-10-24 00:00:00'): 3010.29, Timestamp('2019-10-25 00:00:00'): 3022.55, Timestamp('2019-10-26 00:00:00'): 3022.55, Timestamp('2019-10-27 00:00:00'): 3022.55, Timestamp('2019-10-28 00:00:00'): 3039.42, Timestamp('2019-10-29 00:00:00'): 3036.89, Timestamp('2019-10-30 00:00:00'): 3046.77, Timestamp('2019-10-31 00:00:00'): 3037.56, Timestamp('2019-11-01 00:00:00'): 3066.91, Timestamp('2019-11-02 00:00:00'): 3066.91, Timestamp('2019-11-03 00:00:00'): 3066.91, Timestamp('2019-11-04 00:00:00'): 3078.27, Timestamp('2019-11-05 00:00:00'): 3074.62, Timestamp('2019-11-06 00:00:00'): 3076.78, Timestamp('2019-11-07 00:00:00'): 3085.18, Timestamp('2019-11-08 00:00:00'): 3093.08, Timestamp('2019-11-09 00:00:00'): 3093.08, Timestamp('2019-11-10 00:00:00'): 3093.08, Timestamp('2019-11-11 00:00:00'): 3087.01, Timestamp('2019-11-12 00:00:00'): 3091.84, Timestamp('2019-11-13 00:00:00'): 3094.04, Timestamp('2019-11-14 00:00:00'): 3096.63, Timestamp('2019-11-15 00:00:00'): 3120.46, Timestamp('2019-11-16 00:00:00'): 3120.46, Timestamp('2019-11-17 00:00:00'): 3120.46, Timestamp('2019-11-18 00:00:00'): 3122.03, Timestamp('2019-11-19 00:00:00'): 3120.18, Timestamp('2019-11-20 00:00:00'): 3108.46, Timestamp('2019-11-21 00:00:00'): 3103.54, Timestamp('2019-11-22 00:00:00'): 3110.29, Timestamp('2019-11-23 00:00:00'): 3110.29, Timestamp('2019-11-24 00:00:00'): 3110.29, Timestamp('2019-11-25 00:00:00'): 3133.64, Timestamp('2019-11-26 00:00:00'): 3140.52, Timestamp('2019-11-27 00:00:00'): 3153.63, Timestamp('2019-11-28 00:00:00'): nan, Timestamp('2019-11-29 00:00:00'): 3140.98, Timestamp('2019-11-30 00:00:00'): 3140.98, Timestamp('2019-12-01 00:00:00'): 3140.98, Timestamp('2019-12-02 00:00:00'): 3113.87, Timestamp('2019-12-03 00:00:00'): 3093.2, Timestamp('2019-12-04 00:00:00'): 3112.76, Timestamp('2019-12-05 00:00:00'): 3117.43, Timestamp('2019-12-06 00:00:00'): 3145.91, Timestamp('2019-12-07 00:00:00'): 3145.91, Timestamp('2019-12-08 00:00:00'): 3145.91, Timestamp('2019-12-09 00:00:00'): 3135.96, Timestamp('2019-12-10 00:00:00'): 3132.52, Timestamp('2019-12-11 00:00:00'): 3141.63, Timestamp('2019-12-12 00:00:00'): 3168.57, Timestamp('2019-12-13 00:00:00'): 3168.8, Timestamp('2019-12-14 00:00:00'): 3168.8, Timestamp('2019-12-15 00:00:00'): 3168.8, Timestamp('2019-12-16 00:00:00'): 3191.45, Timestamp('2019-12-17 00:00:00'): 3192.52, Timestamp('2019-12-18 00:00:00'): 3191.14, Timestamp('2019-12-19 00:00:00'): 3205.37, Timestamp('2019-12-20 00:00:00'): 3221.22, Timestamp('2019-12-21 00:00:00'): 3221.22, Timestamp('2019-12-22 00:00:00'): 3221.22, Timestamp('2019-12-23 00:00:00'): 3224.01, Timestamp('2019-12-24 00:00:00'): 3223.38, Timestamp('2019-12-25 00:00:00'): nan, Timestamp('2019-12-26 00:00:00'): 3239.91, Timestamp('2019-12-27 00:00:00'): 3240.02, Timestamp('2019-12-28 00:00:00'): 3240.02, Timestamp('2019-12-29 00:00:00'): 3240.02, Timestamp('2019-12-30 00:00:00'): 3221.29, Timestamp('2019-12-31 00:00:00'): 3230.78, Timestamp('2020-01-01 00:00:00'): 3230.78, Timestamp('2020-01-02 00:00:00'): 3257.85, Timestamp('2020-01-03 00:00:00'): 3234.85, Timestamp('2020-01-04 00:00:00'): 3234.85, Timestamp('2020-01-05 00:00:00'): 3234.85, Timestamp('2020-01-06 00:00:00'): 3246.28, Timestamp('2020-01-07 00:00:00'): 3237.18, Timestamp('2020-01-08 00:00:00'): 3253.05, Timestamp('2020-01-09 00:00:00'): 3274.7, Timestamp('2020-01-10 00:00:00'): 3265.35, Timestamp('2020-01-11 00:00:00'): 3265.35, Timestamp('2020-01-12 00:00:00'): 3265.35, Timestamp('2020-01-13 00:00:00'): 3288.13, Timestamp('2020-01-14 00:00:00'): 3283.15, Timestamp('2020-01-15 00:00:00'): 3289.29, Timestamp('2020-01-16 00:00:00'): 3316.81, Timestamp('2020-01-17 00:00:00'): 3329.62, Timestamp('2020-01-18 00:00:00'): 3329.62, Timestamp('2020-01-19 00:00:00'): 3329.62, Timestamp('2020-01-20 00:00:00'): nan, Timestamp('2020-01-21 00:00:00'): 3320.79, Timestamp('2020-01-22 00:00:00'): 3321.75, Timestamp('2020-01-23 00:00:00'): 3325.54, Timestamp('2020-01-24 00:00:00'): 3295.47, Timestamp('2020-01-25 00:00:00'): 3295.47, Timestamp('2020-01-26 00:00:00'): 3295.47, Timestamp('2020-01-27 00:00:00'): 3243.63, Timestamp('2020-01-28 00:00:00'): 3276.24, Timestamp('2020-01-29 00:00:00'): 3273.4, Timestamp('2020-01-30 00:00:00'): 3283.66, Timestamp('2020-01-31 00:00:00'): 3225.52, Timestamp('2020-02-01 00:00:00'): 3225.52, Timestamp('2020-02-02 00:00:00'): 3225.52, Timestamp('2020-02-03 00:00:00'): 3248.92, Timestamp('2020-02-04 00:00:00'): 3297.59, Timestamp('2020-02-05 00:00:00'): 3334.69, Timestamp('2020-02-06 00:00:00'): 3345.78, Timestamp('2020-02-07 00:00:00'): 3327.71, Timestamp('2020-02-08 00:00:00'): 3327.71, Timestamp('2020-02-09 00:00:00'): 3327.71, Timestamp('2020-02-10 00:00:00'): 3352.09, Timestamp('2020-02-11 00:00:00'): 3357.75, Timestamp('2020-02-12 00:00:00'): 3379.45, Timestamp('2020-02-13 00:00:00'): 3373.94, Timestamp('2020-02-14 00:00:00'): 3380.16, Timestamp('2020-02-15 00:00:00'): 3380.16, Timestamp('2020-02-16 00:00:00'): 3380.16, Timestamp('2020-02-17 00:00:00'): nan, Timestamp('2020-02-18 00:00:00'): 3370.29, Timestamp('2020-02-19 00:00:00'): 3386.15, Timestamp('2020-02-20 00:00:00'): 3373.23, Timestamp('2020-02-21 00:00:00'): 3337.75, Timestamp('2020-02-22 00:00:00'): 3337.75, Timestamp('2020-02-23 00:00:00'): 3337.75, Timestamp('2020-02-24 00:00:00'): 3225.89, Timestamp('2020-02-25 00:00:00'): 3128.21, Timestamp('2020-02-26 00:00:00'): 3116.39, Timestamp('2020-02-27 00:00:00'): 2978.76, Timestamp('2020-02-28 00:00:00'): 2954.22, Timestamp('2020-02-29 00:00:00'): 2954.22, Timestamp('2020-03-01 00:00:00'): 2954.22, Timestamp('2020-03-02 00:00:00'): 3090.23, Timestamp('2020-03-03 00:00:00'): 3003.37, Timestamp('2020-03-04 00:00:00'): 3130.12, Timestamp('2020-03-05 00:00:00'): 3023.94, Timestamp('2020-03-06 00:00:00'): 2972.37, Timestamp('2020-03-07 00:00:00'): 2972.37, Timestamp('2020-03-08 00:00:00'): 2972.37, Timestamp('2020-03-09 00:00:00'): 2746.56, Timestamp('2020-03-10 00:00:00'): 2882.23, Timestamp('2020-03-11 00:00:00'): 2741.38, Timestamp('2020-03-12 00:00:00'): 2480.64, Timestamp('2020-03-13 00:00:00'): 2711.02, Timestamp('2020-03-14 00:00:00'): 2711.02, Timestamp('2020-03-15 00:00:00'): 2711.02, Timestamp('2020-03-16 00:00:00'): 2386.13, Timestamp('2020-03-17 00:00:00'): 2529.19, Timestamp('2020-03-18 00:00:00'): 2398.1, Timestamp('2020-03-19 00:00:00'): 2409.39, Timestamp('2020-03-20 00:00:00'): 2304.92, Timestamp('2020-03-21 00:00:00'): 2304.92, Timestamp('2020-03-22 00:00:00'): 2304.92, Timestamp('2020-03-23 00:00:00'): 2237.4, Timestamp('2020-03-24 00:00:00'): 2447.33, Timestamp('2020-03-25 00:00:00'): 2475.56, Timestamp('2020-03-26 00:00:00'): 2630.07, Timestamp('2020-03-27 00:00:00'): 2541.47, Timestamp('2020-03-28 00:00:00'): 2541.47, Timestamp('2020-03-29 00:00:00'): 2541.47, Timestamp('2020-03-30 00:00:00'): 2626.65, Timestamp('2020-03-31 00:00:00'): 2584.59, Timestamp('2020-04-01 00:00:00'): 2470.5, Timestamp('2020-04-02 00:00:00'): 2526.9, Timestamp('2020-04-03 00:00:00'): 2488.65, Timestamp('2020-04-04 00:00:00'): 2488.65, Timestamp('2020-04-05 00:00:00'): 2488.65, Timestamp('2020-04-06 00:00:00'): 2663.68, Timestamp('2020-04-07 00:00:00'): 2659.41, Timestamp('2020-04-08 00:00:00'): 2749.98, Timestamp('2020-04-09 00:00:00'): 2789.82, Timestamp('2020-04-10 00:00:00'): nan, Timestamp('2020-04-11 00:00:00'): nan, Timestamp('2020-04-12 00:00:00'): nan, Timestamp('2020-04-13 00:00:00'): 2761.63, Timestamp('2020-04-14 00:00:00'): 2846.06, Timestamp('2020-04-15 00:00:00'): 2783.36, Timestamp('2020-04-16 00:00:00'): 2799.55, Timestamp('2020-04-17 00:00:00'): 2874.56, Timestamp('2020-04-18 00:00:00'): 2874.56, Timestamp('2020-04-19 00:00:00'): 2874.56, Timestamp('2020-04-20 00:00:00'): 2823.16, Timestamp('2020-04-21 00:00:00'): 2736.56, Timestamp('2020-04-22 00:00:00'): 2799.31, Timestamp('2020-04-23 00:00:00'): 2797.8, Timestamp('2020-04-24 00:00:00'): 2836.74, Timestamp('2020-04-25 00:00:00'): 2836.74, Timestamp('2020-04-26 00:00:00'): 2836.74, Timestamp('2020-04-27 00:00:00'): 2878.48, Timestamp('2020-04-28 00:00:00'): 2863.39, Timestamp('2020-04-29 00:00:00'): 2939.51, Timestamp('2020-04-30 00:00:00'): 2912.43, Timestamp('2020-05-01 00:00:00'): 2830.71, Timestamp('2020-05-02 00:00:00'): 2830.71, Timestamp('2020-05-03 00:00:00'): 2830.71, Timestamp('2020-05-04 00:00:00'): 2842.74, Timestamp('2020-05-05 00:00:00'): 2868.44, Timestamp('2020-05-06 00:00:00'): 2848.42, Timestamp('2020-05-07 00:00:00'): 2881.19, Timestamp('2020-05-08 00:00:00'): 2929.8, Timestamp('2020-05-09 00:00:00'): 2929.8, Timestamp('2020-05-10 00:00:00'): 2929.8, Timestamp('2020-05-11 00:00:00'): 2930.32, Timestamp('2020-05-12 00:00:00'): 2870.12, Timestamp('2020-05-13 00:00:00'): 2820.0, Timestamp('2020-05-14 00:00:00'): 2852.5}\n", + "Our model generates 1.0 over testing period\n", + "While S&P500 as benchmark generated 1.1378822027644255 over testing period\n" + ] + } + ], "source": [ "def get_share_price(symbol, date):\n", " stock_df = pd.read_csv(os.path.join('/content/stock_data/', symbol))\n", @@ -1964,36 +1984,16 @@ "\n", "print(\"Our model generates \", final_portfolio_return, \"over testing period\")\n", "print(\"While S&P500 as benchmark generated \", benchmark_return, \"over testing period\")\n" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "wNsspfvSQAis", - "outputId": "fcda117c-9fcd-43c2-e9c8-dd3158b78c22" - }, - "execution_count": 256, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "{Timestamp('2018-12-31 00:00:00'): 1000000, Timestamp('2019-01-01 00:00:00'): 1000000.0, Timestamp('2019-01-02 00:00:00'): 1000000.0, Timestamp('2019-01-03 00:00:00'): 1000000.0, Timestamp('2019-01-04 00:00:00'): 1000000.0, Timestamp('2019-01-05 00:00:00'): 1000000.0, Timestamp('2019-01-06 00:00:00'): 1000000.0, Timestamp('2019-01-07 00:00:00'): 1000000.0, Timestamp('2019-01-08 00:00:00'): 1000000.0, Timestamp('2019-01-09 00:00:00'): 1000000.0, Timestamp('2019-01-10 00:00:00'): 1000000.0, Timestamp('2019-01-11 00:00:00'): 1000000.0, Timestamp('2019-01-12 00:00:00'): 1000000.0, Timestamp('2019-01-13 00:00:00'): 1000000.0, Timestamp('2019-01-14 00:00:00'): 1000000.0, Timestamp('2019-01-15 00:00:00'): 1000000.0, Timestamp('2019-01-16 00:00:00'): 1000000.0, Timestamp('2019-01-17 00:00:00'): 1000000.0, Timestamp('2019-01-18 00:00:00'): 1000000.0, Timestamp('2019-01-19 00:00:00'): 1000000.0, Timestamp('2019-01-20 00:00:00'): 1000000.0, Timestamp('2019-01-21 00:00:00'): 1000000.0, Timestamp('2019-01-22 00:00:00'): 1000000.0, Timestamp('2019-01-23 00:00:00'): 1000000.0, Timestamp('2019-01-24 00:00:00'): 1000000.0, Timestamp('2019-01-25 00:00:00'): 1000000.0, Timestamp('2019-01-26 00:00:00'): 1000000.0, Timestamp('2019-01-27 00:00:00'): 1000000.0, Timestamp('2019-01-28 00:00:00'): 1000000.0, Timestamp('2019-01-29 00:00:00'): 1000000.0, Timestamp('2019-01-30 00:00:00'): 1000000.0, Timestamp('2019-01-31 00:00:00'): 1000000.0, Timestamp('2019-02-01 00:00:00'): 1000000.0, Timestamp('2019-02-02 00:00:00'): 1000000.0, Timestamp('2019-02-03 00:00:00'): 1000000.0, Timestamp('2019-02-04 00:00:00'): 1000000.0, Timestamp('2019-02-05 00:00:00'): 1000000.0, Timestamp('2019-02-06 00:00:00'): 1000000.0, Timestamp('2019-02-07 00:00:00'): 1000000.0, Timestamp('2019-02-08 00:00:00'): 1000000.0, Timestamp('2019-02-09 00:00:00'): 1000000.0, Timestamp('2019-02-10 00:00:00'): 1000000.0, Timestamp('2019-02-11 00:00:00'): 1000000.0, Timestamp('2019-02-12 00:00:00'): 1000000.0, Timestamp('2019-02-13 00:00:00'): 1000000.0, Timestamp('2019-02-14 00:00:00'): 1000000.0, Timestamp('2019-02-15 00:00:00'): 1000000.0, Timestamp('2019-02-16 00:00:00'): 1000000.0, Timestamp('2019-02-17 00:00:00'): 1000000.0, Timestamp('2019-02-18 00:00:00'): 1000000.0, Timestamp('2019-02-19 00:00:00'): 1000000.0, Timestamp('2019-02-20 00:00:00'): 1000000.0, Timestamp('2019-02-21 00:00:00'): 1000000.0, Timestamp('2019-02-22 00:00:00'): 1000000.0, Timestamp('2019-02-23 00:00:00'): 1000000.0, Timestamp('2019-02-24 00:00:00'): 1000000.0, Timestamp('2019-02-25 00:00:00'): 1000000.0, Timestamp('2019-02-26 00:00:00'): 1000000.0, Timestamp('2019-02-27 00:00:00'): 1000000.0, Timestamp('2019-02-28 00:00:00'): 1000000.0, Timestamp('2019-03-01 00:00:00'): 1000000.0, Timestamp('2019-03-02 00:00:00'): 1000000.0, Timestamp('2019-03-03 00:00:00'): 1000000.0, Timestamp('2019-03-04 00:00:00'): 1000000.0, Timestamp('2019-03-05 00:00:00'): 1000000.0, Timestamp('2019-03-06 00:00:00'): 1000000.0, Timestamp('2019-03-07 00:00:00'): 1000000.0, Timestamp('2019-03-08 00:00:00'): 1000000.0, Timestamp('2019-03-09 00:00:00'): 1000000.0, Timestamp('2019-03-10 00:00:00'): 1000000.0, Timestamp('2019-03-11 00:00:00'): 1000000.0, Timestamp('2019-03-12 00:00:00'): 1000000.0, Timestamp('2019-03-13 00:00:00'): 1000000.0, Timestamp('2019-03-14 00:00:00'): 1000000.0, Timestamp('2019-03-15 00:00:00'): 1000000.0, Timestamp('2019-03-16 00:00:00'): 1000000.0, Timestamp('2019-03-17 00:00:00'): 1000000.0, Timestamp('2019-03-18 00:00:00'): 1000000.0, Timestamp('2019-03-19 00:00:00'): 1000000.0, Timestamp('2019-03-20 00:00:00'): 1000000.0, Timestamp('2019-03-21 00:00:00'): 1000000.0, Timestamp('2019-03-22 00:00:00'): 1000000.0, Timestamp('2019-03-23 00:00:00'): 1000000.0, Timestamp('2019-03-24 00:00:00'): 1000000.0, Timestamp('2019-03-25 00:00:00'): 1000000.0, Timestamp('2019-03-26 00:00:00'): 1000000.0, Timestamp('2019-03-27 00:00:00'): 1000000.0, Timestamp('2019-03-28 00:00:00'): 1000000.0, Timestamp('2019-03-29 00:00:00'): 1000000.0, Timestamp('2019-03-30 00:00:00'): 1000000.0, Timestamp('2019-03-31 00:00:00'): 1000000.0, Timestamp('2019-04-01 00:00:00'): 1000000.0, Timestamp('2019-04-02 00:00:00'): 1000000.0, Timestamp('2019-04-03 00:00:00'): 1000000.0, Timestamp('2019-04-04 00:00:00'): 1000000.0, Timestamp('2019-04-05 00:00:00'): 1000000.0, Timestamp('2019-04-06 00:00:00'): 1000000.0, Timestamp('2019-04-07 00:00:00'): 1000000.0, Timestamp('2019-04-08 00:00:00'): 1000000.0, Timestamp('2019-04-09 00:00:00'): 1000000.0, Timestamp('2019-04-10 00:00:00'): 1000000.0, Timestamp('2019-04-11 00:00:00'): 1000000.0, Timestamp('2019-04-12 00:00:00'): 1000000.0, Timestamp('2019-04-13 00:00:00'): 1000000.0, Timestamp('2019-04-14 00:00:00'): 1000000.0, Timestamp('2019-04-15 00:00:00'): 1000000.0, Timestamp('2019-04-16 00:00:00'): 1000000.0, Timestamp('2019-04-17 00:00:00'): 1000000.0, Timestamp('2019-04-18 00:00:00'): 1000000.0, Timestamp('2019-04-19 00:00:00'): 1000000.0, Timestamp('2019-04-20 00:00:00'): 1000000.0, Timestamp('2019-04-21 00:00:00'): 1000000.0, Timestamp('2019-04-22 00:00:00'): 1000000.0, Timestamp('2019-04-23 00:00:00'): 1000000.0, Timestamp('2019-04-24 00:00:00'): 1000000.0, Timestamp('2019-04-25 00:00:00'): 1000000.0, Timestamp('2019-04-26 00:00:00'): 1000000.0, Timestamp('2019-04-27 00:00:00'): 1000000.0, Timestamp('2019-04-28 00:00:00'): 1000000.0, Timestamp('2019-04-29 00:00:00'): 1000000.0, Timestamp('2019-04-30 00:00:00'): 1000000.0, Timestamp('2019-05-01 00:00:00'): 1000000.0, Timestamp('2019-05-02 00:00:00'): 1000000.0, Timestamp('2019-05-03 00:00:00'): 1000000.0, Timestamp('2019-05-04 00:00:00'): 1000000.0, Timestamp('2019-05-05 00:00:00'): 1000000.0, Timestamp('2019-05-06 00:00:00'): 1000000.0, Timestamp('2019-05-07 00:00:00'): 1000000.0, Timestamp('2019-05-08 00:00:00'): 1000000.0, Timestamp('2019-05-09 00:00:00'): 1000000.0, Timestamp('2019-05-10 00:00:00'): 1000000.0, Timestamp('2019-05-11 00:00:00'): 1000000.0, Timestamp('2019-05-12 00:00:00'): 1000000.0, Timestamp('2019-05-13 00:00:00'): 1000000.0, Timestamp('2019-05-14 00:00:00'): 1000000.0, Timestamp('2019-05-15 00:00:00'): 1000000.0, Timestamp('2019-05-16 00:00:00'): 1000000.0, Timestamp('2019-05-17 00:00:00'): 1000000.0, Timestamp('2019-05-18 00:00:00'): 1000000.0, Timestamp('2019-05-19 00:00:00'): 1000000.0, Timestamp('2019-05-20 00:00:00'): 1000000.0, Timestamp('2019-05-21 00:00:00'): 1000000.0, Timestamp('2019-05-22 00:00:00'): 1000000.0, Timestamp('2019-05-23 00:00:00'): 1000000.0, Timestamp('2019-05-24 00:00:00'): 1000000.0, Timestamp('2019-05-25 00:00:00'): 1000000.0, Timestamp('2019-05-26 00:00:00'): 1000000.0, Timestamp('2019-05-27 00:00:00'): 1000000.0, Timestamp('2019-05-28 00:00:00'): 1000000.0, Timestamp('2019-05-29 00:00:00'): 1000000.0, Timestamp('2019-05-30 00:00:00'): 1000000.0, Timestamp('2019-05-31 00:00:00'): 1000000.0, Timestamp('2019-06-01 00:00:00'): 1000000.0, Timestamp('2019-06-02 00:00:00'): 1000000.0, Timestamp('2019-06-03 00:00:00'): 1000000.0, Timestamp('2019-06-04 00:00:00'): 1000000.0, Timestamp('2019-06-05 00:00:00'): 1000000.0, Timestamp('2019-06-06 00:00:00'): 1000000.0, Timestamp('2019-06-07 00:00:00'): 1000000.0, Timestamp('2019-06-08 00:00:00'): 1000000.0, Timestamp('2019-06-09 00:00:00'): 1000000.0, Timestamp('2019-06-10 00:00:00'): 1000000.0, Timestamp('2019-06-11 00:00:00'): 1000000.0, Timestamp('2019-06-12 00:00:00'): 1000000.0, Timestamp('2019-06-13 00:00:00'): 1000000.0, Timestamp('2019-06-14 00:00:00'): 1000000.0, Timestamp('2019-06-15 00:00:00'): 1000000.0, Timestamp('2019-06-16 00:00:00'): 1000000.0, Timestamp('2019-06-17 00:00:00'): 1000000.0, Timestamp('2019-06-18 00:00:00'): 1000000.0, Timestamp('2019-06-19 00:00:00'): 1000000.0, Timestamp('2019-06-20 00:00:00'): 1000000.0, Timestamp('2019-06-21 00:00:00'): 1000000.0, Timestamp('2019-06-22 00:00:00'): 1000000.0, Timestamp('2019-06-23 00:00:00'): 1000000.0, Timestamp('2019-06-24 00:00:00'): 1000000.0, Timestamp('2019-06-25 00:00:00'): 1000000.0, Timestamp('2019-06-26 00:00:00'): 1000000.0, Timestamp('2019-06-27 00:00:00'): 1000000.0, Timestamp('2019-06-28 00:00:00'): 1000000.0, Timestamp('2019-06-29 00:00:00'): 1000000.0, Timestamp('2019-06-30 00:00:00'): 1000000.0, Timestamp('2019-07-01 00:00:00'): 1000000.0, Timestamp('2019-07-02 00:00:00'): 1000000.0, Timestamp('2019-07-03 00:00:00'): 1000000.0, Timestamp('2019-07-04 00:00:00'): 1000000.0, Timestamp('2019-07-05 00:00:00'): 1000000.0, Timestamp('2019-07-06 00:00:00'): 1000000.0, Timestamp('2019-07-07 00:00:00'): 1000000.0, Timestamp('2019-07-08 00:00:00'): 1000000.0, Timestamp('2019-07-09 00:00:00'): 1000000.0, Timestamp('2019-07-10 00:00:00'): 1000000.0, Timestamp('2019-07-11 00:00:00'): 1000000.0, Timestamp('2019-07-12 00:00:00'): 1000000.0, Timestamp('2019-07-13 00:00:00'): 1000000.0, Timestamp('2019-07-14 00:00:00'): 1000000.0, Timestamp('2019-07-15 00:00:00'): 1000000.0, Timestamp('2019-07-16 00:00:00'): 1000000.0, Timestamp('2019-07-17 00:00:00'): 1000000.0, Timestamp('2019-07-18 00:00:00'): 1000000.0, Timestamp('2019-07-19 00:00:00'): 1000000.0, Timestamp('2019-07-20 00:00:00'): 1000000.0, Timestamp('2019-07-21 00:00:00'): 1000000.0, Timestamp('2019-07-22 00:00:00'): 1000000.0, Timestamp('2019-07-23 00:00:00'): 1000000.0, Timestamp('2019-07-24 00:00:00'): 1000000.0, Timestamp('2019-07-25 00:00:00'): 1000000.0, Timestamp('2019-07-26 00:00:00'): 1000000.0, Timestamp('2019-07-27 00:00:00'): 1000000.0, Timestamp('2019-07-28 00:00:00'): 1000000.0, Timestamp('2019-07-29 00:00:00'): 1000000.0, Timestamp('2019-07-30 00:00:00'): 1000000.0, Timestamp('2019-07-31 00:00:00'): 1000000.0, Timestamp('2019-08-01 00:00:00'): 1000000.0, Timestamp('2019-08-02 00:00:00'): 1000000.0, Timestamp('2019-08-03 00:00:00'): 1000000.0, Timestamp('2019-08-04 00:00:00'): 1000000.0, Timestamp('2019-08-05 00:00:00'): 1000000.0, Timestamp('2019-08-06 00:00:00'): 1000000.0, Timestamp('2019-08-07 00:00:00'): 1000000.0, Timestamp('2019-08-08 00:00:00'): 1000000.0, Timestamp('2019-08-09 00:00:00'): 1000000.0, Timestamp('2019-08-10 00:00:00'): 1000000.0, Timestamp('2019-08-11 00:00:00'): 1000000.0, Timestamp('2019-08-12 00:00:00'): 1000000.0, Timestamp('2019-08-13 00:00:00'): 1000000.0, Timestamp('2019-08-14 00:00:00'): 1000000.0, Timestamp('2019-08-15 00:00:00'): 1000000.0, Timestamp('2019-08-16 00:00:00'): 1000000.0, Timestamp('2019-08-17 00:00:00'): 1000000.0, Timestamp('2019-08-18 00:00:00'): 1000000.0, Timestamp('2019-08-19 00:00:00'): 1000000.0, Timestamp('2019-08-20 00:00:00'): 1000000.0, Timestamp('2019-08-21 00:00:00'): 1000000.0, Timestamp('2019-08-22 00:00:00'): 1000000.0, Timestamp('2019-08-23 00:00:00'): 1000000.0, Timestamp('2019-08-24 00:00:00'): 1000000.0, Timestamp('2019-08-25 00:00:00'): 1000000.0, Timestamp('2019-08-26 00:00:00'): 1000000.0, Timestamp('2019-08-27 00:00:00'): 1000000.0, Timestamp('2019-08-28 00:00:00'): 1000000.0, Timestamp('2019-08-29 00:00:00'): 1000000.0, Timestamp('2019-08-30 00:00:00'): 1000000.0, Timestamp('2019-08-31 00:00:00'): 1000000.0, Timestamp('2019-09-01 00:00:00'): 1000000.0, Timestamp('2019-09-02 00:00:00'): 1000000.0, Timestamp('2019-09-03 00:00:00'): 1000000.0, Timestamp('2019-09-04 00:00:00'): 1000000.0, Timestamp('2019-09-05 00:00:00'): 1000000.0, Timestamp('2019-09-06 00:00:00'): 1000000.0, Timestamp('2019-09-07 00:00:00'): 1000000.0, Timestamp('2019-09-08 00:00:00'): 1000000.0, Timestamp('2019-09-09 00:00:00'): 1000000.0, Timestamp('2019-09-10 00:00:00'): 1000000.0, Timestamp('2019-09-11 00:00:00'): 1000000.0, Timestamp('2019-09-12 00:00:00'): 1000000.0, Timestamp('2019-09-13 00:00:00'): 1000000.0, Timestamp('2019-09-14 00:00:00'): 1000000.0, Timestamp('2019-09-15 00:00:00'): 1000000.0, Timestamp('2019-09-16 00:00:00'): 1000000.0, Timestamp('2019-09-17 00:00:00'): 1000000.0, Timestamp('2019-09-18 00:00:00'): 1000000.0, Timestamp('2019-09-19 00:00:00'): 1000000.0, Timestamp('2019-09-20 00:00:00'): 1000000.0, Timestamp('2019-09-21 00:00:00'): 1000000.0, Timestamp('2019-09-22 00:00:00'): 1000000.0, Timestamp('2019-09-23 00:00:00'): 1000000.0, Timestamp('2019-09-24 00:00:00'): 1000000.0, Timestamp('2019-09-25 00:00:00'): 1000000.0, Timestamp('2019-09-26 00:00:00'): 1000000.0, Timestamp('2019-09-27 00:00:00'): 1000000.0, Timestamp('2019-09-28 00:00:00'): 1000000.0, Timestamp('2019-09-29 00:00:00'): 1000000.0, Timestamp('2019-09-30 00:00:00'): 1000000.0, Timestamp('2019-10-01 00:00:00'): 1000000.0, Timestamp('2019-10-02 00:00:00'): 1000000.0, Timestamp('2019-10-03 00:00:00'): 1000000.0, Timestamp('2019-10-04 00:00:00'): 1000000.0, Timestamp('2019-10-05 00:00:00'): 1000000.0, Timestamp('2019-10-06 00:00:00'): 1000000.0, Timestamp('2019-10-07 00:00:00'): 1000000.0, Timestamp('2019-10-08 00:00:00'): 1000000.0, Timestamp('2019-10-09 00:00:00'): 1000000.0, Timestamp('2019-10-10 00:00:00'): 1000000.0, Timestamp('2019-10-11 00:00:00'): 1000000.0, Timestamp('2019-10-12 00:00:00'): 1000000.0, Timestamp('2019-10-13 00:00:00'): 1000000.0, Timestamp('2019-10-14 00:00:00'): 1000000.0, Timestamp('2019-10-15 00:00:00'): 1000000.0, Timestamp('2019-10-16 00:00:00'): 1000000.0, Timestamp('2019-10-17 00:00:00'): 1000000.0, Timestamp('2019-10-18 00:00:00'): 1000000.0, Timestamp('2019-10-19 00:00:00'): 1000000.0, Timestamp('2019-10-20 00:00:00'): 1000000.0, Timestamp('2019-10-21 00:00:00'): 1000000.0, Timestamp('2019-10-22 00:00:00'): 1000000.0, Timestamp('2019-10-23 00:00:00'): 1000000.0, Timestamp('2019-10-24 00:00:00'): 1000000.0, Timestamp('2019-10-25 00:00:00'): 1000000.0, Timestamp('2019-10-26 00:00:00'): 1000000.0, Timestamp('2019-10-27 00:00:00'): 1000000.0, Timestamp('2019-10-28 00:00:00'): 1000000.0, Timestamp('2019-10-29 00:00:00'): 1000000.0, Timestamp('2019-10-30 00:00:00'): 1000000.0, Timestamp('2019-10-31 00:00:00'): 1000000.0, Timestamp('2019-11-01 00:00:00'): 1000000.0, Timestamp('2019-11-02 00:00:00'): 1000000.0, Timestamp('2019-11-03 00:00:00'): 1000000.0, Timestamp('2019-11-04 00:00:00'): 1000000.0, Timestamp('2019-11-05 00:00:00'): 1000000.0, Timestamp('2019-11-06 00:00:00'): 1000000.0, Timestamp('2019-11-07 00:00:00'): 1000000.0, Timestamp('2019-11-08 00:00:00'): 1000000.0, Timestamp('2019-11-09 00:00:00'): 1000000.0, Timestamp('2019-11-10 00:00:00'): 1000000.0, Timestamp('2019-11-11 00:00:00'): 1000000.0, Timestamp('2019-11-12 00:00:00'): 1000000.0, Timestamp('2019-11-13 00:00:00'): 1000000.0, Timestamp('2019-11-14 00:00:00'): 1000000.0, Timestamp('2019-11-15 00:00:00'): 1000000.0, Timestamp('2019-11-16 00:00:00'): 1000000.0, Timestamp('2019-11-17 00:00:00'): 1000000.0, Timestamp('2019-11-18 00:00:00'): 1000000.0, Timestamp('2019-11-19 00:00:00'): 1000000.0, Timestamp('2019-11-20 00:00:00'): 1000000.0, Timestamp('2019-11-21 00:00:00'): 1000000.0, Timestamp('2019-11-22 00:00:00'): 1000000.0, Timestamp('2019-11-23 00:00:00'): 1000000.0, Timestamp('2019-11-24 00:00:00'): 1000000.0, Timestamp('2019-11-25 00:00:00'): 1000000.0, Timestamp('2019-11-26 00:00:00'): 1000000.0, Timestamp('2019-11-27 00:00:00'): 1000000.0, Timestamp('2019-11-28 00:00:00'): 1000000.0, Timestamp('2019-11-29 00:00:00'): 1000000.0, Timestamp('2019-11-30 00:00:00'): 1000000.0, Timestamp('2019-12-01 00:00:00'): 1000000.0, Timestamp('2019-12-02 00:00:00'): 1000000.0, Timestamp('2019-12-03 00:00:00'): 1000000.0, Timestamp('2019-12-04 00:00:00'): 1000000.0, Timestamp('2019-12-05 00:00:00'): 1000000.0, Timestamp('2019-12-06 00:00:00'): 1000000.0, Timestamp('2019-12-07 00:00:00'): 1000000.0, Timestamp('2019-12-08 00:00:00'): 1000000.0, Timestamp('2019-12-09 00:00:00'): 1000000.0, Timestamp('2019-12-10 00:00:00'): 1000000.0, Timestamp('2019-12-11 00:00:00'): 1000000.0, Timestamp('2019-12-12 00:00:00'): 1000000.0, Timestamp('2019-12-13 00:00:00'): 1000000.0, Timestamp('2019-12-14 00:00:00'): 1000000.0, Timestamp('2019-12-15 00:00:00'): 1000000.0, Timestamp('2019-12-16 00:00:00'): 1000000.0, Timestamp('2019-12-17 00:00:00'): 1000000.0, Timestamp('2019-12-18 00:00:00'): 1000000.0, Timestamp('2019-12-19 00:00:00'): 1000000.0, Timestamp('2019-12-20 00:00:00'): 1000000.0, Timestamp('2019-12-21 00:00:00'): 1000000.0, Timestamp('2019-12-22 00:00:00'): 1000000.0, Timestamp('2019-12-23 00:00:00'): 1000000.0, Timestamp('2019-12-24 00:00:00'): 1000000.0, Timestamp('2019-12-25 00:00:00'): 1000000.0, Timestamp('2019-12-26 00:00:00'): 1000000.0, Timestamp('2019-12-27 00:00:00'): 1000000.0, Timestamp('2019-12-28 00:00:00'): 1000000.0, Timestamp('2019-12-29 00:00:00'): 1000000.0, Timestamp('2019-12-30 00:00:00'): 1000000.0, Timestamp('2019-12-31 00:00:00'): 1000000.0, Timestamp('2020-01-01 00:00:00'): 1000000.0, Timestamp('2020-01-02 00:00:00'): 1000000.0, Timestamp('2020-01-03 00:00:00'): 1000000.0, Timestamp('2020-01-04 00:00:00'): 1000000.0, Timestamp('2020-01-05 00:00:00'): 1000000.0, Timestamp('2020-01-06 00:00:00'): 1000000.0, Timestamp('2020-01-07 00:00:00'): 1000000.0, Timestamp('2020-01-08 00:00:00'): 1000000.0, Timestamp('2020-01-09 00:00:00'): 1000000.0, Timestamp('2020-01-10 00:00:00'): 1000000.0, Timestamp('2020-01-11 00:00:00'): 1000000.0, Timestamp('2020-01-12 00:00:00'): 1000000.0, Timestamp('2020-01-13 00:00:00'): 1000000.0, Timestamp('2020-01-14 00:00:00'): 1000000.0, Timestamp('2020-01-15 00:00:00'): 1000000.0, Timestamp('2020-01-16 00:00:00'): 1000000.0, Timestamp('2020-01-17 00:00:00'): 1000000.0, Timestamp('2020-01-18 00:00:00'): 1000000.0, Timestamp('2020-01-19 00:00:00'): 1000000.0, Timestamp('2020-01-20 00:00:00'): 1000000.0, Timestamp('2020-01-21 00:00:00'): 1000000.0, Timestamp('2020-01-22 00:00:00'): 1000000.0, Timestamp('2020-01-23 00:00:00'): 1000000.0, Timestamp('2020-01-24 00:00:00'): 1000000.0, Timestamp('2020-01-25 00:00:00'): 1000000.0, Timestamp('2020-01-26 00:00:00'): 1000000.0, Timestamp('2020-01-27 00:00:00'): 1000000.0, Timestamp('2020-01-28 00:00:00'): 1000000.0, Timestamp('2020-01-29 00:00:00'): 1000000.0, Timestamp('2020-01-30 00:00:00'): 1000000.0, Timestamp('2020-01-31 00:00:00'): 1000000.0, Timestamp('2020-02-01 00:00:00'): 1000000.0, Timestamp('2020-02-02 00:00:00'): 1000000.0, Timestamp('2020-02-03 00:00:00'): 1000000.0, Timestamp('2020-02-04 00:00:00'): 1000000.0, Timestamp('2020-02-05 00:00:00'): 1000000.0, Timestamp('2020-02-06 00:00:00'): 1000000.0, Timestamp('2020-02-07 00:00:00'): 1000000.0, Timestamp('2020-02-08 00:00:00'): 1000000.0, Timestamp('2020-02-09 00:00:00'): 1000000.0, Timestamp('2020-02-10 00:00:00'): 1000000.0, Timestamp('2020-02-11 00:00:00'): 1000000.0, Timestamp('2020-02-12 00:00:00'): 1000000.0, Timestamp('2020-02-13 00:00:00'): 1000000.0, Timestamp('2020-02-14 00:00:00'): 1000000.0, Timestamp('2020-02-15 00:00:00'): 1000000.0, Timestamp('2020-02-16 00:00:00'): 1000000.0, Timestamp('2020-02-17 00:00:00'): 1000000.0, Timestamp('2020-02-18 00:00:00'): 1000000.0, Timestamp('2020-02-19 00:00:00'): 1000000.0, Timestamp('2020-02-20 00:00:00'): 1000000.0, Timestamp('2020-02-21 00:00:00'): 1000000.0, Timestamp('2020-02-22 00:00:00'): 1000000.0, Timestamp('2020-02-23 00:00:00'): 1000000.0, Timestamp('2020-02-24 00:00:00'): 1000000.0, Timestamp('2020-02-25 00:00:00'): 1000000.0, Timestamp('2020-02-26 00:00:00'): 1000000.0, Timestamp('2020-02-27 00:00:00'): 1000000.0, Timestamp('2020-02-28 00:00:00'): 1000000.0, Timestamp('2020-02-29 00:00:00'): 1000000.0, Timestamp('2020-03-01 00:00:00'): 1000000.0, Timestamp('2020-03-02 00:00:00'): 1000000.0, Timestamp('2020-03-03 00:00:00'): 1000000.0, Timestamp('2020-03-04 00:00:00'): 1000000.0, Timestamp('2020-03-05 00:00:00'): 1000000.0, Timestamp('2020-03-06 00:00:00'): 1000000.0, Timestamp('2020-03-07 00:00:00'): 1000000.0, Timestamp('2020-03-08 00:00:00'): 1000000.0, Timestamp('2020-03-09 00:00:00'): 1000000.0, Timestamp('2020-03-10 00:00:00'): 1000000.0, Timestamp('2020-03-11 00:00:00'): 1000000.0, Timestamp('2020-03-12 00:00:00'): 1000000.0, Timestamp('2020-03-13 00:00:00'): 1000000.0, Timestamp('2020-03-14 00:00:00'): 1000000.0, Timestamp('2020-03-15 00:00:00'): 1000000.0, Timestamp('2020-03-16 00:00:00'): 1000000.0, Timestamp('2020-03-17 00:00:00'): 1000000.0, Timestamp('2020-03-18 00:00:00'): 1000000.0, Timestamp('2020-03-19 00:00:00'): 1000000.0, Timestamp('2020-03-20 00:00:00'): 1000000.0, Timestamp('2020-03-21 00:00:00'): 1000000.0, Timestamp('2020-03-22 00:00:00'): 1000000.0, Timestamp('2020-03-23 00:00:00'): 1000000.0, Timestamp('2020-03-24 00:00:00'): 1000000.0, Timestamp('2020-03-25 00:00:00'): 1000000.0, Timestamp('2020-03-26 00:00:00'): 1000000.0, Timestamp('2020-03-27 00:00:00'): 1000000.0, Timestamp('2020-03-28 00:00:00'): 1000000.0, Timestamp('2020-03-29 00:00:00'): 1000000.0, Timestamp('2020-03-30 00:00:00'): 1000000.0, Timestamp('2020-03-31 00:00:00'): 1000000.0, Timestamp('2020-04-01 00:00:00'): 1000000.0, Timestamp('2020-04-02 00:00:00'): 1000000.0, Timestamp('2020-04-03 00:00:00'): 1000000.0, Timestamp('2020-04-04 00:00:00'): 1000000.0, Timestamp('2020-04-05 00:00:00'): 1000000.0, Timestamp('2020-04-06 00:00:00'): 1000000.0, Timestamp('2020-04-07 00:00:00'): 1000000.0, Timestamp('2020-04-08 00:00:00'): 1000000.0, Timestamp('2020-04-09 00:00:00'): 1000000.0, Timestamp('2020-04-10 00:00:00'): 1000000.0, Timestamp('2020-04-11 00:00:00'): 1000000.0, Timestamp('2020-04-12 00:00:00'): 1000000.0, Timestamp('2020-04-13 00:00:00'): 1000000.0, Timestamp('2020-04-14 00:00:00'): 1000000.0, Timestamp('2020-04-15 00:00:00'): 1000000.0, Timestamp('2020-04-16 00:00:00'): 1000000.0, Timestamp('2020-04-17 00:00:00'): 1000000.0, Timestamp('2020-04-18 00:00:00'): 1000000.0, Timestamp('2020-04-19 00:00:00'): 1000000.0, Timestamp('2020-04-20 00:00:00'): 1000000.0, Timestamp('2020-04-21 00:00:00'): 1000000.0, Timestamp('2020-04-22 00:00:00'): 1000000.0, Timestamp('2020-04-23 00:00:00'): 1000000.0, Timestamp('2020-04-24 00:00:00'): 1000000.0, Timestamp('2020-04-25 00:00:00'): 1000000.0, Timestamp('2020-04-26 00:00:00'): 1000000.0, Timestamp('2020-04-27 00:00:00'): 1000000.0, Timestamp('2020-04-28 00:00:00'): 1000000.0, Timestamp('2020-04-29 00:00:00'): 1000000.0, Timestamp('2020-04-30 00:00:00'): 1000000.0, Timestamp('2020-05-01 00:00:00'): 1000000.0, Timestamp('2020-05-02 00:00:00'): 1000000.0, Timestamp('2020-05-03 00:00:00'): 1000000.0, Timestamp('2020-05-04 00:00:00'): 1000000.0, Timestamp('2020-05-05 00:00:00'): 1000000.0, Timestamp('2020-05-06 00:00:00'): 1000000.0, Timestamp('2020-05-07 00:00:00'): 1000000.0, Timestamp('2020-05-08 00:00:00'): 1000000.0, Timestamp('2020-05-09 00:00:00'): 1000000.0, Timestamp('2020-05-10 00:00:00'): 1000000.0, Timestamp('2020-05-11 00:00:00'): 1000000.0, Timestamp('2020-05-12 00:00:00'): 1000000.0, Timestamp('2020-05-13 00:00:00'): 1000000.0, Timestamp('2020-05-14 00:00:00'): 1000000.0}\n", - "{Timestamp('2018-12-31 00:00:00'): 2506.85, Timestamp('2019-01-01 00:00:00'): 2506.85, Timestamp('2019-01-02 00:00:00'): 2510.03, Timestamp('2019-01-03 00:00:00'): 2447.89, Timestamp('2019-01-04 00:00:00'): 2531.94, Timestamp('2019-01-05 00:00:00'): 2531.94, Timestamp('2019-01-06 00:00:00'): 2531.94, Timestamp('2019-01-07 00:00:00'): 2549.69, Timestamp('2019-01-08 00:00:00'): 2574.41, Timestamp('2019-01-09 00:00:00'): 2584.96, Timestamp('2019-01-10 00:00:00'): 2596.64, Timestamp('2019-01-11 00:00:00'): 2596.26, Timestamp('2019-01-12 00:00:00'): 2596.26, Timestamp('2019-01-13 00:00:00'): 2596.26, Timestamp('2019-01-14 00:00:00'): 2582.61, Timestamp('2019-01-15 00:00:00'): 2610.3, Timestamp('2019-01-16 00:00:00'): 2616.1, Timestamp('2019-01-17 00:00:00'): 2635.96, Timestamp('2019-01-18 00:00:00'): 2670.71, Timestamp('2019-01-19 00:00:00'): 2670.71, Timestamp('2019-01-20 00:00:00'): 2670.71, Timestamp('2019-01-21 00:00:00'): nan, Timestamp('2019-01-22 00:00:00'): 2632.9, Timestamp('2019-01-23 00:00:00'): 2638.7, Timestamp('2019-01-24 00:00:00'): 2642.33, Timestamp('2019-01-25 00:00:00'): 2664.76, Timestamp('2019-01-26 00:00:00'): 2664.76, Timestamp('2019-01-27 00:00:00'): 2664.76, Timestamp('2019-01-28 00:00:00'): 2643.85, Timestamp('2019-01-29 00:00:00'): 2640.0, Timestamp('2019-01-30 00:00:00'): 2681.05, Timestamp('2019-01-31 00:00:00'): 2704.1, Timestamp('2019-02-01 00:00:00'): 2706.53, Timestamp('2019-02-02 00:00:00'): 2706.53, Timestamp('2019-02-03 00:00:00'): 2706.53, Timestamp('2019-02-04 00:00:00'): 2724.87, Timestamp('2019-02-05 00:00:00'): 2737.7, Timestamp('2019-02-06 00:00:00'): 2731.61, Timestamp('2019-02-07 00:00:00'): 2706.05, Timestamp('2019-02-08 00:00:00'): 2707.88, Timestamp('2019-02-09 00:00:00'): 2707.88, Timestamp('2019-02-10 00:00:00'): 2707.88, Timestamp('2019-02-11 00:00:00'): 2709.8, Timestamp('2019-02-12 00:00:00'): 2744.73, Timestamp('2019-02-13 00:00:00'): 2753.03, Timestamp('2019-02-14 00:00:00'): 2745.73, Timestamp('2019-02-15 00:00:00'): 2775.6, Timestamp('2019-02-16 00:00:00'): 2775.6, Timestamp('2019-02-17 00:00:00'): 2775.6, Timestamp('2019-02-18 00:00:00'): nan, Timestamp('2019-02-19 00:00:00'): 2779.76, Timestamp('2019-02-20 00:00:00'): 2784.7, Timestamp('2019-02-21 00:00:00'): 2774.88, Timestamp('2019-02-22 00:00:00'): 2792.67, Timestamp('2019-02-23 00:00:00'): 2792.67, Timestamp('2019-02-24 00:00:00'): 2792.67, Timestamp('2019-02-25 00:00:00'): 2796.11, Timestamp('2019-02-26 00:00:00'): 2793.9, Timestamp('2019-02-27 00:00:00'): 2792.38, Timestamp('2019-02-28 00:00:00'): 2784.49, Timestamp('2019-03-01 00:00:00'): 2803.69, Timestamp('2019-03-02 00:00:00'): 2803.69, Timestamp('2019-03-03 00:00:00'): 2803.69, Timestamp('2019-03-04 00:00:00'): 2792.81, Timestamp('2019-03-05 00:00:00'): 2789.65, Timestamp('2019-03-06 00:00:00'): 2771.45, Timestamp('2019-03-07 00:00:00'): 2748.93, Timestamp('2019-03-08 00:00:00'): 2743.07, Timestamp('2019-03-09 00:00:00'): 2743.07, Timestamp('2019-03-10 00:00:00'): 2743.07, Timestamp('2019-03-11 00:00:00'): 2783.3, Timestamp('2019-03-12 00:00:00'): 2791.52, Timestamp('2019-03-13 00:00:00'): 2810.92, Timestamp('2019-03-14 00:00:00'): 2808.48, Timestamp('2019-03-15 00:00:00'): 2822.48, Timestamp('2019-03-16 00:00:00'): 2822.48, Timestamp('2019-03-17 00:00:00'): 2822.48, Timestamp('2019-03-18 00:00:00'): 2832.94, Timestamp('2019-03-19 00:00:00'): 2832.57, Timestamp('2019-03-20 00:00:00'): 2824.23, Timestamp('2019-03-21 00:00:00'): 2854.88, Timestamp('2019-03-22 00:00:00'): 2800.71, Timestamp('2019-03-23 00:00:00'): 2800.71, Timestamp('2019-03-24 00:00:00'): 2800.71, Timestamp('2019-03-25 00:00:00'): 2798.36, Timestamp('2019-03-26 00:00:00'): 2818.46, Timestamp('2019-03-27 00:00:00'): 2805.37, Timestamp('2019-03-28 00:00:00'): 2815.44, Timestamp('2019-03-29 00:00:00'): 2834.4, Timestamp('2019-03-30 00:00:00'): 2834.4, Timestamp('2019-03-31 00:00:00'): 2834.4, Timestamp('2019-04-01 00:00:00'): 2867.19, Timestamp('2019-04-02 00:00:00'): 2867.24, Timestamp('2019-04-03 00:00:00'): 2873.4, Timestamp('2019-04-04 00:00:00'): 2879.39, Timestamp('2019-04-05 00:00:00'): 2892.74, Timestamp('2019-04-06 00:00:00'): 2892.74, Timestamp('2019-04-07 00:00:00'): 2892.74, Timestamp('2019-04-08 00:00:00'): 2895.77, Timestamp('2019-04-09 00:00:00'): 2878.2, Timestamp('2019-04-10 00:00:00'): 2888.21, Timestamp('2019-04-11 00:00:00'): 2888.32, Timestamp('2019-04-12 00:00:00'): 2907.41, Timestamp('2019-04-13 00:00:00'): 2907.41, Timestamp('2019-04-14 00:00:00'): 2907.41, Timestamp('2019-04-15 00:00:00'): 2905.58, Timestamp('2019-04-16 00:00:00'): 2907.06, Timestamp('2019-04-17 00:00:00'): 2900.45, Timestamp('2019-04-18 00:00:00'): 2905.03, Timestamp('2019-04-19 00:00:00'): nan, Timestamp('2019-04-20 00:00:00'): nan, Timestamp('2019-04-21 00:00:00'): nan, Timestamp('2019-04-22 00:00:00'): 2907.97, Timestamp('2019-04-23 00:00:00'): 2933.68, Timestamp('2019-04-24 00:00:00'): 2927.25, Timestamp('2019-04-25 00:00:00'): 2926.17, Timestamp('2019-04-26 00:00:00'): 2939.88, Timestamp('2019-04-27 00:00:00'): 2939.88, Timestamp('2019-04-28 00:00:00'): 2939.88, Timestamp('2019-04-29 00:00:00'): 2943.03, Timestamp('2019-04-30 00:00:00'): 2945.83, Timestamp('2019-05-01 00:00:00'): 2923.73, Timestamp('2019-05-02 00:00:00'): 2917.52, Timestamp('2019-05-03 00:00:00'): 2945.64, Timestamp('2019-05-04 00:00:00'): 2945.64, Timestamp('2019-05-05 00:00:00'): 2945.64, Timestamp('2019-05-06 00:00:00'): 2932.47, Timestamp('2019-05-07 00:00:00'): 2884.05, Timestamp('2019-05-08 00:00:00'): 2879.42, Timestamp('2019-05-09 00:00:00'): 2870.72, Timestamp('2019-05-10 00:00:00'): 2881.4, Timestamp('2019-05-11 00:00:00'): 2881.4, Timestamp('2019-05-12 00:00:00'): 2881.4, Timestamp('2019-05-13 00:00:00'): 2811.87, Timestamp('2019-05-14 00:00:00'): 2834.41, Timestamp('2019-05-15 00:00:00'): 2850.96, Timestamp('2019-05-16 00:00:00'): 2876.32, Timestamp('2019-05-17 00:00:00'): 2859.53, Timestamp('2019-05-18 00:00:00'): 2859.53, Timestamp('2019-05-19 00:00:00'): 2859.53, Timestamp('2019-05-20 00:00:00'): 2840.23, Timestamp('2019-05-21 00:00:00'): 2864.36, Timestamp('2019-05-22 00:00:00'): 2856.27, Timestamp('2019-05-23 00:00:00'): 2822.24, Timestamp('2019-05-24 00:00:00'): 2826.06, Timestamp('2019-05-25 00:00:00'): 2826.06, Timestamp('2019-05-26 00:00:00'): 2826.06, Timestamp('2019-05-27 00:00:00'): nan, Timestamp('2019-05-28 00:00:00'): 2802.39, Timestamp('2019-05-29 00:00:00'): 2783.02, Timestamp('2019-05-30 00:00:00'): 2788.86, Timestamp('2019-05-31 00:00:00'): 2752.06, Timestamp('2019-06-01 00:00:00'): 2752.06, Timestamp('2019-06-02 00:00:00'): 2752.06, Timestamp('2019-06-03 00:00:00'): 2744.45, Timestamp('2019-06-04 00:00:00'): 2803.27, Timestamp('2019-06-05 00:00:00'): 2826.15, Timestamp('2019-06-06 00:00:00'): 2843.49, Timestamp('2019-06-07 00:00:00'): 2873.34, Timestamp('2019-06-08 00:00:00'): 2873.34, Timestamp('2019-06-09 00:00:00'): 2873.34, Timestamp('2019-06-10 00:00:00'): 2886.73, Timestamp('2019-06-11 00:00:00'): 2885.72, Timestamp('2019-06-12 00:00:00'): 2879.84, Timestamp('2019-06-13 00:00:00'): 2891.64, Timestamp('2019-06-14 00:00:00'): 2886.98, Timestamp('2019-06-15 00:00:00'): 2886.98, Timestamp('2019-06-16 00:00:00'): 2886.98, Timestamp('2019-06-17 00:00:00'): 2889.67, Timestamp('2019-06-18 00:00:00'): 2917.75, Timestamp('2019-06-19 00:00:00'): 2926.46, Timestamp('2019-06-20 00:00:00'): 2954.18, Timestamp('2019-06-21 00:00:00'): 2950.46, Timestamp('2019-06-22 00:00:00'): 2950.46, Timestamp('2019-06-23 00:00:00'): 2950.46, Timestamp('2019-06-24 00:00:00'): 2945.35, Timestamp('2019-06-25 00:00:00'): 2917.38, Timestamp('2019-06-26 00:00:00'): 2913.78, Timestamp('2019-06-27 00:00:00'): 2924.92, Timestamp('2019-06-28 00:00:00'): 2941.76, Timestamp('2019-06-29 00:00:00'): 2941.76, Timestamp('2019-06-30 00:00:00'): 2941.76, Timestamp('2019-07-01 00:00:00'): 2964.33, Timestamp('2019-07-02 00:00:00'): 2973.01, Timestamp('2019-07-03 00:00:00'): 2995.82, Timestamp('2019-07-04 00:00:00'): nan, Timestamp('2019-07-05 00:00:00'): 2990.41, Timestamp('2019-07-06 00:00:00'): 2990.41, Timestamp('2019-07-07 00:00:00'): 2990.41, Timestamp('2019-07-08 00:00:00'): 2975.95, Timestamp('2019-07-09 00:00:00'): 2979.63, Timestamp('2019-07-10 00:00:00'): 2993.07, Timestamp('2019-07-11 00:00:00'): 2999.91, Timestamp('2019-07-12 00:00:00'): 3013.77, Timestamp('2019-07-13 00:00:00'): 3013.77, Timestamp('2019-07-14 00:00:00'): 3013.77, Timestamp('2019-07-15 00:00:00'): 3014.3, Timestamp('2019-07-16 00:00:00'): 3004.04, Timestamp('2019-07-17 00:00:00'): 2984.42, Timestamp('2019-07-18 00:00:00'): 2995.11, Timestamp('2019-07-19 00:00:00'): 2976.61, Timestamp('2019-07-20 00:00:00'): 2976.61, Timestamp('2019-07-21 00:00:00'): 2976.61, Timestamp('2019-07-22 00:00:00'): 2985.03, Timestamp('2019-07-23 00:00:00'): 3005.47, Timestamp('2019-07-24 00:00:00'): 3019.56, Timestamp('2019-07-25 00:00:00'): 3003.67, Timestamp('2019-07-26 00:00:00'): 3025.86, Timestamp('2019-07-27 00:00:00'): 3025.86, Timestamp('2019-07-28 00:00:00'): 3025.86, Timestamp('2019-07-29 00:00:00'): 3020.97, Timestamp('2019-07-30 00:00:00'): 3013.18, Timestamp('2019-07-31 00:00:00'): 2980.38, Timestamp('2019-08-01 00:00:00'): 2953.56, Timestamp('2019-08-02 00:00:00'): 2932.05, Timestamp('2019-08-03 00:00:00'): 2932.05, Timestamp('2019-08-04 00:00:00'): 2932.05, Timestamp('2019-08-05 00:00:00'): 2844.74, Timestamp('2019-08-06 00:00:00'): 2881.77, Timestamp('2019-08-07 00:00:00'): 2883.98, Timestamp('2019-08-08 00:00:00'): 2938.09, Timestamp('2019-08-09 00:00:00'): 2918.65, Timestamp('2019-08-10 00:00:00'): 2918.65, Timestamp('2019-08-11 00:00:00'): 2918.65, Timestamp('2019-08-12 00:00:00'): 2883.75, Timestamp('2019-08-13 00:00:00'): 2926.32, Timestamp('2019-08-14 00:00:00'): 2840.6, Timestamp('2019-08-15 00:00:00'): 2847.6, Timestamp('2019-08-16 00:00:00'): 2888.68, Timestamp('2019-08-17 00:00:00'): 2888.68, Timestamp('2019-08-18 00:00:00'): 2888.68, Timestamp('2019-08-19 00:00:00'): 2923.65, Timestamp('2019-08-20 00:00:00'): 2900.51, Timestamp('2019-08-21 00:00:00'): 2924.43, Timestamp('2019-08-22 00:00:00'): 2922.95, Timestamp('2019-08-23 00:00:00'): 2847.11, Timestamp('2019-08-24 00:00:00'): 2847.11, Timestamp('2019-08-25 00:00:00'): 2847.11, Timestamp('2019-08-26 00:00:00'): 2878.38, Timestamp('2019-08-27 00:00:00'): 2869.16, Timestamp('2019-08-28 00:00:00'): 2887.94, Timestamp('2019-08-29 00:00:00'): 2924.58, Timestamp('2019-08-30 00:00:00'): 2926.46, Timestamp('2019-08-31 00:00:00'): 2926.46, Timestamp('2019-09-01 00:00:00'): 2926.46, Timestamp('2019-09-02 00:00:00'): nan, Timestamp('2019-09-03 00:00:00'): 2906.27, Timestamp('2019-09-04 00:00:00'): 2937.78, Timestamp('2019-09-05 00:00:00'): 2976.0, Timestamp('2019-09-06 00:00:00'): 2978.71, Timestamp('2019-09-07 00:00:00'): 2978.71, Timestamp('2019-09-08 00:00:00'): 2978.71, Timestamp('2019-09-09 00:00:00'): 2978.43, Timestamp('2019-09-10 00:00:00'): 2979.39, Timestamp('2019-09-11 00:00:00'): 3000.93, Timestamp('2019-09-12 00:00:00'): 3009.57, Timestamp('2019-09-13 00:00:00'): 3007.39, Timestamp('2019-09-14 00:00:00'): 3007.39, Timestamp('2019-09-15 00:00:00'): 3007.39, Timestamp('2019-09-16 00:00:00'): 2997.96, Timestamp('2019-09-17 00:00:00'): 3005.7, Timestamp('2019-09-18 00:00:00'): 3006.73, Timestamp('2019-09-19 00:00:00'): 3006.79, Timestamp('2019-09-20 00:00:00'): 2992.07, Timestamp('2019-09-21 00:00:00'): 2992.07, Timestamp('2019-09-22 00:00:00'): 2992.07, Timestamp('2019-09-23 00:00:00'): 2991.78, Timestamp('2019-09-24 00:00:00'): 2966.6, Timestamp('2019-09-25 00:00:00'): 2984.87, Timestamp('2019-09-26 00:00:00'): 2977.62, Timestamp('2019-09-27 00:00:00'): 2961.79, Timestamp('2019-09-28 00:00:00'): 2961.79, Timestamp('2019-09-29 00:00:00'): 2961.79, Timestamp('2019-09-30 00:00:00'): 2976.74, Timestamp('2019-10-01 00:00:00'): 2940.25, Timestamp('2019-10-02 00:00:00'): 2887.61, Timestamp('2019-10-03 00:00:00'): 2910.63, Timestamp('2019-10-04 00:00:00'): 2952.01, Timestamp('2019-10-05 00:00:00'): 2952.01, Timestamp('2019-10-06 00:00:00'): 2952.01, Timestamp('2019-10-07 00:00:00'): 2938.79, Timestamp('2019-10-08 00:00:00'): 2893.06, Timestamp('2019-10-09 00:00:00'): 2919.4, Timestamp('2019-10-10 00:00:00'): 2938.13, Timestamp('2019-10-11 00:00:00'): 2970.27, Timestamp('2019-10-12 00:00:00'): 2970.27, Timestamp('2019-10-13 00:00:00'): 2970.27, Timestamp('2019-10-14 00:00:00'): 2966.15, Timestamp('2019-10-15 00:00:00'): 2995.68, Timestamp('2019-10-16 00:00:00'): 2989.69, Timestamp('2019-10-17 00:00:00'): 2997.95, Timestamp('2019-10-18 00:00:00'): 2986.2, Timestamp('2019-10-19 00:00:00'): 2986.2, Timestamp('2019-10-20 00:00:00'): 2986.2, Timestamp('2019-10-21 00:00:00'): 3006.72, Timestamp('2019-10-22 00:00:00'): 2995.99, Timestamp('2019-10-23 00:00:00'): 3004.52, Timestamp('2019-10-24 00:00:00'): 3010.29, Timestamp('2019-10-25 00:00:00'): 3022.55, Timestamp('2019-10-26 00:00:00'): 3022.55, Timestamp('2019-10-27 00:00:00'): 3022.55, Timestamp('2019-10-28 00:00:00'): 3039.42, Timestamp('2019-10-29 00:00:00'): 3036.89, Timestamp('2019-10-30 00:00:00'): 3046.77, Timestamp('2019-10-31 00:00:00'): 3037.56, Timestamp('2019-11-01 00:00:00'): 3066.91, Timestamp('2019-11-02 00:00:00'): 3066.91, Timestamp('2019-11-03 00:00:00'): 3066.91, Timestamp('2019-11-04 00:00:00'): 3078.27, Timestamp('2019-11-05 00:00:00'): 3074.62, Timestamp('2019-11-06 00:00:00'): 3076.78, Timestamp('2019-11-07 00:00:00'): 3085.18, Timestamp('2019-11-08 00:00:00'): 3093.08, Timestamp('2019-11-09 00:00:00'): 3093.08, Timestamp('2019-11-10 00:00:00'): 3093.08, Timestamp('2019-11-11 00:00:00'): 3087.01, Timestamp('2019-11-12 00:00:00'): 3091.84, Timestamp('2019-11-13 00:00:00'): 3094.04, Timestamp('2019-11-14 00:00:00'): 3096.63, Timestamp('2019-11-15 00:00:00'): 3120.46, Timestamp('2019-11-16 00:00:00'): 3120.46, Timestamp('2019-11-17 00:00:00'): 3120.46, Timestamp('2019-11-18 00:00:00'): 3122.03, Timestamp('2019-11-19 00:00:00'): 3120.18, Timestamp('2019-11-20 00:00:00'): 3108.46, Timestamp('2019-11-21 00:00:00'): 3103.54, Timestamp('2019-11-22 00:00:00'): 3110.29, Timestamp('2019-11-23 00:00:00'): 3110.29, Timestamp('2019-11-24 00:00:00'): 3110.29, Timestamp('2019-11-25 00:00:00'): 3133.64, Timestamp('2019-11-26 00:00:00'): 3140.52, Timestamp('2019-11-27 00:00:00'): 3153.63, Timestamp('2019-11-28 00:00:00'): nan, Timestamp('2019-11-29 00:00:00'): 3140.98, Timestamp('2019-11-30 00:00:00'): 3140.98, Timestamp('2019-12-01 00:00:00'): 3140.98, Timestamp('2019-12-02 00:00:00'): 3113.87, Timestamp('2019-12-03 00:00:00'): 3093.2, Timestamp('2019-12-04 00:00:00'): 3112.76, Timestamp('2019-12-05 00:00:00'): 3117.43, Timestamp('2019-12-06 00:00:00'): 3145.91, Timestamp('2019-12-07 00:00:00'): 3145.91, Timestamp('2019-12-08 00:00:00'): 3145.91, Timestamp('2019-12-09 00:00:00'): 3135.96, Timestamp('2019-12-10 00:00:00'): 3132.52, Timestamp('2019-12-11 00:00:00'): 3141.63, Timestamp('2019-12-12 00:00:00'): 3168.57, Timestamp('2019-12-13 00:00:00'): 3168.8, Timestamp('2019-12-14 00:00:00'): 3168.8, Timestamp('2019-12-15 00:00:00'): 3168.8, Timestamp('2019-12-16 00:00:00'): 3191.45, Timestamp('2019-12-17 00:00:00'): 3192.52, Timestamp('2019-12-18 00:00:00'): 3191.14, Timestamp('2019-12-19 00:00:00'): 3205.37, Timestamp('2019-12-20 00:00:00'): 3221.22, Timestamp('2019-12-21 00:00:00'): 3221.22, Timestamp('2019-12-22 00:00:00'): 3221.22, Timestamp('2019-12-23 00:00:00'): 3224.01, Timestamp('2019-12-24 00:00:00'): 3223.38, Timestamp('2019-12-25 00:00:00'): nan, Timestamp('2019-12-26 00:00:00'): 3239.91, Timestamp('2019-12-27 00:00:00'): 3240.02, Timestamp('2019-12-28 00:00:00'): 3240.02, Timestamp('2019-12-29 00:00:00'): 3240.02, Timestamp('2019-12-30 00:00:00'): 3221.29, Timestamp('2019-12-31 00:00:00'): 3230.78, Timestamp('2020-01-01 00:00:00'): 3230.78, Timestamp('2020-01-02 00:00:00'): 3257.85, Timestamp('2020-01-03 00:00:00'): 3234.85, Timestamp('2020-01-04 00:00:00'): 3234.85, Timestamp('2020-01-05 00:00:00'): 3234.85, Timestamp('2020-01-06 00:00:00'): 3246.28, Timestamp('2020-01-07 00:00:00'): 3237.18, Timestamp('2020-01-08 00:00:00'): 3253.05, Timestamp('2020-01-09 00:00:00'): 3274.7, Timestamp('2020-01-10 00:00:00'): 3265.35, Timestamp('2020-01-11 00:00:00'): 3265.35, Timestamp('2020-01-12 00:00:00'): 3265.35, Timestamp('2020-01-13 00:00:00'): 3288.13, Timestamp('2020-01-14 00:00:00'): 3283.15, Timestamp('2020-01-15 00:00:00'): 3289.29, Timestamp('2020-01-16 00:00:00'): 3316.81, Timestamp('2020-01-17 00:00:00'): 3329.62, Timestamp('2020-01-18 00:00:00'): 3329.62, Timestamp('2020-01-19 00:00:00'): 3329.62, Timestamp('2020-01-20 00:00:00'): nan, Timestamp('2020-01-21 00:00:00'): 3320.79, Timestamp('2020-01-22 00:00:00'): 3321.75, Timestamp('2020-01-23 00:00:00'): 3325.54, Timestamp('2020-01-24 00:00:00'): 3295.47, Timestamp('2020-01-25 00:00:00'): 3295.47, Timestamp('2020-01-26 00:00:00'): 3295.47, Timestamp('2020-01-27 00:00:00'): 3243.63, Timestamp('2020-01-28 00:00:00'): 3276.24, Timestamp('2020-01-29 00:00:00'): 3273.4, Timestamp('2020-01-30 00:00:00'): 3283.66, Timestamp('2020-01-31 00:00:00'): 3225.52, Timestamp('2020-02-01 00:00:00'): 3225.52, Timestamp('2020-02-02 00:00:00'): 3225.52, Timestamp('2020-02-03 00:00:00'): 3248.92, Timestamp('2020-02-04 00:00:00'): 3297.59, Timestamp('2020-02-05 00:00:00'): 3334.69, Timestamp('2020-02-06 00:00:00'): 3345.78, Timestamp('2020-02-07 00:00:00'): 3327.71, Timestamp('2020-02-08 00:00:00'): 3327.71, Timestamp('2020-02-09 00:00:00'): 3327.71, Timestamp('2020-02-10 00:00:00'): 3352.09, Timestamp('2020-02-11 00:00:00'): 3357.75, Timestamp('2020-02-12 00:00:00'): 3379.45, Timestamp('2020-02-13 00:00:00'): 3373.94, Timestamp('2020-02-14 00:00:00'): 3380.16, Timestamp('2020-02-15 00:00:00'): 3380.16, Timestamp('2020-02-16 00:00:00'): 3380.16, Timestamp('2020-02-17 00:00:00'): nan, Timestamp('2020-02-18 00:00:00'): 3370.29, Timestamp('2020-02-19 00:00:00'): 3386.15, Timestamp('2020-02-20 00:00:00'): 3373.23, Timestamp('2020-02-21 00:00:00'): 3337.75, Timestamp('2020-02-22 00:00:00'): 3337.75, Timestamp('2020-02-23 00:00:00'): 3337.75, Timestamp('2020-02-24 00:00:00'): 3225.89, Timestamp('2020-02-25 00:00:00'): 3128.21, Timestamp('2020-02-26 00:00:00'): 3116.39, Timestamp('2020-02-27 00:00:00'): 2978.76, Timestamp('2020-02-28 00:00:00'): 2954.22, Timestamp('2020-02-29 00:00:00'): 2954.22, Timestamp('2020-03-01 00:00:00'): 2954.22, Timestamp('2020-03-02 00:00:00'): 3090.23, Timestamp('2020-03-03 00:00:00'): 3003.37, Timestamp('2020-03-04 00:00:00'): 3130.12, Timestamp('2020-03-05 00:00:00'): 3023.94, Timestamp('2020-03-06 00:00:00'): 2972.37, Timestamp('2020-03-07 00:00:00'): 2972.37, Timestamp('2020-03-08 00:00:00'): 2972.37, Timestamp('2020-03-09 00:00:00'): 2746.56, Timestamp('2020-03-10 00:00:00'): 2882.23, Timestamp('2020-03-11 00:00:00'): 2741.38, Timestamp('2020-03-12 00:00:00'): 2480.64, Timestamp('2020-03-13 00:00:00'): 2711.02, Timestamp('2020-03-14 00:00:00'): 2711.02, Timestamp('2020-03-15 00:00:00'): 2711.02, Timestamp('2020-03-16 00:00:00'): 2386.13, Timestamp('2020-03-17 00:00:00'): 2529.19, Timestamp('2020-03-18 00:00:00'): 2398.1, Timestamp('2020-03-19 00:00:00'): 2409.39, Timestamp('2020-03-20 00:00:00'): 2304.92, Timestamp('2020-03-21 00:00:00'): 2304.92, Timestamp('2020-03-22 00:00:00'): 2304.92, Timestamp('2020-03-23 00:00:00'): 2237.4, Timestamp('2020-03-24 00:00:00'): 2447.33, Timestamp('2020-03-25 00:00:00'): 2475.56, Timestamp('2020-03-26 00:00:00'): 2630.07, Timestamp('2020-03-27 00:00:00'): 2541.47, Timestamp('2020-03-28 00:00:00'): 2541.47, Timestamp('2020-03-29 00:00:00'): 2541.47, Timestamp('2020-03-30 00:00:00'): 2626.65, Timestamp('2020-03-31 00:00:00'): 2584.59, Timestamp('2020-04-01 00:00:00'): 2470.5, Timestamp('2020-04-02 00:00:00'): 2526.9, Timestamp('2020-04-03 00:00:00'): 2488.65, Timestamp('2020-04-04 00:00:00'): 2488.65, Timestamp('2020-04-05 00:00:00'): 2488.65, Timestamp('2020-04-06 00:00:00'): 2663.68, Timestamp('2020-04-07 00:00:00'): 2659.41, Timestamp('2020-04-08 00:00:00'): 2749.98, Timestamp('2020-04-09 00:00:00'): 2789.82, Timestamp('2020-04-10 00:00:00'): nan, Timestamp('2020-04-11 00:00:00'): nan, Timestamp('2020-04-12 00:00:00'): nan, Timestamp('2020-04-13 00:00:00'): 2761.63, Timestamp('2020-04-14 00:00:00'): 2846.06, Timestamp('2020-04-15 00:00:00'): 2783.36, Timestamp('2020-04-16 00:00:00'): 2799.55, Timestamp('2020-04-17 00:00:00'): 2874.56, Timestamp('2020-04-18 00:00:00'): 2874.56, Timestamp('2020-04-19 00:00:00'): 2874.56, Timestamp('2020-04-20 00:00:00'): 2823.16, Timestamp('2020-04-21 00:00:00'): 2736.56, Timestamp('2020-04-22 00:00:00'): 2799.31, Timestamp('2020-04-23 00:00:00'): 2797.8, Timestamp('2020-04-24 00:00:00'): 2836.74, Timestamp('2020-04-25 00:00:00'): 2836.74, Timestamp('2020-04-26 00:00:00'): 2836.74, Timestamp('2020-04-27 00:00:00'): 2878.48, Timestamp('2020-04-28 00:00:00'): 2863.39, Timestamp('2020-04-29 00:00:00'): 2939.51, Timestamp('2020-04-30 00:00:00'): 2912.43, Timestamp('2020-05-01 00:00:00'): 2830.71, Timestamp('2020-05-02 00:00:00'): 2830.71, Timestamp('2020-05-03 00:00:00'): 2830.71, Timestamp('2020-05-04 00:00:00'): 2842.74, Timestamp('2020-05-05 00:00:00'): 2868.44, Timestamp('2020-05-06 00:00:00'): 2848.42, Timestamp('2020-05-07 00:00:00'): 2881.19, Timestamp('2020-05-08 00:00:00'): 2929.8, Timestamp('2020-05-09 00:00:00'): 2929.8, Timestamp('2020-05-10 00:00:00'): 2929.8, Timestamp('2020-05-11 00:00:00'): 2930.32, Timestamp('2020-05-12 00:00:00'): 2870.12, Timestamp('2020-05-13 00:00:00'): 2820.0, Timestamp('2020-05-14 00:00:00'): 2852.5}\n", - "Our model generates 1.0 over testing period\n", - "While S&P500 as benchmark generated 1.1378822027644255 over testing period\n" - ] - } ] } ], "metadata": { "colab": { "collapsed_sections": [], - "name": "GLM.ipynb", + "include_colab_link": true, + "name": "step2_GLM.ipynb", "provenance": [], - "toc_visible": true, - "include_colab_link": true + "toc_visible": true }, "kernelspec": { "display_name": "Python 3", @@ -2005,4 +2005,4 @@ }, "nbformat": 4, "nbformat_minor": 0 -} \ No newline at end of file +} diff --git a/notebooks/single-time-series-analysis.ipynb b/notebooks/step3a_single_tsa.ipynb similarity index 99% rename from notebooks/single-time-series-analysis.ipynb rename to notebooks/step3a_single_tsa.ipynb index 1a04457..a30a4fb 100644 --- a/notebooks/single-time-series-analysis.ipynb +++ b/notebooks/step3a_single_tsa.ipynb @@ -7,7 +7,7 @@ "id": "view-in-github" }, "source": [ - "\"Open" + "\"Open" ] }, { @@ -18,7 +18,7 @@ "source": [ "# CIS 545 Final Project\n", "\n", - "## Big Portfolio Learner\n", + "## Big Portfolio Learner: Single Time Series Analysis\n", "\n", "### Team members: Steven Brooks & Chenlia Xu" ] @@ -1085,7 +1085,7 @@ "colab": { "collapsed_sections": [], "include_colab_link": true, - "name": "single-time-series-analysis.ipynb", + "name": "step3a_single_tsa.ipynb", "provenance": [] }, "kernelspec": { diff --git a/notebooks/step2_time_series_analysis.ipynb b/notebooks/step3b_global_tsa.ipynb similarity index 98% rename from notebooks/step2_time_series_analysis.ipynb rename to notebooks/step3b_global_tsa.ipynb index 6203ba3..a62f335 100644 --- a/notebooks/step2_time_series_analysis.ipynb +++ b/notebooks/step3b_global_tsa.ipynb @@ -3,11 +3,11 @@ { "cell_type": "markdown", "metadata": { - "id": "view-in-github", - "colab_type": "text" + "colab_type": "text", + "id": "view-in-github" }, "source": [ - "\"Open" + "\"Open" ] }, { @@ -133,16 +133,16 @@ "cell_type": "code", "execution_count": 16, "metadata": { - "id": "ygqKoO0Lusl3", - "outputId": "be1b6a80-14bd-4d05-a829-5356001b5e4b", "colab": { "base_uri": "https://localhost:8080/" - } + }, + "id": "ygqKoO0Lusl3", + "outputId": "be1b6a80-14bd-4d05-a829-5356001b5e4b" }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "The sparkmagic.magics extension is already loaded. To reload it, use:\n", " %reload_ext sparkmagic.magics\n" @@ -178,27 +178,32 @@ }, { "cell_type": "markdown", - "source": [ - "# Setup for Darts (Time Series Modeling)" - ], "metadata": { "id": "xj7s85BkJeuL" - } + }, + "source": [ + "# Setup for Darts (Time Series Modeling)" + ] }, { "cell_type": "code", - "source": [ - "%%capture\n", - "!pip install 'u8darts[all]'" - ], + "execution_count": 17, "metadata": { "id": "SgZ6kv1fJr6E" }, - "execution_count": 17, - "outputs": [] + "outputs": [], + "source": [ + "%%capture\n", + "!pip install 'u8darts[all]'" + ] }, { "cell_type": "code", + "execution_count": 18, + "metadata": { + "id": "WiUhAcQ-JeOp" + }, + "outputs": [], "source": [ "import torch\n", "\n", @@ -211,12 +216,7 @@ "from darts.datasets import AirPassengersDataset, MonthlyMilkDataset\n", "\n", "torch.manual_seed(1); np.random.seed(1) # for reproducibility" - ], - "metadata": { - "id": "WiUhAcQ-JeOp" - }, - "execution_count": 18, - "outputs": [] + ] }, { "cell_type": "markdown", @@ -257,23 +257,17 @@ }, { "cell_type": "code", - "source": [ - "series_air = AirPassengersDataset().load()\n", - "series_milk = MonthlyMilkDataset().load()\n", - "series_air" - ], + "execution_count": 20, "metadata": { - "id": "E96QnlP3VWbt", - "outputId": "8c09febf-da1c-45f9-b446-bf36a662ffd6", "colab": { "base_uri": "https://localhost:8080/", "height": 863 - } + }, + "id": "E96QnlP3VWbt", + "outputId": "8c09febf-da1c-45f9-b446-bf36a662ffd6" }, - "execution_count": 20, "outputs": [ { - "output_type": "execute_result", "data": { "text/html": [ "
\n", @@ -835,29 +829,33 @@ "Dimensions without coordinates: sample" ] }, + "execution_count": 20, "metadata": {}, - "execution_count": 20 + "output_type": "execute_result" } + ], + "source": [ + "series_air = AirPassengersDataset().load()\n", + "series_milk = MonthlyMilkDataset().load()\n", + "series_air" ] }, { "cell_type": "code", - "source": [ - "" - ], + "execution_count": null, "metadata": { "id": "tAT_Ah63VZuW" }, - "execution_count": null, - "outputs": [] + "outputs": [], + "source": [] } ], "metadata": { "colab": { "collapsed_sections": [], - "name": "step2_time_series_analysis.ipynb", - "provenance": [], - "include_colab_link": true + "include_colab_link": true, + "name": "step3b_global_tsa.ipynb", + "provenance": [] }, "kernelspec": { "display_name": "Python 3", @@ -869,4 +867,4 @@ }, "nbformat": 4, "nbformat_minor": 0 -} \ No newline at end of file +}