diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/1.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/1.png new file mode 100644 index 0000000..b2386bb Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/1.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/2.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/2.png new file mode 100644 index 0000000..17d0cde Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/2.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/3.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/3.png new file mode 100644 index 0000000..26d2dae Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/3.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/4.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/4.png new file mode 100644 index 0000000..feb639d Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/4.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/5.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/5.png new file mode 100644 index 0000000..8ad5cfd Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/5.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/6.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/6.png new file mode 100644 index 0000000..2b1c2ee Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 1/6.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/1.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/1.png new file mode 100644 index 0000000..d33485a Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/1.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/2.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/2.png new file mode 100644 index 0000000..96f8ad9 Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/2.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/3.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/3.png new file mode 100644 index 0000000..37f26a2 Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/3.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/4.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/4.png new file mode 100644 index 0000000..1434c11 Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/4.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/5.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/5.png new file mode 100644 index 0000000..08feb07 Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/5.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/6.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/6.png new file mode 100644 index 0000000..7217908 Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 2/6.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 3/1.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 3/1.png new file mode 100644 index 0000000..b61b550 Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 3/1.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 3/2.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 3/2.png new file mode 100644 index 0000000..0826990 Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 3/2.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 3/3.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 3/3.png new file mode 100644 index 0000000..6cdc3c9 Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 3/3.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 3/5.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 3/5.png new file mode 100644 index 0000000..280f6c2 Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 3/5.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 3/6.png b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 3/6.png new file mode 100644 index 0000000..92ec3e6 Binary files /dev/null and b/Overview of Advanced Methods of Reinforcement Learning in Finance/Assignment 3/6.png differ diff --git a/Overview of Advanced Methods of Reinforcement Learning in Finance/Course4_QED_model.ipynb b/Overview of Advanced Methods of Reinforcement Learning in Finance/Course4_QED_model.ipynb new file mode 100644 index 0000000..fea876a --- /dev/null +++ b/Overview of Advanced Methods of Reinforcement Learning in Finance/Course4_QED_model.ipynb @@ -0,0 +1,1184 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Econometric estimation of an IRL-based market portfolio model. Part II: QED\n", + "\n", + "Welcome to your final course project on Advanced Topic RL in Finance. In this project you will: \n", + "\n", + "- Explore and estimate an IRL-based model of market returns (the \"QED\" model) that is obtained by a generalization of a model that you analyzed in the previous course\n", + "- Respectively, you are expected to re-utilize parts of your previous code from the course project from Course 3: RL (but you can also start from scratch - the template provided here is nearly identical to the one offered to you in course 3)\n", + "- Investige the role of non-linearities in price dynamics\n", + "- Investigate the role and impact of choices of different signals on model estimation and trading strategies\n", + " \n", + "\n", + "**Instructions for project structure and grading principles :**\n", + "\n", + "- This is a project that will be graded based on a peer-to-peer review. The project consists of four parts. The maximum score for each part is 10, so that maximum score you can give your peers (and they can give you) is 40. The parts are as follows (more detailed instructions are in specific cells below):\n", + "\n", + "- **Part 1**: Estimate the model using the DJI portfolio of 30 stocks, first without signals, and then using simple signals such as simple moving averages constructed below (Max 10 point).\n", + "\n", + "- **Part 2**: Explore the implications of calibrated model parameters for default probabilities of stocks in your portfolio. Present your conclusions and observations. (Max 10 point).\n", + "\n", + "- **Part 3**: Experiment with other signals and investigate the impact on model calibration obtained with alternative signals. Present your conclusions and observations. (Max 10 points).\n", + "\n", + "- **Part 4** : Show me something else. This part is optional. Come up with your own idea of an interesting analysis.\n", + "For example, you can repeat your analysis for the S&P portfolio.\n", + "Or maybe you can build a strategy using an optimal market-implied policy estimated from this model, and compare it with PCA and absorption ratio strategies that we built in Course 2. Or anything else. (Max 10 points).\n", + "\n", + "**Instructions for formatting your notebook and packages use can use **\n", + "\n", + "- Use one or more cells of the notebook for each section of the project. Each section is marked by a header cell below. Insert your cells between them without changing the sequence. \n", + "\n", + "- Think of an optimal presentation of your results and conclusions. Think of how hard or easy it will be for your fellow students to follow your logic and presentation. When you are grading others, you can add or subtract point for the quality of presentation.\n", + "\n", + "- You will be using Python 3 in this project. Using TensorFlow is encouraged but is not strictly necessary, you can use optimization algorithms available in scipy or scikit-learn packages. If you use any non-standard packages, you should state all neccessary additional imports (or instructions how to install any additional modules you use in a top cell of your notebook. If you create a new portfolio for parts 3 and 4 in the project, make your code for creating your dataset replicable as well, so that your grader can reproduce your code locally on his/her machine. \n", + "\n", + "- Try to write a clean code that can be followed by your peer reviewer. When you are the reviewer, you can add or subtract point for the quality of code. \n", + "\n", + "\n", + "**After completing this project you will:**\n", + "- Get experience with building and estimation of your second IRL based model of market dynamics.\n", + "- Develop intuition and understanding about the role of non-linearities in dynamics model. \n", + "- Develop intuition on whether the same model could be calibrated to both equity and credit data.\n", + "- Be able to implement trading strategies based on this method.\n", + "\n", + "Let's get started!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "help:\n", + "\n", + "https://www.coursera.org/learn/advanced-methods-reinforcement-learning-finance/discussions/weeks/4/threads/dBw8Q7LxEeiTjBLDL4RcNA\n", + "\n", + "\n", + "https://www.coursera.org/learn/advanced-methods-reinforcement-learning-finance/discussions/weeks/4/threads/-8YAn5DDEeimKw6zhoSwxg" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The \"Quantum Equlibrium-Disequlibrium\" (QED) IRL-based model of stock returns\n", + "\n", + "In Week 3 lectures of our course we presented the \"QED\" model\n", + "$$\n", + "d X_t = \\kappa X_t \\left( \\frac{\\theta}{\\kappa} - X_t - \\frac{g}{\\kappa} X_t^2 \\right) dt + X_t \\left( {\\bf w} {\\bf z}_t \\, dt + \\sigma d W_t \\right)\n", + "$$\n", + "\n", + "In this project, you will explore calibration of this model to market data.\n", + "As in the course project for course 3 you analyzed the same model in the limit $ g = 0 $, you would be able to re-utilize parts of your previous code in this project).\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import tensorflow as tf\n", + "\n", + "import matplotlib.pyplot as plt\n", + "from datetime import datetime" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# read the data to a Dataframe\n", + "df_cap = pd.read_csv('dja_cap.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "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", + "
AAPLAXPBACATCSCOCVXDISDWDPGEGS...NKEPFEPGTRVUNHUTXVVZWMTXOM
date
2010-01-041.937537e+11486607954804.082033e+10364607244001.420313e+111.586155e+116.168697e+103.337392e+101.645038e+118.897731e+10...255982485001.527563e+1117857638208027214839130366383960106715591857041337043020945367654402066256275603.272107e+11
2010-01-051.940887e+11485537702704.215727e+10368966340001.413985e+111.597391e+116.153308e+103.486077e+101.653556e+119.055040e+10...257000931001.505775e+1117863481676026570118990365802951606615275184040863360090947072043202045681346803.284884e+11
2010-01-061.910015e+11493386218104.343609e+10370087250401.404781e+111.597591e+116.120609e+103.547838e+101.645038e+118.958393e+10...255434091001.500934e+1117778751390026193121620369405204306580586241040314638280906734841602041109140403.313275e+11
2010-01-071.906484e+11499213146204.519446e+10371581797601.411109e+111.591572e+116.122532e+103.550126e+101.730218e+119.133695e+10...261728727001.495285e+1117682334168026570118990383581811706608712411040689832680901337610402042252192003.302865e+11
2010-01-081.919159e+11498856395504.475850e+10375754075201.418587e+111.594381e+116.132150e+103.562706e+101.767484e+118.960963e+10...261212026401.507389e+1117658960296026531872880379979559006621837957040802391000901905740002031964727603.289615e+11
\n", + "

5 rows × 30 columns

\n", + "
" + ], + "text/plain": [ + " AAPL AXP BA CAT \\\n", + "date \n", + "2010-01-04 1.937537e+11 48660795480 4.082033e+10 36460724400 \n", + "2010-01-05 1.940887e+11 48553770270 4.215727e+10 36896634000 \n", + "2010-01-06 1.910015e+11 49338621810 4.343609e+10 37008725040 \n", + "2010-01-07 1.906484e+11 49921314620 4.519446e+10 37158179760 \n", + "2010-01-08 1.919159e+11 49885639550 4.475850e+10 37575407520 \n", + "\n", + " CSCO CVX DIS DWDP \\\n", + "date \n", + "2010-01-04 1.420313e+11 1.586155e+11 6.168697e+10 3.337392e+10 \n", + "2010-01-05 1.413985e+11 1.597391e+11 6.153308e+10 3.486077e+10 \n", + "2010-01-06 1.404781e+11 1.597591e+11 6.120609e+10 3.547838e+10 \n", + "2010-01-07 1.411109e+11 1.591572e+11 6.122532e+10 3.550126e+10 \n", + "2010-01-08 1.418587e+11 1.594381e+11 6.132150e+10 3.562706e+10 \n", + "\n", + " GE GS ... NKE PFE \\\n", + "date ... \n", + "2010-01-04 1.645038e+11 8.897731e+10 ... 25598248500 1.527563e+11 \n", + "2010-01-05 1.653556e+11 9.055040e+10 ... 25700093100 1.505775e+11 \n", + "2010-01-06 1.645038e+11 8.958393e+10 ... 25543409100 1.500934e+11 \n", + "2010-01-07 1.730218e+11 9.133695e+10 ... 26172872700 1.495285e+11 \n", + "2010-01-08 1.767484e+11 8.960963e+10 ... 26121202640 1.507389e+11 \n", + "\n", + " PG TRV UNH UTX V \\\n", + "date \n", + "2010-01-04 178576382080 27214839130 36638396010 67155918570 41337043020 \n", + "2010-01-05 178634816760 26570118990 36580295160 66152751840 40863360090 \n", + "2010-01-06 177787513900 26193121620 36940520430 65805862410 40314638280 \n", + "2010-01-07 176823341680 26570118990 38358181170 66087124110 40689832680 \n", + "2010-01-08 176589602960 26531872880 37997955900 66218379570 40802391000 \n", + "\n", + " VZ WMT XOM \n", + "date \n", + "2010-01-04 94536765440 206625627560 3.272107e+11 \n", + "2010-01-05 94707204320 204568134680 3.284884e+11 \n", + "2010-01-06 90673484160 204110914040 3.313275e+11 \n", + "2010-01-07 90133761040 204225219200 3.302865e+11 \n", + "2010-01-08 90190574000 203196472760 3.289615e+11 \n", + "\n", + "[5 rows x 30 columns]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# add dates\n", + "dates = pd.bdate_range(start='2010-01-04', end=None, periods=df_cap.shape[0], freq='B')\n", + "df_cap['date'] = dates\n", + "\n", + "df_cap.set_index('date',inplace=True)\n", + "df_cap.head()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Let us build some signals \n", + "\n", + "Here we provide a \"warm start\" by computing two simple moving average signals that you can use as benchmark in your analysis." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generate moving averages" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Calculating the short-window (10 days) simple moving average\n", + "\n", + "window_1 = 10\n", + "\n", + "short_rolling = df_cap.rolling(window=window_1).mean()\n", + "# short_rolling.head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Calculating the long-window (30 days) simple moving average\n", + "\n", + "window_2 = 30\n", + "long_rolling = df_cap.rolling(window=window_2).mean()\n", + "# long_rolling.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plot three years of AAPL stock:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/xueshan/anaconda3/lib/python3.7/site-packages/pandas/plotting/_converter.py:129: FutureWarning: Using an implicitly registered datetime converter for a matplotlib plotting method. The converter was registered by pandas on import. Future versions of pandas will require you to explicitly register matplotlib converters.\n", + "\n", + "To register the converters:\n", + "\t>>> from pandas.plotting import register_matplotlib_converters\n", + "\t>>> register_matplotlib_converters()\n", + " warnings.warn(msg, FutureWarning)\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "start_date = '2015-01-01'\n", + "end_date = '2017-12-31'\n", + "\n", + "fig = plt.figure(figsize=(10,6))\n", + "ax = fig.add_subplot(1,1,1)\n", + "\n", + "ax.plot(df_cap.loc[start_date:end_date, :].index, df_cap.loc[start_date:end_date, 'AAPL'], label='Cap')\n", + "ax.plot(long_rolling.loc[start_date:end_date, :].index, long_rolling.loc[start_date:end_date, 'AAPL'], \n", + " label = '%d-days SMA' % window_2)\n", + "ax.plot(short_rolling.loc[start_date:end_date, :].index, short_rolling.loc[start_date:end_date, 'AAPL'], \n", + " label = '%d-days SMA' % window_1)\n", + "\n", + "ax.legend(loc='best')\n", + "ax.set_ylabel('Cap in $')\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 1: Model calibration with or without moving average signals (Max 10 points)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To calibrate the model, it is convenient to use the log-prices instead of prices. Diffusion in the log-space \n", + "$ y = \\log x $ is given by the following Langevin equation:\n", + "\n", + "$$\n", + "d y_t = - \\frac{ \\partial V(y)}{\\partial y} dt + \\sigma dW_t , \\; \\; \\; V(y) \\equiv - \\left( \\theta - \\frac{\\sigma^2}{2} + {\\bf w} {\\bf z}_t \\right) y + \\kappa e^y + \\frac{1}{2} g e^{2y}\n", + "$$\n", + "\n", + "where $ W_t $ is a standard Brownian motion.\n", + "In terms of variables $ y = \\log x $, the negative log-likelihood of data is therefore\n", + "\n", + "$$\n", + "LL_M (\\Theta) = - \\log \\prod_{t=0}^{T-1} \n", + "\\frac{1}{ \\sqrt{ 2 \\pi \\sigma^2} } \n", + "\\exp \\left\\{ - \\frac{1}{2 \\sigma^2} \\left( \\frac{ y_{t+ \\Delta t} - y_{t}}{ \\Delta t} + \\frac{ \\partial V(y)}{\\partial y} \n", + "\\right)^2\n", + "\\right\\} , \n", + "$$ \n", + "\n", + "where $ {\\bf y}_t = \\log x_t $ now stands for observed values of log-cap. Note that because the model is Markov, the product over $ t = 0, \\ldots, T-1 $ does not \n", + "necessarily mean a product of transitions along the same trajectory. The negative log-likelihood should be minimized to estimate parameters $ \n", + "\\theta $, $ \\sigma $, $ \\kappa $, $ g $ and $ {\\bf w} $. You can try to estimate the model first without signals, then with signals.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2080, 30)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# utility function to reset the TF graph to the same state each time\n", + "def reset_graph(seed=42):\n", + " # to make results reproducible across runs\n", + " tf.reset_default_graph()\n", + " tf.set_random_seed(seed)\n", + " np.random.seed(seed)\n", + " \n", + "# 30 stocks & 2080 days\n", + "df_cap.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Put the rest of you code and analysis for Part I here \n", + "class QED_MLE_Model:\n", + " \n", + " def __init__(self, ndim, learning_rate):\n", + " # stock assets\n", + " self.x = tf.placeholder(tf.float32, [None, ndim], name = 'x')\n", + " self.y = tf.log(self.x) # dim 0 days dim 1 stocks\n", + " # predictors\n", + " self.z_1 = tf.placeholder(tf.float32, [None, ndim], name='z_1')\n", + " self.z_2 = tf.placeholder(tf.float32, [None, ndim], name='z_2')\n", + " \n", + " # k mean reversion speed\n", + " self.k = tf.Variable(tf.random_uniform([ndim], minval=0.,maxval=1), name='k') + 0.0001\n", + " # variance of each assets(ndim)\n", + " self.sigma = tf.Variable(tf.square(tf.random_uniform([ndim], minval=0., maxval=1))) + 0.0001\n", + " self.theta = tf.Variable(tf.square(tf.random_uniform([ndim], minval=0., maxval=1))) + 0.0001\n", + " self.g = tf.Variable(tf.random_uniform([ndim], minval=0.,maxval=1), name='k') + 0.0001\n", + " \n", + " self.w_1 = tf.random_normal([ndim], mean=0.5, stddev = 0.1)\n", + " self.w_2 = tf.ones([ndim]) - self.w_1\n", + " \n", + " # mean of all stock assets delta is constant zero\n", + " self.mu = tf.zeros([ndim])\n", + " \n", + " self.scale = tf.slice(self.y, [0,0], [1,-1])\n", + "\n", + " self.z = self.scale * tf.cumprod(1 + self.z_1*self.w_1 + self.z_2*self.w_2)\n", + " \n", + " self.v = - tf.multiply((self.theta - tf.square(self.theta)/2.0 + self.z), self.y) + \\\n", + " tf.multiply(self.k, tf.exp(self.y)) + \\\n", + " tf.multiply(self.g, tf.exp(self.y*2))/2.0\n", + " \n", + " # Multivariate Normal Distribution, no need to implement the MLE function\n", + " self.mult_norm_dist = tf.contrib.distributions.MultivariateNormalDiag(loc=self.mu, scale_diag=self.sigma)\n", + " # the log probability of v \n", + " self.log_prob = self.mult_norm_dist.log_prob(self.v)\n", + " # tf.square(self.w_1+self.w_2-0.95) -> paper chapter 7 Experiments \n", + " self.loss = -tf.reduce_sum(self.log_prob)\n", + " \n", + " self.train_step = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(self.loss)\n", + " \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "\n", + "def run_model(model, assets, sig_1, sig_2):\n", + "\n", + " reset_graph()\n", + "\n", + " model = model(assets.shape[1], 0.01)\n", + "\n", + " with tf.Session() as sess:\n", + " sess.run(tf.global_variables_initializer())\n", + "\n", + " for i in range(1100):\n", + " _,loss = sess.run([model.train_step, model.loss], \n", + " feed_dict = {\n", + " model.x: assets,\n", + " model.z_1: sig_1,\n", + " model.z_2: sig_2} )\n", + " \n", + " if i%100 == 0:\n", + " print(\"loss\", loss)\n", + " \n", + " \n", + "\n", + " theta, delta, k, g = sess.run([model.theta, model.sigma, model.k, model.g], feed_dict = { \n", + " model.x: assets, \n", + " \n", + " model.z_1: sig_1, \n", + " model.z_2: sig_2}\n", + " )\n", + " \n", + " print()\n", + " print(\"theta:\", theta)\n", + " print(\"delta:\", delta)\n", + " print(\"k:\", k)\n", + " print(\"g:\", g)\n", + " \n", + " return mean_levels" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loss 182573120000000.0\n", + "loss 727991200.0\n", + "loss 697040640.0\n", + "loss 683100600.0\n", + "loss 671947600.0\n", + "loss 667412200.0\n", + "loss 663714560.0\n", + "loss 658315970.0\n", + "loss 654600900.0\n", + "loss 654437200.0\n", + "loss 650740030.0\n", + "\n", + "theta: [0.999995 0.9999976 0.99812365 0.9999978 0.9999985 0.99999833\n", + " 0.99848914 0.99971706 0.9990651 0.99974763 1. 0.99999815\n", + " 0.999999 0.99957436 0.9991969 0.97185814 1.0000002 0.99828565\n", + " 0.99296236 0.94642043 0.959738 0.9999987 0.9720296 0.99979424\n", + " 0.5718796 0.9983212 0.9999983 0.9999473 0.99974924 0.9999745 ]\n", + "delta: [3.309517 1.7753448 1.490827 2.127008 3.7270079 2.972592\n", + " 1.4456012 0.51459074 2.334206 1.0505652 2.9060168 1.4698379\n", + " 2.9769585 2.1353028 2.620034 0.95785147 3.392444 2.4328341\n", + " 1.5330924 0.1816716 0.7251418 1.9699159 0.78586614 3.3798058\n", + " 0.06016935 0.50767636 2.9002986 3.4537618 3.476372 2.5041633 ]\n", + "k: [5.6854844 4.415414 4.513262 4.9351535 5.878345 4.7603393\n", + " 4.087988 2.4592676 5.096154 3.097801 4.758635 3.5201404\n", + " 5.3482566 4.605661 5.006421 3.6826215 5.6027927 5.0411067\n", + " 4.308202 1.4537201 2.755195 4.2749486 2.8591683 5.0689545\n", + " 0.21238759 3.0136015 5.4308896 5.122197 5.3509235 4.867964 ]\n", + "g: [5.744686 4.7518163 4.478614 4.590043 5.981322 5.0087485 3.5538218\n", + " 2.5429685 4.728201 3.4188 5.3993397 4.1020393 4.6394925 4.599128\n", + " 4.962713 3.9913027 5.600853 5.151676 3.7527955 2.082434 3.3434951\n", + " 4.0904465 3.068817 5.7133336 0.7221537 2.5209265 4.9979615 5.1343102\n", + " 5.150924 5.114405 ]\n" + ] + } + ], + "source": [ + "stock_assets = df_cap[window_2:] / df_cap.sum(axis=1).mean()\n", + "short_rolling_pct_chg = short_rolling.pct_change()[window_2:]\n", + "long_rolling_pct_chg = long_rolling.pct_change()[window_2:]\n", + "\n", + "reset_graph()\n", + "\n", + "mean_levels = run_model(QED_MLE_Model, stock_assets, short_rolling_pct_chg, long_rolling_pct_chg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 2: Analysis of default rates (Max 10 point)\n", + "\n", + "For a particle in a potential $ V(y) $ with a metastable minimum $ y = a $ and a barrier with a peak located at $ y = b $, the famous Kramers' escape formula gives the following expression for the escape rate $ r $ (see e.g. the book by van Kampen):\n", + "\n", + "$$ \n", + "r = \\frac{\\sqrt{ V''(a) \\left| V''(b) \\right| }}{2 \\pi} \\exp \\left[ - \\frac{2}{\\sigma^2} (V(b) - V(a) ) \\right]\n", + "$$\n", + "\n", + "Here $ V''(a) $ and $ V''(b) $ stand for the second derivatives of the potential $ V(y) $ at the minimum and the maximum, respectively. This formula applies as long as the barrier height $ \\Delta E \\equiv (V(b) - V(a) \\gg \\frac{\\sigma^2}{2} $. \n", + "\n", + "Apply the Kramers formula to the QED potential and parameters that you found in your calibration. What range of values of $ r $ do you obtain? Do these values make sense to you? Can you think how you could use the Kramers relation as a way to regularize your MLE calibration?\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\\lambda_1 \\max(y_b-y_0,0)$$" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Put the rest of your code and analysis for Part 2 here.\n", + "class QED_MLE_Model_With_Reg:\n", + " \n", + " def __init__(self, ndim, learning_rate):\n", + " # stock assets\n", + " self.x = tf.placeholder(tf.float32, [None, ndim], name = 'x')\n", + " self.y = tf.log(self.x) # dim 0 days dim 1 stocks\n", + " # predictors\n", + " self.z_1 = tf.placeholder(tf.float32, [None, ndim], name='z_1')\n", + " self.z_2 = tf.placeholder(tf.float32, [None, ndim], name='z_2')\n", + " \n", + " # k mean reversion speed\n", + " self.k = tf.Variable(tf.random_uniform([ndim], minval=0.,maxval=1), name='k') + 0.0001\n", + " # variance of each assets(ndim)\n", + " self.sigma = tf.Variable(tf.square(tf.random_uniform([ndim], minval=0., maxval=1))) + 0.0001\n", + " self.theta = tf.Variable(tf.square(tf.random_uniform([ndim], minval=0., maxval=1))) + 0.0001\n", + " self.g = tf.Variable(tf.random_uniform([ndim], minval=0.,maxval=1), name='k') + 0.0001\n", + " \n", + " self.w_1 = tf.random_normal([ndim], mean=0.5, stddev = 0.1)\n", + " self.w_2 = tf.ones([ndim]) - self.w_1\n", + " \n", + " # mean of all stock assets delta is constant zero\n", + " self.mu = tf.zeros([ndim])\n", + " \n", + " self.scale = tf.slice(self.y, [0,0], [1,-1])\n", + "\n", + " self.z = self.scale * tf.cumprod(1 + self.z_1*self.w_1 + self.z_2*self.w_2)\n", + " \n", + " self.v = - tf.multiply((self.theta - tf.square(self.theta)/2.0 + self.z), self.y) + \\\n", + " tf.multiply(self.k, tf.exp(self.y)) + \\\n", + " tf.multiply(self.g, tf.exp(self.y*2))/2.0\n", + " \n", + " # Multivariate Normal Distribution, no need to implement the MLE function\n", + " self.mult_norm_dist = tf.contrib.distributions.MultivariateNormalDiag(loc=self.mu, scale_diag=self.sigma)\n", + " # the log probability of v \n", + " self.log_prob = self.mult_norm_dist.log_prob(self.v)\n", + " # tf.square(self.w_1+self.w_2-0.95) -> paper chapter 7 Experiments \n", + " self.loss = -tf.reduce_sum(self.log_prob) + tf.reduce_sum(0.001*tf.maximum(0.005-np.min(self.y), 0 ))\n", + " \n", + " self.train_step = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(self.loss)" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loss 182573120000000.0\n", + "loss 727991360.0\n", + "loss 697040830.0\n", + "loss 683100800.0\n", + "loss 671947800.0\n", + "loss 667412400.0\n", + "loss 663714750.0\n", + "loss 658316160.0\n", + "loss 654601100.0\n", + "loss 654437400.0\n", + "loss 650740200.0\n", + "\n", + "theta: [0.999995 0.9999976 0.99812365 0.9999978 0.9999985 0.99999833\n", + " 0.99848914 0.99971706 0.9990651 0.99974763 1. 0.99999815\n", + " 0.999999 0.99957436 0.9991969 0.97185814 1.0000002 0.99828565\n", + " 0.99296236 0.94642043 0.959738 0.9999987 0.9720296 0.99979424\n", + " 0.5718796 0.9983212 0.9999983 0.9999473 0.99974924 0.9999745 ]\n", + "delta: [3.309517 1.7753448 1.490827 2.127008 3.7270079 2.972592\n", + " 1.4456012 0.51459074 2.334206 1.0505652 2.9060168 1.4698379\n", + " 2.9769585 2.1353028 2.620034 0.95785147 3.392444 2.4328341\n", + " 1.5330924 0.1816716 0.7251418 1.9699159 0.78586614 3.3798058\n", + " 0.06016935 0.50767636 2.9002986 3.4537618 3.476372 2.5041633 ]\n", + "k: [5.6854844 4.415414 4.513262 4.9351535 5.878345 4.7603393\n", + " 4.087988 2.4592676 5.096154 3.097801 4.758635 3.5201404\n", + " 5.3482566 4.605661 5.006421 3.6826215 5.6027927 5.0411067\n", + " 4.308202 1.4537201 2.755195 4.2749486 2.8591683 5.0689545\n", + " 0.21238759 3.0136015 5.4308896 5.122197 5.3509235 4.867964 ]\n", + "g: [5.744686 4.7518163 4.478614 4.590043 5.981322 5.0087485 3.5538218\n", + " 2.5429685 4.728201 3.4188 5.3993397 4.1020393 4.6394925 4.599128\n", + " 4.962713 3.9913027 5.600853 5.151676 3.7527955 2.082434 3.3434951\n", + " 4.0904465 3.068817 5.7133336 0.7221537 2.5209265 4.9979615 5.1343102\n", + " 5.150924 5.114405 ]\n" + ] + } + ], + "source": [ + "stock_assets = df_cap[window_2:] / df_cap.sum(axis=1).mean()\n", + "short_rolling_pct_chg = short_rolling.pct_change()[window_2:]\n", + "long_rolling_pct_chg = long_rolling.pct_change()[window_2:]\n", + "\n", + "reset_graph()\n", + "\n", + "mean_levels = run_model(QED_MLE_Model_With_Reg, stock_assets, short_rolling_pct_chg, long_rolling_pct_chg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 3: Propose and analyse your own signals (Max 10 points)\n", + "\n", + "In this part, you will experiment with other signals. Propose a signal and explain why it is interesting to \n", + "include this signal in the portfolio analysis. Then add your favorite signal or signals to the previous benchmarck signals (or alternatively you can replace them), and repeat the analysis of model calibration. State your conclusions.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Put the rest of your code and analysis for Part 3 here.\n", + "# Put the rest of your code and analysis for Part 2 here.\n", + "stock_assets = df_cap[window_2:] / df_cap.sum(axis=1).mean()\n", + "short_ema = df_cap.ewm(window_1).mean()\n", + "long_ema = df_cap.ewm(window_2).mean()\n", + "short_ema_pct_change = short_ema.pct_change()[window_2:]\n", + "long_ema_pct_change = long_ema.pct_change()[window_2:]\n", + "\n", + "reset_graph()" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "loss 178187760000000.0\n", + "loss 708432800.0\n", + "loss 678417400.0\n", + "loss 665999500.0\n", + "loss 654074430.0\n", + "loss 650760200.0\n", + "loss 647156900.0\n", + "loss 640599360.0\n", + "loss 636509250.0\n", + "loss 637568640.0\n", + "loss 632901760.0\n", + "\n", + "theta: [0.999995 0.9999976 0.9981251 0.9999978 0.9999985 0.99999833\n", + " 0.9984888 0.9997176 0.99906605 0.99974793 1. 0.99999815\n", + " 0.999999 0.9995743 0.99919677 0.9718497 1.0000002 0.9982855\n", + " 0.9929596 0.9463958 0.9597439 0.9999987 0.972032 0.9997943\n", + " 0.57187843 0.99832124 0.9999983 0.9999473 0.99974954 0.99997455]\n", + "delta: [3.3083217 1.7749254 1.4902204 2.1270297 3.7260587 2.9719894\n", + " 1.4455361 0.5147332 2.3337493 1.0506996 2.9052808 1.4699283\n", + " 2.9765904 2.134781 2.617355 0.95771897 3.3923216 2.432303\n", + " 1.5317701 0.18169905 0.7247302 1.9696428 0.7858456 3.379148\n", + " 0.06016934 0.5075528 2.9001231 3.4534073 3.4754407 2.5042193 ]\n", + "k: [5.6856375 4.415317 4.5133963 4.9353085 5.8789077 4.7603545\n", + " 4.087988 2.4591434 5.0962973 3.0979059 4.7587056 3.5203333\n", + " 5.348496 4.605775 5.0067134 3.6824272 5.6028576 5.0411234\n", + " 4.308278 1.4532471 2.755459 4.2750244 2.8591483 5.0689497\n", + " 0.21238588 3.0135908 5.4309034 5.1221232 5.3511767 4.8682423 ]\n", + "g: [5.7447867 4.751727 4.478546 4.590154 5.9816995 5.0087295\n", + " 3.5538468 2.542199 4.7281747 3.4187748 5.399374 4.1021957\n", + " 4.639656 4.599242 4.9628716 3.9911065 5.600911 5.15166\n", + " 3.7528608 2.0818546 3.3438318 4.090508 3.0687296 5.713285\n", + " 0.72215194 2.5209107 4.997977 5.134258 5.1508946 5.1145644 ]\n" + ] + } + ], + "source": [ + "mean_levels = run_model(QED_MLE_Model_With_Reg, stock_assets, short_ema_pct_change, long_ema_pct_change)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 4 (Optional): Show me something else (Max 10 points).\n", + "\n", + "Here you can develop any additional analysis of the model that you may find interesting (One possible suggestion is \n", + "presented above, but you should feel free to choose your own topic). Present your case and finding/conclusions.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Put the rest of your code and analysis for Part 3 here." + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['AAPL', 'AXP', 'BA', 'CAT', 'CSCO', 'CVX', 'DIS', 'DWDP', 'GE', 'GS',\n", + " 'HD', 'IBM', 'INTC', 'JNJ', 'JPM', 'KO', 'MCD', 'MMM', 'MRK', 'MSFT',\n", + " 'NKE', 'PFE', 'PG', 'TRV', 'UNH', 'UTX', 'V', 'VZ', 'WMT', 'XOM'],\n", + " dtype='object')" + ] + }, + "execution_count": 105, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# show pca \n", + "import datetime\n", + "asset_returns = df_cap.pct_change(axis='rows').dropna()\n", + "\n", + "normed_returns = (asset_returns - asset_returns.mean())/asset_returns.std()\n", + "\n", + "\n", + "normed_returns.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "train_end = datetime.datetime(2015, 1, 1) \n", + "\n", + "df_train = None\n", + "df_test = None\n", + "df_raw_train = None\n", + "df_raw_test = None\n", + "\n", + "df_train = normed_returns[normed_returns.index <= train_end].copy()\n", + "df_test = normed_returns[normed_returns.index > train_end].copy()\n", + "\n", + "df_raw_train = asset_returns[asset_returns.index <= train_end].copy()\n", + "df_raw_test = asset_returns[asset_returns.index > train_end].copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "11 components explain 80.00% of variance\n" + ] + } + ], + "source": [ + "import sklearn.decomposition\n", + "import seaborn as sns\n", + "\n", + "stock_tickers = normed_returns.columns\n", + "\n", + "n_tickers = len(stock_tickers)\n", + "pca = None\n", + "cov_matrix = pd.DataFrame(data=np.ones(shape=(n_tickers, n_tickers)), columns=stock_tickers)\n", + "cov_matrix_raw = cov_matrix\n", + "\n", + "if df_train is not None and df_raw_train is not None:\n", + " stock_tickers = asset_returns.columns\n", + "\n", + " cov_matrix = df_train[stock_tickers].cov()\n", + " cov_matrix_raw = df_raw_train[stock_tickers].cov()\n", + " \n", + " pca = sklearn.decomposition.PCA().fit(cov_matrix)\n", + " \n", + " \n", + " cov_raw_df = pd.DataFrame({'Variance': np.diag(cov_matrix_raw)}, index=stock_tickers) \n", + " # cumulative variance explained\n", + " var_threshold = 0.8\n", + " var_explained = np.cumsum(pca.explained_variance_ratio_)\n", + " num_comp = np.where(np.logical_not(var_explained < var_threshold))[0][0] + 1 # +1 due to zero based-arrays\n", + " print('%d components explain %.2f%% of variance' %(num_comp, 100* var_threshold))" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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2GEH9tlnH1544YV37M/Zs2dzyCGHMHLkSEaOHMn//d//AfCZz3ymJYm/44472H333Vm8eDHjx49n4sSJNDU1seWWW/Lzn//8Hdu877772HnnnRkxYgS77LILjzzyyDv2yxlnnMEnP/lJRo8ezeabb86FF17Ysn57x/Xqq69myy23ZNSoUS3lbMuf//xndt55ZwYNGsQVV1wBwNFHH81NN93UssyRRx7JzTffvMR6U6dOZffdd2ffffdlq622YuLEiSxevBh45zlV2dK75ppr8uUvf5lhw4ax00478eKLLwLw4osvctBBBzFs2DCGDRvWkiivueaaHcZr77xpT1vn+Pz58znmmGPYbrvtGDFiBHfddRdQtM4feOCB7LXXXgwcOJCLLrqIb33rW4wYMYKddtqJl19+GSjOt8985jMtV3fuu+8+AF5++WUOPPBAhg4dyk477cSDDz64zMe0rX13zz33MGXKFD7/+c8zfPhwHn/8cS688EIGDx7M0KFDOfzwwzvcH0stM7vVa4cddsjlhbsa95KkldWMGTOWGF8en59rrLFGZmYuWLAg999//7zkkktyxowZud9+++Xbb7+dmZknnHBCfv/73y/KCHnddddlZuZbb72Vm222Wd53332ZmTl37txcsGBBXnbZZXnWWWdlZub8+fNzhx12yCeeeCLvuuuuXHvttfPZZ5/NRYsW5U477ZS/+93vMjNz0003zdmzZ7+jfAsWLMgBAwbk66+/npmZEydOzB/+8IeZmTlnzpzMzFy4cGHuscce+ec//7llW+ecc07LNsaNG5fXX3/9EutkZh511FE5ZcqUzMzcY4898tRTT83MzFtvvTU/9KEPZWbmJZdckoccckguWLCgZf233347d95553zppZcyM3Py5Ml5zDHHvKPsRxxxREv9nn766dx6660zM/Of//xnDh48OH/zm9/klltumTNnzmwp5z777JOLFi3KRx99NDfeeON8880386677sp99913iX2cmfmrX/0qDz744MzMJZY5/fTTc+edd8758+fn7Nmzc7311su333673eP6/PPP54ABA/Kll17Kt956K3fZZZc86aST3lGf008/PYcOHZpvvPFGzp49O/v375/PPfdcTp06NQ844IDMzHz11Vdz4MCBLWVsdtddd2Xv3r3z8ccfz4ULF+aee+7Zckwqz6nmYzFt2rSWec3H6POf/3zLefXRj340zz///Jbj/+qrr2bmv87navHaO28q4zZr7xw/77zzWo75ww8/nAMGDMg333wzr7766txiiy1y3rx5+dJLL+Xaa6+dl156aWZmnnLKKS1l3mOPPfK4447LzMzf/va3OWTIkMzMnDRpUp5xxhmZmfnrX/86hw0btkzHtNq+q3w/ZGZuuOGGOX/+/MzMfOWVV95x3DPf+VlVbn961pCf2iVDkrTCe/PNNxk+fDhQtDAfe+yxXH755dx///2MHDmyZZn3vOc9QNHn+ZBDDgHgkUceYcMNN2xZbu211wbgl7/8JQ8++GBLq+7cuXN57LHHWHXVVRk1ahT9+/cHYPjw4Tz11FN84AMfaLd8vXr1YuzYsdxyyy0ceuih3HrrrZx77rkA/PSnP+Xyyy9n4cKFvPDCC8yYMYOhQ4cC8LGPfazN7d11112ce+65vPHGG7z88ssMGTKEj3zkIwAcfPDBAOywww489dRTANx5551MnDiRXr2Kr/311luPv/71r/z1r39lr732AopW6A033PAdse68884l+orOmzeP119/nTXXXJMrrriC3XffnfPPP58tttiiZZmPfvSj9OjRg0GDBrH55pvzt7/9bYltzp07l3HjxvHYY48RESxYsKDNeu6777707t2b3r178573vIcXX3yRX//6120e1z/84Q+MHj2afv36tey7Rx99tM3tHnDAAay22mqsttpqjBkzhvvuu48DDzyQE088kdmzZ3PjjTdyyCGHtOyvSqNGjWLzzTcH4IgjjuDuu+/m0EMPXeKcam3VVVdtaTnfYYcd+NWvfgXAb37zG37wgx8AxTnZt2/fmuNVO29aa+8cv/vuu/n0pz8NwNZbb82mm27ass/GjBnDWmutxVprrUXfvn1bzq/tttuupcW4uUwAu+++O/PmzePVV1/l7rvv5sYbbwTggx/8IHPmzGHevHnA0h3TavuutaFDh3LkkUdy4IEHcuCBB7a5TGeYMEuSVniVfZibZSbjxo3j61//+juW79OnT4f9ljOT73znO+yzzz5LTJ86dSq9e/duGe/ZsycLFy7ssIyHH344F110Eeuttx5NTU2stdZaPPnkk5x33nlMmzaNddddl/Hjxy/xrNg11ljjHduZP38+J554ItOnT2fAgAGcccYZS6zTXLaOypWZDBkyhN///vdVy7148WLuvfde+vTp8455f/nLX1h//fV5/vnnl5je+hFercdPO+00xowZw89+9jOeeuopRo8e3WbstvZze8e1sjtFR9or39FHH821117L5MmTufrqq5dq3Wrn1CqrrNKyXK3nS7V4HZ039VC573v06NEy3qNHjyXK39Gxrrbdjo4p1L7vbr31Vv73f/+XW265ha997Wv85S9/afMHz7KyD7MkaaX0oQ99iBtuuIGXXnoJKPpVPv300+9YbquttuKFF15g2rRpALz22mssXLiQffbZh0svvbSl9fPRRx/ln//8Z9WYa621Fq+99lqb8/bYYw8eeOABrrjiipY+lvPmzWONNdagb9++vPjii9x+++0d1qs5Mdpggw14/fXXW1rAq9lrr7247LLLWpKNl19+ma222orZs2e3JMwLFizgoYceese6e++9d0ufZ6Dlh8nTTz/NN7/5Tf74xz9y++2384c//KFlmeuvv57Fixfz+OOP88QTT7DVVlstsc25c+ey8cYbA0V/2aXR3nHdcccd+e1vf8ucOXNYsGAB119/fbvbuPnmm5k/fz5z5sxh6tSpLS2b48eP54ILLgBo92ay++67jyeffJLFixdz3XXXVb2yUEtdLr30UqBo4Z87d25N8Zb2vGnvHN9tt9340Y9+BBTn9zPPPPOOY9WR6667Dihaq/v27Uvfvn2X2O7UqVPZYIMNWlq129sPtbxXK1W+1xYvXsyzzz7LmDFjOOecc5g7dy6vv/76UtWjIzWl3hExFvg20BP4XmZ+o9X8icBJwCLgdWBCZs6IiIHAw8Aj5aL3ZubE+hRdktQddZenAg0ePJizzz6bvffem8WLF7PKKqtw8cUXs+mmmy6x3Kqrrsp1113Hpz/9ad58801WW2017rzzTo477jieeuoptt9+ezKTfv36ddiKOWHCBMaOHctGG23UcgNVs549e7LffvtxzTXX8P3vfx+AYcOGMWLECLbeemsGDBjArrvu2mG91llnHY4//ni23XZb3ve+97Uke9Ucd9xxPProowwdOpRVVlmF448/nkmTJnHDDTdw8sknM3fuXBYuXMgpp5zCkCFDllj3wgsv5KSTTmLo0KEsXLiQ3XffnUsvvZRjjz2W8847j4022ogrr7yS8ePHtyRkm2yyCaNGjWLevHl897vffUfr9H/8x38wbtw4zj77bPbdd98O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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "if pca is not None:\n", + " bar_width = 0.9\n", + " n_asset = int((8 / 10) * normed_returns.shape[1])\n", + " x_indx = np.arange(n_asset)\n", + " fig, ax = plt.subplots()\n", + " fig.set_size_inches(12, 4)\n", + " # Eigenvalues are measured as percentage of explained variance.\n", + " rects = ax.bar(x_indx, pca.explained_variance_ratio_[:n_asset], bar_width, color='deepskyblue')\n", + " ax.set_xticks(x_indx + bar_width / 2)\n", + " ax.set_xticklabels(list(range(n_asset)), rotation=45)\n", + " ax.set_title('Percent variance explained')\n", + " ax.legend((rects[0],), ('Percent variance explained by principal components',))\n", + "\n", + "if pca is not None:\n", + " projected = pca.fit_transform(cov_matrix)" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sum of weights of first eigen-portfolio: 100.00\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pc_w = np.zeros(len(stock_tickers))\n", + "eigen_prtf1 = pd.DataFrame(data ={'weights': pc_w.squeeze()*100}, index = stock_tickers)\n", + "if pca is not None:\n", + " pcs = pca.components_\n", + "\n", + " best_weight_total = pcs[0,:].sum()\n", + " # normalized to 1 \n", + " pc_w = pcs[0,:]/best_weight_total\n", + " \n", + " eigen_prtf1 = pd.DataFrame(data ={'weights': pc_w.squeeze()*100}, index = stock_tickers)\n", + " eigen_prtf1.sort_values(by=['weights'], ascending=False, inplace=True)\n", + " print('Sum of weights of first eigen-portfolio: %.2f' % np.sum(eigen_prtf1))\n", + " eigen_prtf1.plot(title='First eigen-portfolio weights', \n", + " figsize=(12,6), \n", + " xticks=range(0, len(stock_tickers),10), \n", + " rot=45, \n", + " linewidth=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def sharpe_ratio(ts_returns, periods_per_year=252):\n", + " \"\"\"\n", + " sharpe_ratio - Calculates annualized return, annualized vol, and annualized sharpe ratio, \n", + " where sharpe ratio is defined as annualized return divided by annualized volatility \n", + " \n", + " Arguments:\n", + " ts_returns - pd.Series of returns of a single eigen portfolio\n", + " \n", + " Return:\n", + " a tuple of three doubles: annualized return, volatility, and sharpe ratio\n", + " \"\"\"\n", + " \n", + " annualized_return = 0.\n", + " annualized_vol = 0.\n", + " annualized_sharpe = 0.\n", + "\n", + " n_years = ts_returns.shape[0]/periods_per_year\n", + " annualized_return = np.power(np.prod(1+ts_returns),(1/n_years))-1\n", + " annualized_vol = ts_returns.std()*np.sqrt(periods_per_year)\n", + " annualized_sharpe = annualized_return/annualized_vol\n", + " \n", + " return annualized_return, annualized_vol, annualized_sharpe" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "First eigen-portfolio:\n", + "Return = 8.37%\n", + "Volatility = 14.21%\n", + "Sharpe = 0.59\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "if df_raw_test is not None:\n", + " eigen_prtf1_returns = np.dot(df_raw_test.loc[:, eigen_prtf1.index], eigen_prtf1 / 100)\n", + " eigen_prtf1_returns = pd.Series(eigen_prtf1_returns.squeeze(), index=df_test.index)\n", + " er, vol, sharpe = sharpe_ratio(eigen_prtf1_returns)\n", + " print('First eigen-portfolio:\\nReturn = %.2f%%\\nVolatility = %.2f%%\\nSharpe = %.2f' % (er*100, vol*100, sharpe))\n", + " year_frac = (eigen_prtf1_returns.index[-1] - eigen_prtf1_returns.index[0]).days / 252\n", + "\n", + " df_plot = pd.DataFrame({'PC1': eigen_prtf1_returns}, index=df_test.index)\n", + " np.cumprod(df_plot + 1).plot(title='Returns of the market-cap weighted index vs. First eigen-portfolio', \n", + " figsize=(12,6), linewidth=3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}