From be414583fe774e03b2f17f31556f8e93edcf2b3f Mon Sep 17 00:00:00 2001 From: Kitas91 Date: Sat, 15 Feb 2020 15:59:44 -0500 Subject: [PATCH 1/3] monte carlo simpulation draft --- .../monte_carlo_simulation-checkpoint.ipynb | 138 ++ monte_carlo_simulation.ipynb | 138 ++ sharpe_ratio.ipynb | 1729 +---------------- 3 files changed, 287 insertions(+), 1718 deletions(-) create mode 100644 .ipynb_checkpoints/monte_carlo_simulation-checkpoint.ipynb create mode 100644 monte_carlo_simulation.ipynb diff --git a/.ipynb_checkpoints/monte_carlo_simulation-checkpoint.ipynb b/.ipynb_checkpoints/monte_carlo_simulation-checkpoint.ipynb new file mode 100644 index 0000000..279c319 --- /dev/null +++ b/.ipynb_checkpoints/monte_carlo_simulation-checkpoint.ipynb @@ -0,0 +1,138 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "from pathlib import Path\n", + "import hvplot.pandas\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "csv_path = Path('monthly_data.csv')\n", + "monthly_df = pd.read_csv(csv_path, index_col = \"Date\")\n", + "#monthly_df.pct_change()\n", + "#monthly_df.dropna(inplace = True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# weight = [] This will have to come from the portfolio efficiency\n", + "# ticker = []\n", + "portfolio_return = stock_df.dot(weights).to_frame()\n", + "portfolio_return.columns = [\"weight\", \"ticker\"]\n", + "portfolio_return.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "portfolio_avg_return = portfolio_return.mean()['Weighted Price']\n", + "portfolio_avg_return" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "portfolio_return = portfolio_return.pct_change()\n", + "portfolio_return.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "portfolio_volatility = portfolio_return['Weighted Price'].std() * np.sqrt(252)\n", + "portfolio_volatility" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "portfolio_last_price = portfolio_return['Weighted Price'][-1]\n", + "portfolio_last_price" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "number_simulations = 500\n", + "number_months = 12 * 5\n", + "monte_carlo = pd.DataFrame()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for n in range(number_simulations):\n", + " simulated_portfolio_prices = [portfolio_last_price]\n", + " for i in range(number_months):\n", + " simulated_price = simulated_portfolio_prices[-1]*(1+ np.random.normal(portfolio_avg_return, portfolio_volatility))\n", + " simulated_portfolio_prices.append(simulated_price)\n", + " monte_carlo[f\"{n+1}\"] = pd.Series(simulated_portfolio_prices)\n", + "\n", + "monte_carlo.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/monte_carlo_simulation.ipynb b/monte_carlo_simulation.ipynb new file mode 100644 index 0000000..279c319 --- /dev/null +++ b/monte_carlo_simulation.ipynb @@ -0,0 +1,138 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "from pathlib import Path\n", + "import hvplot.pandas\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "csv_path = Path('monthly_data.csv')\n", + "monthly_df = pd.read_csv(csv_path, index_col = \"Date\")\n", + "#monthly_df.pct_change()\n", + "#monthly_df.dropna(inplace = True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# weight = [] This will have to come from the portfolio efficiency\n", + "# ticker = []\n", + "portfolio_return = stock_df.dot(weights).to_frame()\n", + "portfolio_return.columns = [\"weight\", \"ticker\"]\n", + "portfolio_return.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "portfolio_avg_return = portfolio_return.mean()['Weighted Price']\n", + "portfolio_avg_return" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "portfolio_return = portfolio_return.pct_change()\n", + "portfolio_return.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "portfolio_volatility = portfolio_return['Weighted Price'].std() * np.sqrt(252)\n", + "portfolio_volatility" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "portfolio_last_price = portfolio_return['Weighted Price'][-1]\n", + "portfolio_last_price" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "number_simulations = 500\n", + "number_months = 12 * 5\n", + "monte_carlo = pd.DataFrame()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for n in range(number_simulations):\n", + " simulated_portfolio_prices = [portfolio_last_price]\n", + " for i in range(number_months):\n", + " simulated_price = simulated_portfolio_prices[-1]*(1+ np.random.normal(portfolio_avg_return, portfolio_volatility))\n", + " simulated_portfolio_prices.append(simulated_price)\n", + " monte_carlo[f\"{n+1}\"] = pd.Series(simulated_portfolio_prices)\n", + "\n", + "monte_carlo.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/sharpe_ratio.ipynb b/sharpe_ratio.ipynb index d31374b..0d12657 100644 --- a/sharpe_ratio.ipynb +++ b/sharpe_ratio.ipynb @@ -20,1726 +20,19 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 1, "metadata": {}, "outputs": [ { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DXCBBYAMGCNPWMTMRKNEMVFCMDTHST...UNHHSYFBEIXSBUXMCOHIIRLLNTAXP
Date
3/31/1522.12888033.179913209.09005716.58027373.01541149.78084620.14197062.42157770.46037316.215014...109.71411189.78566782.22000153.20843943.33609897.564026131.290314118.73391026.84617672.461044
4/30/1521.84752330.422970220.13938917.03519169.28697251.58223724.57673160.03445467.26213816.182875...103.32363981.78668278.76999751.90526245.377064101.060547123.271454120.45845825.99754971.839569
5/31/1521.84752330.422970220.13938917.03519169.28697251.58223724.57673160.03445467.26213816.182875...103.32363981.78668278.76999751.90526245.377064101.060547123.271454120.45845825.99754971.839569
6/30/1522.40707028.825178212.80888415.65253463.36373149.67954321.69378158.08469467.28563716.092331...113.63442279.48459685.76999747.69550349.230713101.788795105.818543119.94010224.81525072.359734
7/31/1522.33538128.542316202.39234915.90751264.30175051.45100815.94530764.20632971.18110715.727145...113.07555483.11744794.01000251.49707053.187904104.117599110.348679114.07720226.68710970.814239
8/31/1521.16109132.475834181.50088515.51362558.21995946.99181015.85243560.32513065.64209014.388148...107.76640380.61513589.43000050.18411350.36998796.757385106.214287100.75657724.58720471.428711
9/30/1521.11546133.015205166.46015915.03038858.31890143.47086714.94756657.08144861.11518512.989917...108.52256082.74037289.90000254.48795752.33102092.870461101.091324107.55992125.37684169.017326
10/31/1521.11546133.015205166.46015915.03038858.31890143.47086714.94756657.08144861.11518512.989917...108.52256082.74037289.90000254.48795752.33102092.870461101.091324107.55992125.37684169.017326
11/30/1525.58247628.265713172.53485114.32482752.92233346.65702817.12412354.14410068.78424813.639001...105.43553278.263832104.23999851.28278056.70307997.852180123.981049113.06716926.35447766.951530
12/31/1526.81584727.285814155.52767915.51644755.59673746.89155216.75507552.41654670.57651512.765546...110.52269080.947891104.66000451.56275655.44691195.214180120.126739101.93999527.34402164.998291
1/31/1626.81584727.285814155.52767915.51644755.59673746.89155216.75507552.41654670.57651512.765546...110.52269080.947891104.66000451.56275655.44691195.214180120.126739101.93999527.34402164.998291
2/29/1623.64028929.024221135.01588415.96675460.16782444.57450124.05690254.82475371.00775912.740582...111.89434882.952133106.91999859.35683853.94156384.637756124.11360982.99313430.03297252.169907
3/31/1628.21900429.314409158.09771717.92938462.57766347.38238924.77876954.85501169.16433714.069514...121.60122784.047325114.09999963.02928555.32231192.034012130.17204388.48091132.83075357.632820
4/30/1628.21900429.314409158.09771717.92938462.57766347.38238924.77876954.85501169.16433714.069514...121.60122784.047325114.09999963.02928555.32231192.034012130.17204388.48091132.83075357.632820
5/31/1640.56236329.070423168.92314219.53780665.14345650.38240830.21368252.78820074.21792612.974280...126.10113585.288765118.80999862.80130851.04299594.389252146.31071586.70687933.03248262.024155
6/30/1641.05993727.911333137.04077220.81257667.20507052.01252436.49472052.41284280.01849413.843898...133.811340104.247917114.27999968.52713853.11670389.671700160.25412082.84885435.39513857.596676
7/31/1641.05993727.911333137.04077220.81257667.20507052.01252436.49472052.41284280.01849413.843898...133.811340104.247917114.27999968.52713853.11670389.671700160.25412082.84885435.39513857.596676
8/31/1639.03852835.098957138.28685019.70934566.20101256.68923635.67377152.89017180.65667715.218894...128.93083292.256035126.12000364.15982852.471176104.376976157.99845995.79106934.08485862.165730
9/30/1643.32911335.084381140.86662320.37597566.83114656.75933836.67602948.09201180.47258813.468453...133.28678988.293922128.27000464.15998150.520889103.983254146.75862193.97860034.40819260.705921
10/31/1645.18808435.755188129.14561519.99880864.88513953.40343534.57572646.51324876.39307413.390602...134.55300994.629646130.99000565.25225149.52241596.531174154.35386791.15385434.44485963.278843
11/30/1650.31686441.994656144.17655921.16637265.26509155.64979630.28176146.77066468.00120515.432062...151.32847689.817619118.41999861.06963754.34543696.875198171.58265797.20290432.51667868.633064
12/31/1650.31686441.994656144.17655921.16637265.26509155.64979630.28176146.77066468.00120515.432062...151.32847689.817619118.41999861.06963754.34543696.875198171.58265797.20290432.51667868.633064
1/31/1751.76005641.156464148.32370023.25107262.28830756.80997833.91693544.52139771.22750115.839879...154.94155998.024269130.32000765.21118951.76738799.930870186.17234882.62709034.37582073.078163
2/28/1757.05255940.795933163.68885824.48131066.19883060.36575732.00981145.36028375.80923515.769750...158.076721101.277916135.53999371.34933553.554459108.101776209.72703574.12424536.04667376.599075
3/31/1757.56435445.776936159.79965224.70533067.76677758.65066530.85992247.94607975.88351416.539112...157.351578102.119156142.05000371.71392854.985832108.752106192.72946276.73387136.16537575.690155
4/30/1757.56435445.776936159.79965224.70533067.76677758.65066530.85992247.94607975.88351416.539112...157.351578102.119156142.05000371.71392854.985832108.752106192.72946276.73387136.16537575.690155
5/31/1764.66293355.314182150.15945425.88984574.39112960.09985431.97410846.92557979.38758915.945264...168.068070108.339951151.46000773.47953060.148254115.362129189.04425063.74119638.16408973.916206
6/30/1764.17096753.715290161.88134824.77678771.62749559.59332330.37112050.66065683.59810616.367468...178.626968100.914902150.97999670.92141755.136703118.507919179.72764669.86129836.96771680.929298
7/31/1765.55944154.661610181.37231525.50977775.70670359.39806034.85318054.69767479.50740116.716854...184.78288398.978752169.25000071.36586851.042339128.198517198.98832771.61256437.58872682.189453
8/31/1771.09661150.838856172.64273127.05493574.35429459.37945935.95025655.29575776.33544216.233086...191.61314499.216187171.97000173.21833052.108620130.917969207.16548283.19931039.63835183.028412
9/30/1771.09661150.838856172.64273127.05493574.35429459.37945935.95025655.29575776.33544216.233086...191.61314499.216187171.97000173.21833052.108620130.917969207.16548283.19931039.63835183.028412
10/31/1776.73799952.756458182.22802727.01839483.15450351.59529133.97257662.12649276.69397017.714226...203.286987100.407692180.05999873.51911252.089626139.103470225.43621885.13434640.41156892.467964
11/30/1780.61180156.177425194.32872027.65818892.60238651.76387834.75236565.07894978.22747017.922523...221.389969105.528229177.17999374.73292555.211117148.679840234.70964090.57959042.13976794.587990
12/31/1780.61180156.177425194.32872027.65818892.60238651.76387834.75236565.07894978.22747017.922523...221.389969105.528229177.17999374.73292555.211117148.679840234.70964090.57959042.13976794.587990
1/31/1883.65775369.232704195.26773125.971605102.06147855.96341338.13926372.87200982.27169018.989470...229.744095104.957459186.88999958.04561654.246693158.443603230.698532109.34848037.45037196.563484
2/28/1886.17044168.645195185.51400825.19129486.17780351.21242135.96444766.97148176.52446016.977100...219.43969794.105843178.32000756.24474054.819340163.860092255.141953101.24610136.41400994.727425
3/31/1886.17044168.645195185.51400825.19129486.17780351.21242135.96444766.97148176.52446016.977100...219.43969794.105843178.32000756.24474054.819340163.860092255.141953101.24610136.41400994.727425
4/30/1886.78114372.989883161.51159723.58947985.19873856.09073637.12444373.11548677.19800618.089184...230.13485788.053032172.00000061.40950455.270565159.264770236.834793105.56369040.78401296.292183
5/31/1877.56075365.092903156.31251524.59642479.99781856.71957836.78428373.37767083.16151420.003532...235.10943686.851974191.77999958.26030454.691010167.914017215.974136129.32873539.33117795.853394
6/30/1877.56075365.092903156.31251524.59642479.99781856.71957836.78428373.37767083.16151420.003532...235.10943686.851974191.77999958.26030454.691010167.914017215.974136129.32873539.33117795.853394
7/31/1882.67260771.996803157.04864526.80850286.48177363.24529634.78462283.72770787.43692819.551176...247.38107394.732704172.58000263.05078150.560478168.455444227.677994130.35580441.12384097.391411
8/31/1888.86766876.343651143.66337626.41962893.44718965.85691129.42657783.78228093.42561320.102041...262.26965397.664635175.72999662.19913551.942581175.698608239.533402128.26013240.999428103.713257
9/30/1888.86766876.343651143.66337626.41962893.44718965.85691129.42657783.78228093.42561320.102041...262.26965397.664635175.72999662.19913551.942581175.698608239.533402128.26013240.999428103.713257
10/31/1871.20167567.712379111.77207925.67808997.75592871.15911929.46146675.77589487.48067518.013945...256.185089104.106316151.78999366.26256656.626644143.582916214.068207125.74157041.451687100.895607
11/30/1861.63056662.336689109.55844126.89323095.19213176.69832630.81448474.32219794.98987617.910254...276.680908105.929520140.61000152.82670265.186462157.463242212.000534108.07508143.775990110.265244
12/31/1852.13723851.49493496.07069427.10446091.30091974.38368233.29081365.66993789.09342215.902760...244.977097104.834038131.08999654.80021362.919781138.625458187.219574100.99131040.74763993.617920
1/31/1962.87455457.601208103.47514329.68720893.92773472.45620032.77198877.48021786.57616417.228785...265.706543103.777664166.69000254.99327566.573822156.908905203.097473113.36875143.245396101.278946
2/28/1964.58074266.935638108.39637029.20735997.02499479.13427032.78159380.41667288.64286818.707445...238.191849108.968254161.44999757.81195569.003349171.875061206.814835122.18327344.606846106.249206
3/31/1964.58074266.935638108.39637029.20735997.02499479.13427032.78159380.41667288.64286818.707445...238.191849108.968254161.44999757.81195569.003349171.875061206.814835122.18327344.606846106.249206
4/30/1964.65377872.870277109.69185630.040749101.34094277.14263930.71038887.46104487.46434018.549736...230.068802122.919106193.39999462.15393476.290642195.206070219.821610129.08400046.279095116.017158
5/31/1946.75449861.37320383.18335027.828625100.49236377.63269032.71753780.55620691.17723117.460276...238.686386130.636734177.47000157.86543775.046150182.045792203.410919103.13573546.504463113.523231
6/30/1946.75449861.37320383.18335027.828625100.49236377.63269032.71753780.55620691.17723117.460276...238.686386130.636734177.47000157.86543775.046150182.045792203.410919103.13573546.504463113.523231
7/31/1955.09658875.52273685.13838228.386372109.34884681.88065336.25666086.499443100.94708216.956413...246.892044150.218384194.22999673.31494193.427818213.362274226.397797102.86630348.888660123.468193
8/31/1955.09658875.52273685.13838228.386372109.34884681.88065336.25666086.499443100.94708216.956413...246.892044150.218384194.22999673.31494193.427818213.362274226.397797102.86630348.888660123.468193
9/30/1929.32919768.58316883.04402229.837587118.15004783.60671237.78518788.517586108.10444617.060812...216.487717154.186569178.08000274.78030487.572060204.372528210.91532994.91496353.220940117.422356
10/31/1927.50979271.40642579.58676128.740181116.73638986.06982439.58875781.853157108.38311816.172741...251.732208146.108658191.64999462.36649783.749084220.197098224.72805895.50152652.996922116.874901
11/30/1927.50979271.40642579.58676128.740181116.73638986.06982439.58875781.853157108.38311816.172741...251.732208146.108658191.64999462.36649783.749084220.197098224.72805895.50152652.996922116.874901
12/31/1937.59000087.80000384.73999827.270000118.83999690.94999743.45000199.660004113.44999718.549999...293.980011146.979996205.25000075.41000487.512138237.410004250.880005117.22000154.368046124.059998
\n", - "

58 rows × 100 columns

\n", - "
" - ], - "text/plain": [ - " DXC BBY AMG CNP WMT MRK \\\n", - "Date \n", - "3/31/15 22.128880 33.179913 209.090057 16.580273 73.015411 49.780846 \n", - "4/30/15 21.847523 30.422970 220.139389 17.035191 69.286972 51.582237 \n", - "5/31/15 21.847523 30.422970 220.139389 17.035191 69.286972 51.582237 \n", - "6/30/15 22.407070 28.825178 212.808884 15.652534 63.363731 49.679543 \n", - "7/31/15 22.335381 28.542316 202.392349 15.907512 64.301750 51.451008 \n", - "8/31/15 21.161091 32.475834 181.500885 15.513625 58.219959 46.991810 \n", - "9/30/15 21.115461 33.015205 166.460159 15.030388 58.318901 43.470867 \n", - "10/31/15 21.115461 33.015205 166.460159 15.030388 58.318901 43.470867 \n", - "11/30/15 25.582476 28.265713 172.534851 14.324827 52.922333 46.657028 \n", - "12/31/15 26.815847 27.285814 155.527679 15.516447 55.596737 46.891552 \n", - "1/31/16 26.815847 27.285814 155.527679 15.516447 55.596737 46.891552 \n", - "2/29/16 23.640289 29.024221 135.015884 15.966754 60.167824 44.574501 \n", - "3/31/16 28.219004 29.314409 158.097717 17.929384 62.577663 47.382389 \n", - "4/30/16 28.219004 29.314409 158.097717 17.929384 62.577663 47.382389 \n", - "5/31/16 40.562363 29.070423 168.923142 19.537806 65.143456 50.382408 \n", - "6/30/16 41.059937 27.911333 137.040772 20.812576 67.205070 52.012524 \n", - "7/31/16 41.059937 27.911333 137.040772 20.812576 67.205070 52.012524 \n", - "8/31/16 39.038528 35.098957 138.286850 19.709345 66.201012 56.689236 \n", - "9/30/16 43.329113 35.084381 140.866623 20.375975 66.831146 56.759338 \n", - "10/31/16 45.188084 35.755188 129.145615 19.998808 64.885139 53.403435 \n", - "11/30/16 50.316864 41.994656 144.176559 21.166372 65.265091 55.649796 \n", - "12/31/16 50.316864 41.994656 144.176559 21.166372 65.265091 55.649796 \n", - "1/31/17 51.760056 41.156464 148.323700 23.251072 62.288307 56.809978 \n", - "2/28/17 57.052559 40.795933 163.688858 24.481310 66.198830 60.365757 \n", - "3/31/17 57.564354 45.776936 159.799652 24.705330 67.766777 58.650665 \n", - "4/30/17 57.564354 45.776936 159.799652 24.705330 67.766777 58.650665 \n", - "5/31/17 64.662933 55.314182 150.159454 25.889845 74.391129 60.099854 \n", - "6/30/17 64.170967 53.715290 161.881348 24.776787 71.627495 59.593323 \n", - "7/31/17 65.559441 54.661610 181.372315 25.509777 75.706703 59.398060 \n", - "8/31/17 71.096611 50.838856 172.642731 27.054935 74.354294 59.379459 \n", - "9/30/17 71.096611 50.838856 172.642731 27.054935 74.354294 59.379459 \n", - "10/31/17 76.737999 52.756458 182.228027 27.018394 83.154503 51.595291 \n", - "11/30/17 80.611801 56.177425 194.328720 27.658188 92.602386 51.763878 \n", - "12/31/17 80.611801 56.177425 194.328720 27.658188 92.602386 51.763878 \n", - "1/31/18 83.657753 69.232704 195.267731 25.971605 102.061478 55.963413 \n", - "2/28/18 86.170441 68.645195 185.514008 25.191294 86.177803 51.212421 \n", - "3/31/18 86.170441 68.645195 185.514008 25.191294 86.177803 51.212421 \n", - "4/30/18 86.781143 72.989883 161.511597 23.589479 85.198738 56.090736 \n", - "5/31/18 77.560753 65.092903 156.312515 24.596424 79.997818 56.719578 \n", - "6/30/18 77.560753 65.092903 156.312515 24.596424 79.997818 56.719578 \n", - "7/31/18 82.672607 71.996803 157.048645 26.808502 86.481773 63.245296 \n", - "8/31/18 88.867668 76.343651 143.663376 26.419628 93.447189 65.856911 \n", - "9/30/18 88.867668 76.343651 143.663376 26.419628 93.447189 65.856911 \n", - "10/31/18 71.201675 67.712379 111.772079 25.678089 97.755928 71.159119 \n", - "11/30/18 61.630566 62.336689 109.558441 26.893230 95.192131 76.698326 \n", - "12/31/18 52.137238 51.494934 96.070694 27.104460 91.300919 74.383682 \n", - "1/31/19 62.874554 57.601208 103.475143 29.687208 93.927734 72.456200 \n", - "2/28/19 64.580742 66.935638 108.396370 29.207359 97.024994 79.134270 \n", - "3/31/19 64.580742 66.935638 108.396370 29.207359 97.024994 79.134270 \n", - "4/30/19 64.653778 72.870277 109.691856 30.040749 101.340942 77.142639 \n", - "5/31/19 46.754498 61.373203 83.183350 27.828625 100.492363 77.632690 \n", - "6/30/19 46.754498 61.373203 83.183350 27.828625 100.492363 77.632690 \n", - "7/31/19 55.096588 75.522736 85.138382 28.386372 109.348846 81.880653 \n", - "8/31/19 55.096588 75.522736 85.138382 28.386372 109.348846 81.880653 \n", - "9/30/19 29.329197 68.583168 83.044022 29.837587 118.150047 83.606712 \n", - "10/31/19 27.509792 71.406425 79.586761 28.740181 116.736389 86.069824 \n", - "11/30/19 27.509792 71.406425 79.586761 28.740181 116.736389 86.069824 \n", - "12/31/19 37.590000 87.800003 84.739998 27.270000 118.839996 90.949997 \n", - "\n", - " NEM VFC MDT HST ... UNH \\\n", - "Date ... \n", - "3/31/15 20.141970 62.421577 70.460373 16.215014 ... 109.714111 \n", - "4/30/15 24.576731 60.034454 67.262138 16.182875 ... 103.323639 \n", - "5/31/15 24.576731 60.034454 67.262138 16.182875 ... 103.323639 \n", - "6/30/15 21.693781 58.084694 67.285637 16.092331 ... 113.634422 \n", - "7/31/15 15.945307 64.206329 71.181107 15.727145 ... 113.075554 \n", - "8/31/15 15.852435 60.325130 65.642090 14.388148 ... 107.766403 \n", - "9/30/15 14.947566 57.081448 61.115185 12.989917 ... 108.522560 \n", - "10/31/15 14.947566 57.081448 61.115185 12.989917 ... 108.522560 \n", - "11/30/15 17.124123 54.144100 68.784248 13.639001 ... 105.435532 \n", - "12/31/15 16.755075 52.416546 70.576515 12.765546 ... 110.522690 \n", - "1/31/16 16.755075 52.416546 70.576515 12.765546 ... 110.522690 \n", - "2/29/16 24.056902 54.824753 71.007759 12.740582 ... 111.894348 \n", - "3/31/16 24.778769 54.855011 69.164337 14.069514 ... 121.601227 \n", - "4/30/16 24.778769 54.855011 69.164337 14.069514 ... 121.601227 \n", - "5/31/16 30.213682 52.788200 74.217926 12.974280 ... 126.101135 \n", - "6/30/16 36.494720 52.412842 80.018494 13.843898 ... 133.811340 \n", - "7/31/16 36.494720 52.412842 80.018494 13.843898 ... 133.811340 \n", - "8/31/16 35.673771 52.890171 80.656677 15.218894 ... 128.930832 \n", - "9/30/16 36.676029 48.092011 80.472588 13.468453 ... 133.286789 \n", - "10/31/16 34.575726 46.513248 76.393074 13.390602 ... 134.553009 \n", - "11/30/16 30.281761 46.770664 68.001205 15.432062 ... 151.328476 \n", - "12/31/16 30.281761 46.770664 68.001205 15.432062 ... 151.328476 \n", - "1/31/17 33.916935 44.521397 71.227501 15.839879 ... 154.941559 \n", - "2/28/17 32.009811 45.360283 75.809235 15.769750 ... 158.076721 \n", - "3/31/17 30.859922 47.946079 75.883514 16.539112 ... 157.351578 \n", - "4/30/17 30.859922 47.946079 75.883514 16.539112 ... 157.351578 \n", - "5/31/17 31.974108 46.925579 79.387589 15.945264 ... 168.068070 \n", - "6/30/17 30.371120 50.660656 83.598106 16.367468 ... 178.626968 \n", - "7/31/17 34.853180 54.697674 79.507401 16.716854 ... 184.782883 \n", - "8/31/17 35.950256 55.295757 76.335442 16.233086 ... 191.613144 \n", - "9/30/17 35.950256 55.295757 76.335442 16.233086 ... 191.613144 \n", - "10/31/17 33.972576 62.126492 76.693970 17.714226 ... 203.286987 \n", - "11/30/17 34.752365 65.078949 78.227470 17.922523 ... 221.389969 \n", - "12/31/17 34.752365 65.078949 78.227470 17.922523 ... 221.389969 \n", - "1/31/18 38.139263 72.872009 82.271690 18.989470 ... 229.744095 \n", - "2/28/18 35.964447 66.971481 76.524460 16.977100 ... 219.439697 \n", - "3/31/18 35.964447 66.971481 76.524460 16.977100 ... 219.439697 \n", - "4/30/18 37.124443 73.115486 77.198006 18.089184 ... 230.134857 \n", - "5/31/18 36.784283 73.377670 83.161514 20.003532 ... 235.109436 \n", - "6/30/18 36.784283 73.377670 83.161514 20.003532 ... 235.109436 \n", - "7/31/18 34.784622 83.727707 87.436928 19.551176 ... 247.381073 \n", - "8/31/18 29.426577 83.782280 93.425613 20.102041 ... 262.269653 \n", - "9/30/18 29.426577 83.782280 93.425613 20.102041 ... 262.269653 \n", - "10/31/18 29.461466 75.775894 87.480675 18.013945 ... 256.185089 \n", - "11/30/18 30.814484 74.322197 94.989876 17.910254 ... 276.680908 \n", - "12/31/18 33.290813 65.669937 89.093422 15.902760 ... 244.977097 \n", - "1/31/19 32.771988 77.480217 86.576164 17.228785 ... 265.706543 \n", - "2/28/19 32.781593 80.416672 88.642868 18.707445 ... 238.191849 \n", - "3/31/19 32.781593 80.416672 88.642868 18.707445 ... 238.191849 \n", - "4/30/19 30.710388 87.461044 87.464340 18.549736 ... 230.068802 \n", - "5/31/19 32.717537 80.556206 91.177231 17.460276 ... 238.686386 \n", - "6/30/19 32.717537 80.556206 91.177231 17.460276 ... 238.686386 \n", - "7/31/19 36.256660 86.499443 100.947082 16.956413 ... 246.892044 \n", - "8/31/19 36.256660 86.499443 100.947082 16.956413 ... 246.892044 \n", - "9/30/19 37.785187 88.517586 108.104446 17.060812 ... 216.487717 \n", - "10/31/19 39.588757 81.853157 108.383118 16.172741 ... 251.732208 \n", - "11/30/19 39.588757 81.853157 108.383118 16.172741 ... 251.732208 \n", - "12/31/19 43.450001 99.660004 113.449997 18.549999 ... 293.980011 \n", - "\n", - " HSY FB EIX SBUX MCO \\\n", - "Date \n", - "3/31/15 89.785667 82.220001 53.208439 43.336098 97.564026 \n", - "4/30/15 81.786682 78.769997 51.905262 45.377064 101.060547 \n", - "5/31/15 81.786682 78.769997 51.905262 45.377064 101.060547 \n", - "6/30/15 79.484596 85.769997 47.695503 49.230713 101.788795 \n", - "7/31/15 83.117447 94.010002 51.497070 53.187904 104.117599 \n", - "8/31/15 80.615135 89.430000 50.184113 50.369987 96.757385 \n", - "9/30/15 82.740372 89.900002 54.487957 52.331020 92.870461 \n", - "10/31/15 82.740372 89.900002 54.487957 52.331020 92.870461 \n", - "11/30/15 78.263832 104.239998 51.282780 56.703079 97.852180 \n", - "12/31/15 80.947891 104.660004 51.562756 55.446911 95.214180 \n", - "1/31/16 80.947891 104.660004 51.562756 55.446911 95.214180 \n", - "2/29/16 82.952133 106.919998 59.356838 53.941563 84.637756 \n", - "3/31/16 84.047325 114.099999 63.029285 55.322311 92.034012 \n", - "4/30/16 84.047325 114.099999 63.029285 55.322311 92.034012 \n", - "5/31/16 85.288765 118.809998 62.801308 51.042995 94.389252 \n", - "6/30/16 104.247917 114.279999 68.527138 53.116703 89.671700 \n", - "7/31/16 104.247917 114.279999 68.527138 53.116703 89.671700 \n", - "8/31/16 92.256035 126.120003 64.159828 52.471176 104.376976 \n", - "9/30/16 88.293922 128.270004 64.159981 50.520889 103.983254 \n", - "10/31/16 94.629646 130.990005 65.252251 49.522415 96.531174 \n", - "11/30/16 89.817619 118.419998 61.069637 54.345436 96.875198 \n", - "12/31/16 89.817619 118.419998 61.069637 54.345436 96.875198 \n", - "1/31/17 98.024269 130.320007 65.211189 51.767387 99.930870 \n", - "2/28/17 101.277916 135.539993 71.349335 53.554459 108.101776 \n", - "3/31/17 102.119156 142.050003 71.713928 54.985832 108.752106 \n", - "4/30/17 102.119156 142.050003 71.713928 54.985832 108.752106 \n", - "5/31/17 108.339951 151.460007 73.479530 60.148254 115.362129 \n", - "6/30/17 100.914902 150.979996 70.921417 55.136703 118.507919 \n", - "7/31/17 98.978752 169.250000 71.365868 51.042339 128.198517 \n", - "8/31/17 99.216187 171.970001 73.218330 52.108620 130.917969 \n", - "9/30/17 99.216187 171.970001 73.218330 52.108620 130.917969 \n", - "10/31/17 100.407692 180.059998 73.519112 52.089626 139.103470 \n", - "11/30/17 105.528229 177.179993 74.732925 55.211117 148.679840 \n", - "12/31/17 105.528229 177.179993 74.732925 55.211117 148.679840 \n", - "1/31/18 104.957459 186.889999 58.045616 54.246693 158.443603 \n", - "2/28/18 94.105843 178.320007 56.244740 54.819340 163.860092 \n", - "3/31/18 94.105843 178.320007 56.244740 54.819340 163.860092 \n", - "4/30/18 88.053032 172.000000 61.409504 55.270565 159.264770 \n", - "5/31/18 86.851974 191.779999 58.260304 54.691010 167.914017 \n", - "6/30/18 86.851974 191.779999 58.260304 54.691010 167.914017 \n", - "7/31/18 94.732704 172.580002 63.050781 50.560478 168.455444 \n", - "8/31/18 97.664635 175.729996 62.199135 51.942581 175.698608 \n", - "9/30/18 97.664635 175.729996 62.199135 51.942581 175.698608 \n", - "10/31/18 104.106316 151.789993 66.262566 56.626644 143.582916 \n", - "11/30/18 105.929520 140.610001 52.826702 65.186462 157.463242 \n", - "12/31/18 104.834038 131.089996 54.800213 62.919781 138.625458 \n", - "1/31/19 103.777664 166.690002 54.993275 66.573822 156.908905 \n", - "2/28/19 108.968254 161.449997 57.811955 69.003349 171.875061 \n", - "3/31/19 108.968254 161.449997 57.811955 69.003349 171.875061 \n", - "4/30/19 122.919106 193.399994 62.153934 76.290642 195.206070 \n", - "5/31/19 130.636734 177.470001 57.865437 75.046150 182.045792 \n", - "6/30/19 130.636734 177.470001 57.865437 75.046150 182.045792 \n", - "7/31/19 150.218384 194.229996 73.314941 93.427818 213.362274 \n", - "8/31/19 150.218384 194.229996 73.314941 93.427818 213.362274 \n", - "9/30/19 154.186569 178.080002 74.780304 87.572060 204.372528 \n", - "10/31/19 146.108658 191.649994 62.366497 83.749084 220.197098 \n", - "11/30/19 146.108658 191.649994 62.366497 83.749084 220.197098 \n", - "12/31/19 146.979996 205.250000 75.410004 87.512138 237.410004 \n", - "\n", - " HII RL LNT AXP \n", - "Date \n", - "3/31/15 131.290314 118.733910 26.846176 72.461044 \n", - "4/30/15 123.271454 120.458458 25.997549 71.839569 \n", - "5/31/15 123.271454 120.458458 25.997549 71.839569 \n", - "6/30/15 105.818543 119.940102 24.815250 72.359734 \n", - "7/31/15 110.348679 114.077202 26.687109 70.814239 \n", - "8/31/15 106.214287 100.756577 24.587204 71.428711 \n", - "9/30/15 101.091324 107.559921 25.376841 69.017326 \n", - "10/31/15 101.091324 107.559921 25.376841 69.017326 \n", - "11/30/15 123.981049 113.067169 26.354477 66.951530 \n", - "12/31/15 120.126739 101.939995 27.344021 64.998291 \n", - "1/31/16 120.126739 101.939995 27.344021 64.998291 \n", - "2/29/16 124.113609 82.993134 30.032972 52.169907 \n", - "3/31/16 130.172043 88.480911 32.830753 57.632820 \n", - "4/30/16 130.172043 88.480911 32.830753 57.632820 \n", - "5/31/16 146.310715 86.706879 33.032482 62.024155 \n", - "6/30/16 160.254120 82.848854 35.395138 57.596676 \n", - "7/31/16 160.254120 82.848854 35.395138 57.596676 \n", - "8/31/16 157.998459 95.791069 34.084858 62.165730 \n", - "9/30/16 146.758621 93.978600 34.408192 60.705921 \n", - "10/31/16 154.353867 91.153854 34.444859 63.278843 \n", - "11/30/16 171.582657 97.202904 32.516678 68.633064 \n", - "12/31/16 171.582657 97.202904 32.516678 68.633064 \n", - "1/31/17 186.172348 82.627090 34.375820 73.078163 \n", - "2/28/17 209.727035 74.124245 36.046673 76.599075 \n", - "3/31/17 192.729462 76.733871 36.165375 75.690155 \n", - "4/30/17 192.729462 76.733871 36.165375 75.690155 \n", - "5/31/17 189.044250 63.741196 38.164089 73.916206 \n", - "6/30/17 179.727646 69.861298 36.967716 80.929298 \n", - "7/31/17 198.988327 71.612564 37.588726 82.189453 \n", - "8/31/17 207.165482 83.199310 39.638351 83.028412 \n", - "9/30/17 207.165482 83.199310 39.638351 83.028412 \n", - "10/31/17 225.436218 85.134346 40.411568 92.467964 \n", - "11/30/17 234.709640 90.579590 42.139767 94.587990 \n", - "12/31/17 234.709640 90.579590 42.139767 94.587990 \n", - "1/31/18 230.698532 109.348480 37.450371 96.563484 \n", - "2/28/18 255.141953 101.246101 36.414009 94.727425 \n", - "3/31/18 255.141953 101.246101 36.414009 94.727425 \n", - "4/30/18 236.834793 105.563690 40.784012 96.292183 \n", - "5/31/18 215.974136 129.328735 39.331177 95.853394 \n", - "6/30/18 215.974136 129.328735 39.331177 95.853394 \n", - "7/31/18 227.677994 130.355804 41.123840 97.391411 \n", - "8/31/18 239.533402 128.260132 40.999428 103.713257 \n", - "9/30/18 239.533402 128.260132 40.999428 103.713257 \n", - "10/31/18 214.068207 125.741570 41.451687 100.895607 \n", - "11/30/18 212.000534 108.075081 43.775990 110.265244 \n", - "12/31/18 187.219574 100.991310 40.747639 93.617920 \n", - "1/31/19 203.097473 113.368751 43.245396 101.278946 \n", - "2/28/19 206.814835 122.183273 44.606846 106.249206 \n", - "3/31/19 206.814835 122.183273 44.606846 106.249206 \n", - "4/30/19 219.821610 129.084000 46.279095 116.017158 \n", - "5/31/19 203.410919 103.135735 46.504463 113.523231 \n", - "6/30/19 203.410919 103.135735 46.504463 113.523231 \n", - "7/31/19 226.397797 102.866303 48.888660 123.468193 \n", - "8/31/19 226.397797 102.866303 48.888660 123.468193 \n", - "9/30/19 210.915329 94.914963 53.220940 117.422356 \n", - "10/31/19 224.728058 95.501526 52.996922 116.874901 \n", - "11/30/19 224.728058 95.501526 52.996922 116.874901 \n", - "12/31/19 250.880005 117.220001 54.368046 124.059998 \n", - "\n", - "[58 rows x 100 columns]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" + "ename": "NameError", + "evalue": "name 'Path' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mcsv_path\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mPath\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'monthly_data.csv'\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 2\u001b[0m \u001b[0mmonthly_df\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcsv_path\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindex_col\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"Date\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mmonthly_df\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'Path' is not defined" + ] } ], "source": [ @@ -1902,7 +195,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.4" + "version": "3.7.5" } }, "nbformat": 4, From cdf05a7315ebd5179b5dc6e2bf3e338954aa121c Mon Sep 17 00:00:00 2001 From: Kitas91 Date: Tue, 18 Feb 2020 10:37:34 -0500 Subject: [PATCH 2/3] monte carlo --- .../monte_carlo_simulation-checkpoint.ipynb | 41 ++++++++++++++++--- monte_carlo_simulation.ipynb | 41 ++++++++++++++++--- 2 files changed, 72 insertions(+), 10 deletions(-) diff --git a/.ipynb_checkpoints/monte_carlo_simulation-checkpoint.ipynb b/.ipynb_checkpoints/monte_carlo_simulation-checkpoint.ipynb index 279c319..5a2e5ce 100644 --- a/.ipynb_checkpoints/monte_carlo_simulation-checkpoint.ipynb +++ b/.ipynb_checkpoints/monte_carlo_simulation-checkpoint.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -16,14 +16,45 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "csv_path = Path('monthly_data.csv')\n", "monthly_df = pd.read_csv(csv_path, index_col = \"Date\")\n", - "#monthly_df.pct_change()\n", - "#monthly_df.dropna(inplace = True)" + "#returns = monthly_df.pct_change()\n", + "#returns.dropna(inplace = True)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "#returns.isnull().sum()/len(returns)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'DataFrame' object has no attribute 'concat'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mefficient_p\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmonthly_df\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconcat\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[0m", + "\u001b[0;32m/opt/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36m__getattr__\u001b[0;34m(self, name)\u001b[0m\n\u001b[1;32m 5177\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_info_axis\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_can_hold_identifiers_and_holds_name\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[1;32m 5178\u001b[0m \u001b[0;32mreturn\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[0m\n\u001b[0;32m-> 5179\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mobject\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__getattribute__\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[0m\n\u001b[0m\u001b[1;32m 5180\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5181\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__setattr__\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[0mvalue\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;31mAttributeError\u001b[0m: 'DataFrame' object has no attribute 'concat'" + ] + } + ], + "source": [ + "#portfolio = monthly_df.concat([])" ] }, { @@ -33,7 +64,7 @@ "outputs": [], "source": [ "# weight = [] This will have to come from the portfolio efficiency\n", - "# ticker = []\n", + "# ticker = [] This will come from the \n", "portfolio_return = stock_df.dot(weights).to_frame()\n", "portfolio_return.columns = [\"weight\", \"ticker\"]\n", "portfolio_return.head()" diff --git a/monte_carlo_simulation.ipynb b/monte_carlo_simulation.ipynb index 279c319..5a2e5ce 100644 --- a/monte_carlo_simulation.ipynb +++ b/monte_carlo_simulation.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -16,14 +16,45 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "csv_path = Path('monthly_data.csv')\n", "monthly_df = pd.read_csv(csv_path, index_col = \"Date\")\n", - "#monthly_df.pct_change()\n", - "#monthly_df.dropna(inplace = True)" + "#returns = monthly_df.pct_change()\n", + "#returns.dropna(inplace = True)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "#returns.isnull().sum()/len(returns)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'DataFrame' object has no attribute 'concat'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mefficient_p\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmonthly_df\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconcat\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[0m", + "\u001b[0;32m/opt/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36m__getattr__\u001b[0;34m(self, name)\u001b[0m\n\u001b[1;32m 5177\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_info_axis\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_can_hold_identifiers_and_holds_name\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[1;32m 5178\u001b[0m \u001b[0;32mreturn\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[0m\n\u001b[0;32m-> 5179\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mobject\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__getattribute__\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[0m\n\u001b[0m\u001b[1;32m 5180\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5181\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__setattr__\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[0mvalue\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;31mAttributeError\u001b[0m: 'DataFrame' object has no attribute 'concat'" + ] + } + ], + "source": [ + "#portfolio = monthly_df.concat([])" ] }, { @@ -33,7 +64,7 @@ "outputs": [], "source": [ "# weight = [] This will have to come from the portfolio efficiency\n", - "# ticker = []\n", + "# ticker = [] This will come from the \n", "portfolio_return = stock_df.dot(weights).to_frame()\n", "portfolio_return.columns = [\"weight\", \"ticker\"]\n", "portfolio_return.head()" From e2d3c25694f81e146575ccaa0b8c9b2e3dab3794 Mon Sep 17 00:00:00 2001 From: nicolegoldin Date: Wed, 19 Feb 2020 19:32:40 -0500 Subject: [PATCH 3/3] adding lucas's monte carlo --- monte_carlo_simulation.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monte_carlo_simulation.ipynb b/monte_carlo_simulation.ipynb index 5a2e5ce..9b0626b 100644 --- a/monte_carlo_simulation.ipynb +++ b/monte_carlo_simulation.ipynb @@ -161,7 +161,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.5" + "version": "3.7.4" } }, "nbformat": 4,