{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Introduction\n",
"\n",
"This notebook is an implementation of Jón Daníelsson's _Financial Risk Forecasting_ (Wiley, 2011) in MATLAB 2022a, with annotations and introductory examples. The introductory examples (Appendix) are similar to Appendix C in the original book.\n",
"\n",
"The following code has been adapted from the original, implemented in MATLAB 2022a. Occasional lines of code which require different syntax to run in MATLAB 2022a are also noted in trailing comments.\n",
"\n",
"'Econometrics', 'Optimization' and 'Statistics and Machine learning' toolboxes are used by this script. \n",
"\n",
"Bullet point numbers correspond to the MATLAB Listing numbers in the original book, referred to henceforth as _FRF_.\n",
"\n",
"More details can be found at the book website: https://www.financialriskforecasting.com/\n",
"\n",
"Last updated: June 2022"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Copyright 2011-2020 Jón Daníelsson. This code is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. The GNU General Public License is available at: https://www.gnu.org/licenses/."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"## Table of Contents \n",
"[Chapter 0. Appendix - Introduction](#0)
\n",
"[Chapter 1. Financial Markets, Prices and Risk](#1)
\n",
"[Chapter 2. Univariate Volatility Modeling](#2)
\n",
"[Chapter 3. Multivariate Volatility Models](#3)
\n",
"[Chapter 4. Risk Measures](#4)
\n",
"[Chapter 5. Implementing Risk Forecasts](#5)
\n",
"[Chapter 6. Analytical Value-at-Risk for Options and Bonds](#6)
\n",
"[Chapter 7. Simulation Methods for VaR for Options and Bonds](#7)
\n",
"[Chapter 8. Backtesting and Stress Testing](#8)
\n",
"[Chapter 9. Extreme Value Theory](#9)
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"***"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Appendix: An Introduction to MATLAB\n",
"\n",
"Created in MATLAB 2022a (June 2022)\n",
"\n",
"- M.1: Entering and Printing Data\n",
"- M.2: Vectors, Matrices and Sequences\n",
"- M.3: Importing Data (to be updated)\n",
"- M.4: Basic Summary Statistics\n",
"- M.5: Calculating Moments\n",
"- M.6: Basic Matrix Operations\n",
"- M.7: Statistical Distributions\n",
"- M.8: Statistical Tests\n",
"- M.9: Time Series\n",
"- M.10: Loops and Functions\n",
"- M.11: Basic Graphs\n",
"- M.12: Miscellaneous Useful Functions"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 10\n",
"\n",
"\n"
]
}
],
"source": [
"% Entering and Printing Data\n",
"% Listing M.1\n",
"% Last updated June 2018\n",
"%\n",
"%\n",
"\n",
"x = 10; % assign x the value 10, silencing output print with ;\n",
"disp(x) % display x"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"y =\n",
"\n",
" 1 3 5 7 9\n",
"\n",
"\n",
"ans =\n",
"\n",
" 5\n",
"\n",
"\n",
"ans =\n",
"\n",
" 1 5\n",
"\n",
"\n",
"ans =\n",
"\n",
" 5\n",
"\n",
"\n",
"v =\n",
"\n",
" NaN NaN NaN\n",
" NaN NaN NaN\n",
"\n",
"\n",
"ans =\n",
"\n",
" 2 3\n",
"\n",
"\n",
"w =\n",
"\n",
" 1 1 1\n",
" 2 2 2\n",
" 3 3 3\n",
" 1 1 1\n",
" 2 2 2\n",
" 3 3 3\n",
"\n",
"\n",
"s =\n",
"\n",
" 1 2 3 4 5 6 7 8 9 10\n",
"\n",
"\n"
]
}
],
"source": [
"% Vectors, Matrices and Sequences\n",
"% Listing M.2\n",
"% Last updated June 2018\n",
"%\n",
"%\n",
"\n",
"y = [1,3,5,7,9] % lists are denoted by square brackets\n",
"\n",
"y(3) % calling 3rd element (MATLAB indices start at 1)\n",
"\n",
"size(y) % shows that y is 1 x 5 (a row vector, by default)\n",
"\n",
"length(y) % as expected, y has length 5\n",
"\n",
"v = nan(2,3) % fill a 2 x 3 matrix with NaN values\n",
"\n",
"size(v) % as expected, v is size (2,3)\n",
"\n",
"w = repmat([1,2,3]', 2, 3) % repeats matrix twice by rows, thrice by columns\n",
"\n",
"s = 1:10 % s is a list of integers from 1 to 10 inclusive"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"ans =\n",
"\n",
" 32.4000\n",
"\n",
"\n",
"ans =\n",
"\n",
" 2.1807e+03\n",
"\n",
"\n",
"ans =\n",
"\n",
" 15\n",
"\n",
"\n",
"ans =\n",
"\n",
" 3.1400\n",
"\n",
"\n",
"ans =\n",
"\n",
" 11.8600\n",
"\n",
"\n",
"ans =\n",
"\n",
" 8.1000\n",
"\n",
"\n",
"ans =\n",
"\n",
" 7.1300\n",
"\n",
"\n",
"ans =\n",
"\n",
" 27.7224\n",
"\n",
"\n",
"ans =\n",
"\n",
" 27.7224\n",
"\n",
"\n",
"ans =\n",
"\n",
" 1\n",
"\n",
"\n",
"ans =\n",
"\n",
" 3.1400\n",
" 5.0000\n",
" 9.2600\n",
" 15.0000\n",
"\n",
"\n",
"ans =\n",
"\n",
" 1.1442\n",
" 2.7081\n",
" 2.2257\n",
" 1.6094\n",
"\n",
"\n"
]
}
],
"source": [
"% Basic Summary Statistics\n",
"% Listing M.3\n",
"% Last updated June 2022\n",
"%\n",
"%\n",
"\n",
"y = [3.14; 15; 9.26; 5]; % List with semicolons is a column vector\n",
"\n",
"sum(y) % sum of all elements of y\n",
"prod(y) % product of all elements of y\n",
"max(y) % maximum value of y\n",
"min(y) % minimum value of y\n",
"range(y) % difference between max and min value of y\n",
"mean(y) % arithmetic mean\n",
"median(y) % median\n",
"var(y) % variance\n",
"cov(y) % covar matrix = variance for single vector\n",
"corrcoef(y) % corr matrix = [1] for single vector\n",
"sort(y) % sorting in ascending order\n",
"log(y) % natural log"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"ans =\n",
"\n",
" 8.1000\n",
"\n",
"\n",
"ans =\n",
"\n",
" 27.7224\n",
"\n",
"\n",
"ans =\n",
"\n",
" 5.2652\n",
"\n",
"\n",
"ans =\n",
"\n",
" 0.4700\n",
"\n",
"\n",
"ans =\n",
"\n",
" 1.7153\n",
"\n",
"\n"
]
}
],
"source": [
"% Calculating Moments\n",
"% Listing M.4\n",
"% Last updated June 2018\n",
"%\n",
"%\n",
"\n",
"mean(y) % mean\n",
"var(y) % variance\n",
"std(y) % unbiased standard deviation, by default\n",
"skewness(y) % skewness\n",
"kurtosis(y) % kurtosis"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"z =\n",
"\n",
" 1 2\n",
" 3 4\n",
"\n",
"\n",
"x =\n",
"\n",
" 1 2\n",
"\n",
"\n",
"ans =\n",
"\n",
" 5\n",
" 11\n",
"\n",
"\n",
"ans =\n",
"\n",
" 1 2\n",
" 3 4\n",
" 1 2\n",
"\n",
"\n",
"ans =\n",
"\n",
" 1 2 1\n",
" 3 4 2\n",
"\n",
"\n"
]
}
],
"source": [
"% Basic Matrix Operations\n",
"% Listing M.5\n",
"% Last updated June 2018\n",
"%\n",
"%\n",
"\n",
"z = [1, 2; 3, 4] % z is a 2 x 2 matrix (Note the use of ; as row separator)\n",
"x = [1, 2] % x is a 1 x 2 matrix\n",
"\n",
"%% Note: z * x is undefined since the two matrices are not conformable\n",
"\n",
"z * x' % this evaluates to a 2 x 1 matrix\n",
"\n",
"vertcat(z,x) % \"stacking\" z and x vertically\n",
"horzcat(z,x') % \"stacking z and x' horizontally\n",
"\n",
"%% Note: dimensions must match along the combining axis)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"q =\n",
"\n",
" -3 -2 -1 0 1 2 3\n",
"\n",
"\n",
"p =\n",
"\n",
" 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000\n",
"\n",
"\n",
"ans =\n",
"\n",
" -1.2816 -0.8416 -0.5244 -0.2533 0 0.2533 0.5244 0.8416 1.2816\n",
"\n",
"\n",
"ans =\n",
"\n",
" 0.0200 0.0581 0.1870 0.5000 0.8130 0.9419 0.9800\n",
"\n",
"\n",
"ans =\n",
"\n",
" 0 0 0 0.5000 0.3033 0.1839 0.1116\n",
"\n",
"\n",
"res = \n",
"\n",
" NormalDistribution\n",
"\n",
" Normal distribution\n",
" mu = 0.146605 [-0.155625, 0.448836]\n",
" sigma = 1.52317 [1.33736, 1.76943]\n",
"\n",
"\n"
]
}
],
"source": [
"% Statistical Distributions\n",
"% Listing M.6\n",
"% Last updated June 2018\n",
"%\n",
"%\n",
"\n",
"\n",
"q = -3:1:3 % specify a set of values\n",
"\n",
"p = 0.1:0.1:0.9 % specify a set of probabilities\n",
"\n",
"norminv(p, 0, 1) % element-wise inverse Normal quantile\n",
"\n",
"tcdf(q, 4) % element-wise cdf under Student-t(4)\n",
"\n",
"chi2pdf(q, 2) % element-wise pdf under Chisq(2)\n",
"\n",
"%% One can also obtain pseudorandom samples from distributions\n",
"\n",
"x = trnd(5, 100, 1); % Sampling 100 times from t dist with 5 df\n",
"\n",
"y = normrnd(0, 1, 100, 1); % Sampling 50 times from a standard normal \n",
"\n",
"%% Given sample data, we can also obtain MLE estimates of distribution parameters:\n",
"\n",
"res = fitdist(x, \"Normal\") % Fitting x to normal dist"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Warning: P is less than the smallest tabulated value, returning 0.001.\n",
"> In jbtest (line 136)\n",
"\n",
"h1 =\n",
"\n",
" 1\n",
"\n",
"\n",
"p1 =\n",
"\n",
" 1.0000e-03\n",
"\n",
"\n",
"jbstat =\n",
"\n",
" 398.3104\n",
"\n",
"\n",
"h2 =\n",
"\n",
" logical\n",
"\n",
" 0\n",
"\n",
"\n",
"p2 =\n",
"\n",
" 0.1588\n",
"\n",
"\n",
"lbstat =\n",
"\n",
" 26.2154\n",
"\n",
"\n"
]
}
],
"source": [
"% Statistical Tests\n",
"% Listing M.7\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"x = trnd(5, 500, 1); % Create hypothetical dataset x\n",
"\n",
"[h1, p1, jbstat] = jbtest(x) % Jarque-Bera test for normality\n",
"\n",
"[h2, p2, lbstat] = lbqtest(x,'lags',20) % Ljung-Box test for serial correlation - Needs Econometrics Toolbox"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"image/png": "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/fv3Ddeg2xyxf/9+85szuk6j5dO+gC2M2Txm6ycRDR06dMeOHTt27MjMzCwqKoqJiSGz/+KGFUlPm2oL4RjBMWKMfSek//3f//Xw8PjHP/5BRH379l2yZImbm1t9ff2uXbuSkpL++7//+9dff3333XfJ4JA2jzs5JaKqqioi0uun269fPyL69NNPa2trb968efv2bb2K2NLSsnv3bmdn559++unrr78+d+5ct27dKisrdXttqlQq7gVXP/Rw/7rl5eXc29LSUiJyd3fnlmsPibfeeuvf//63qS9zb11dXfVWrl3y2B1pUzGaD6MjzJeVYQx65WP+y7YIWIvN+skZMGDA/Pnz58+fP2fOnGHDhnELzQRmWJH0tGmncIwYhtER9nuM6LHv55CmTZv2l7/8Zd26dY2NjQEBAVlZWY2NjS+++OL169eJyNXV9Zdffvnwww+pjak7Nzf3rbfeGj58+ObNm52dnUNDQ3U/jY6OXr9+fWpqqru7+xdffPHhhx9u3br1T3/6k/YLH3/8sVKpXL169YYNG7glOTk548eP/+CDD6ZPn+7m5iaRSE6ePHn48GG5XM41XHDEYvGlS5c+++yziRMn/uY3v9m4cSP3b//OO+/069dv8uTJCoWiR48e77777tNPP11aWrp27dpFixa99dZbRr/82N00uiOxsbHaL5gqRm2c3H0OjqmYLS92Q2bKyqjx48cbls+UKVO0AUdHR9s0YD1s1k8zLAzMaHm2aadwjLQpDDPs/RjR18EmP8Hl5uZyl9KcF1988ebNmzdu3OAWOjs7r1y5kh70teXa6OPj4zWPtr1q20y5hcHBwQEBAUTUo0ePzz//XGPQDv7BBx9069aNiJycnLi16eLubRYVFekufPrpp4no6tWrGo1m8+bNXG/XcePG6baPz549m9uLxsbGM2fOaFtmAgICLl68yH3n6NGjTz75JLc8PDy8trZWo9EY/TK3L3PnztXGYLjEcEd099RUMWrjvHXrlm6xGA1Dr+i4W6NKpVKv0MhYDyJTZWVmnUbLR7dgdX9rqpAtjNkSDNZPjUEvOy2jgRlWG6PlaWqnjN5DwjGCY8QokcbYHU678+uvv966datv375dujy85mtpaenatavuksdqamrq0aPHrFmz9u7d29LS4uLiYuoCXK1Wc+tv34P3d+/evX//PndFrKulpaVLly7adf76669E5OLiYhin4aZNfdm8x+6I0WLUi7PjYZhhqqzMMCwfPgM2ugk7qp+WBGaqPNuxU6bgGLGcAxwjHPtusuPk5eUREXfOpatN/zyGzP9cLBZ379693Ss3Vbn1NmqqBhjddPuqy2N3xGg5mCkcq9fadvxVNdwjPgM2uokBAwboLbS8fhqt4barn5YEZuo7HTzodOEYsZwDHCMc++7UQERFRUWvv/76tWvXHlmanEwiEfn4UHIyGetiZEqXLl1effXViRMnWjdIgHbTreEP62d7azgAy+y7yW7Pnj07duzo3bt3dHT0jBkzWpfGxVFGxsMvxcZSeroQ0QF0FGo4dCr2fYU0aNCgQ4cODR48+JGlubnm3gLYD9Rw6FTs+x6S4X0jItK2YMj8/FqX6HRzAjClpKRE6BD0oYaDdTFYyXXZd0IyLimJkpK4lyU//cRCg4ZMJmOnHiAYo2R29DedvRpOLP1TEoIxgf1Kbt9NdsYlJmoPV0pKYuFYBbAm1HBwUI6YkIgoMZE0mpKffqLERKFDISI6evSo0CE8hGAcAWM1nBj7p0QwdspBExIAANgbR7iHpDdLNICDQQ2HTgJXSAAAwAQkJAAAYAISEgAAMAEJCQAAmICEBAAATEBCAgAAJiAhAQAAE5CQAACACUhIAADABCQkAABgAhISAAAwAQkJAACYgIQEAABMQEICAAAmICEBAAATkJAAAIAJSEgAAMAEJCQAAGACEhIAADABCQkAAJiAhAQAAExAQgIAACYgIQEAABOQkAAAgAlISAAAwAQkJAAAYAISEgAAMAEJCQAAmICEBAAATEBCAgAAJiAhAQAAE5CQAACACUhIAADABCQkAABgAhISAAAwAQkJAACYgIQEAABMQEICAAAmICEBAAATuggdwGM0NTVlZmZWVFRERkaOHTtW79OGhoY9e/ZUVFSEhIRMmjRJkAgBAMAqWL9Cio+PVyqVEyZMSElJOXjwoN6nc+bMuX///sSJEzMyMtLT0wWJEAAArILpK6SCgoLm5uaEhAQi8vT0XLt2bVRUlPbT2traioqKpUuXEpFKpfrss8/i4uIEixUAADqG6YR07dq1IUOGcK/9/f2vXLmiVqvF4tarOg8PD6lU+tVXXwUHBx85cmTYsGGGa5DJZER09OhR3mI26vr168IGoAvB6ImIiBA6BAAgYjwhtbS0ODs7c6/FYrFIJFKpVNqEJBaL586du2rVqoEDB1ZWVi5btsxwDSUlJfyFa5a3t7fQITyEYHRxlYQ7dwEAATGdkMRisVqt1r7VaDTabERE586d+/jjj3Nzc93d3U+ePBkTE3PixAkhwgQAACtgulNDz549m5ubudcNDQ0SicTJyUn76YULF373u9+5u7sTUUhIyK1bt1paWoQJFAAAOozphBQUFHTq1Kna2loiys7O1nbszsvLa2ho8Pf3/+GHH5RKJRFdvHjR1dXVxcVFyHABAKADmG6y8/DwSExMjI6O9vX1raqqyszM5JYvXLgwNTU1JCTkhRdemDRp0tChQ4uKirZs2aLboAcAAPaF6YRERFOnTo2KilIqla6urtqFFy5c4F4kJCQsW7ZM71MAALBHdnBJIRaLzeQb858CAIC9sIOEBAAAnQESEgAAMAEJCQAAmICEBAAATEBCAgAAJiAhAQAAE5CQAACACUhIAADABCQkAABgAhISAAAwAQkJAACYgIQEAABMQEICAAAmICEBAAATkJAAAIAJSEgAAMAEJCQAAGACEhIAADABCQkAAJiAhAQAAExAQgIAACYgIQEAABOQkAAAgAlISAAAwAQkJAAAYAISEgAAMAEJCQAAmNBF6AAAHEpNTU1jY6PuEl9fX6GCAbAvSEgAVrNt27Z3331XKpV26dJ6ZInF4pycHGGjArAXSEgAVpOenr5v3z5/f3+hAwGwS7iHBGA1Tk5OXl5eQkcBYK+QkACs5i9/+UtKSopSqRQ6EAC7hCY7AKvJyMgoLi7OysrSLnFyciouLhYwJAA7goQEYDW7du0SOgQAO4aEBGA17u7ulZWVixYtamxsdHFxef311ydOnCh0UAB2A/eQAKwmLy8vLCxsyJAhqampkyZNWr58eWpqqtBBAdgNXCEBWM3KlSv3798/fPhwIgoICFi6dKlMJktISBA6LgD7gCskAKtpamry8/PTXdKvX7+mpiah4gGwL6wnpKampq1bt7755punTp0y/FSlUn388cerV6/OzMxUq9X8hwegy9PT8/Dhw9q35eXltbW13bt3FzAkADvCepNdfHz86NGjJ0yYkJKS0tDQEBUVpfvpsmXLevXqFRER8fnnn8vl8rVr1woVJwAR/etf/xo1atSWLVt69erV0tJSVla2adMmoYMCsBtMJ6SCgoLm5mauCd7T03Pt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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"% Time Series\n",
"% Listing M.8\n",
"% Last updated June 2018\n",
"%\n",
"%\n",
"\n",
"x = trnd(5, 60, 1); % Create hypothetical dataset x\n",
"\n",
"subplot(1,2,1)\n",
"autocorr(x, 20) % autocorrelation for lags 1:20\n",
"subplot(1,2,2)\n",
"parcorr(x,20) % partial autocorrelation for lags 1:20"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"ans =\n",
"\n",
" 9\n",
"\n",
"\n",
"ans =\n",
"\n",
" 16\n",
"\n",
"\n",
"ans =\n",
"\n",
" 25\n",
"\n",
"\n",
"ans =\n",
"\n",
" 36\n",
"\n",
"\n",
"ans =\n",
"\n",
" 49\n",
"\n",
"X is not a multiple of 3\n",
"\n"
]
}
],
"source": [
"% Loops and Functions\n",
"% Listing M.9\n",
"% Last updated June 2018\n",
"%\n",
"%\n",
"\n",
"%% For loops\n",
"\n",
"for i = 3:7 % iterates through [3,4,5,6,7]\n",
" i^2 \n",
"end\n",
"\n",
"%% If-else loops\n",
"\n",
"X = 10;\n",
"\n",
"if (rem(X,3) == 0)\n",
" disp(\"X is a multiple of 3\")\n",
"else \n",
" disp(\"X is not a multiple of 3\")\n",
"end\n",
" \n",
"%% Functions (example: a simple excess kurtosis function)\n",
"%% NOTE: in MATLAB, functions can be defined in 2 locations:\n",
"%% 1) in a separate file (e.g. excess_kurtosis.m in this case) in the workspace\n",
"%% 2) in the same file as the rest of the code, BUT at the end of the file\n",
"\n",
"%% function k = excess_kurtosis(x, excess) \n",
"%% if nargin == 1 % if there is only 1 argument\n",
"%% excess = 3; % set excess = 3\n",
"%% end % this is how optional param excess is set\n",
"%% m4 = mean((x-mean(x)).^4);\n",
"%% k = m4/(std(x)^4) - excess;\n",
"%% end "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"image/png": "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qenKlSsfffTR2rVrCSFffvnlM888M3fu3Llz5/70pz8NBAL0YSdOnFi1atWMGTOeeuqpHTt2rF27NhQKhUKhtWvXvvjiiytXriwsLAwEAu+8884999wzderUO++884UXXiCE0Fd+8803f/zjH0+dOvUHP/jBZ599Rm8//PDDFy9elOd7AeYFAoGRkRGtVnvTTTfp9fpf/vKXra2tP/jBDwghn3/+eXV19YwZM+68805+iIrsfvzuLejqhJATJ0488MADU6dOXbVq1eHDhwkhkV2ae3H6T6+++upTTz01Y8aMVatWnThxIrLZUX+DIt8apCH3EA2iIIRMnz79kWuWLl1KIqbs2tvbCSE1NTWtra30AR9//HE4HP7lL3+ZlZU1bdq0ioqKkZGRu+66iz7+oYceIoQsWbIkHA4PDAz827/9W25u7pYtWyoqKrKysgghly5dunTpEiEkKytryZIl991336lTp7KyshYsWPCb3/xm0aJFhJCDBw8ePHiQEJKbm1tXV/fggw8SQm666abHHnuMvv769etl/u6AYStWrKCXnfnz569fv/7DDz8Mh8P/93//N3v27Nzc3JqaGvqAxsbGcDgctfvxuzf/djgc7u3tnTJlyvTp059//vkFCxbk5OT09PQIujS/MfSfsrOzy8rKqqqqsrOzp0+fPjQ0xJ+yi/UbJHhrkAoCEovo78nEa3JzcyMD0n//938TQsrKyv70pz/19PQMDw9zT8/JyaFLUPv27eMHiSeffJIQ8tZbb/3pT38ihNTX19P76W87F5Dy8/Pp/SMjIz09PefPn//qq6+ee+45Qsju3btpQKK/rufOnSOE3H333eFweGhoiIiYeYdMNjQ01NjYOH/+fO4PYqfTuXfvXq43joyMvPzyy3/961/DMbpfmNe9BbdfeeUV7jE+n48QsnHjRkGX5qP/tGDBAvrjz3/+c0LI3r17+QEp1m+Q4K1BKpiyY1RxcfHX19DfNIEHH3ywrKysvb394Ycfzs/PLysru3DhguAx9B4uW4/euHjx4tdff00ImTt3Lr1/5syZ/Gfdfvvt9IZWq92zZ8/SpUsNBkNrayv/MZMnTyaETJw4kRAyffp0+uBxfmRQt9HR0aGhodra2o8++uj8+fOvvPJKVlYWNwlGe6NWq3366adpR43T/aL68MMPCSGVlZU6nW7OnDmEEBqWCK9L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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"% Basic Graphs\n",
"% Listing M.10\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"y = normrnd(0, 1, 50, 1);\n",
"z = trnd(4, 50, 1);\n",
"\n",
"subplot(2,2,1)\n",
"bar(y) % bar plot\n",
"title(\"Bar plot\")\n",
"subplot(2,2,2)\n",
"plot(y) % line plot\n",
"title(\"Line plot\")\n",
"subplot(2,2,3)\n",
"histogram(y) % histogram\n",
"title(\"Histogram\")\n",
"subplot(2,2,4)\n",
"scatter(y,z) % scatter plot\n",
"title(\"Scatter plot\")"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"ans =\n",
"\n",
" logical\n",
"\n",
" 1\n",
"\n",
"\n",
"ans =\n",
"\n",
" logical\n",
"\n",
" 1\n",
"\n",
"\n"
]
}
],
"source": [
"% Miscellaneous Useful Functions\n",
"% Listing M.11\n",
"% Last updated June 2018\n",
"%\n",
"%\n",
"\n",
"%% Convert objects from one type to another with int8() etc\n",
"%% To check type, use isfloat(object), isinteger(object) and so on\n",
"x = 8.0;\n",
"isfloat(x)\n",
"x = int8(x);\n",
"isinteger(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"***"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Chapter 1: Financial Markets, Prices and Risk\n",
"\n",
"- 1.1/1.2: Loading hypothetical stock prices, converting to returns, plotting returns\n",
"- 1.3/1.4: Summary statistics for returns timeseries\n",
"- 1.5/1.6: Autocorrelation function (ACF) plots, Ljung-Box test\n",
"- 1.7/1.8: Quantile-Quantile (QQ) plots\n",
"- 1.9/1.10: Correlation matrix between different stocks"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"image/png": "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2+mWmzdv0mkOEydOpFMA+IkAr7/++sSJE4eGhkaOHFlYWKh+5E8++WTatGlZWVn05dWrVwkhOTk5eXl5CQkJvb29n332GSHkz3/+MyFk5syZStuVjk9vUZo9ezYhxOFwvPfee++9915FRcXKlSv5UTE+j+RuC4wm48aNG7du3ZI9oLoLFy40NzevWLGip6fn6tWr9INoPx6A8YzuMwQIFZ16MHr06Geeeaa4uPhv/uZvCCEPP/ywz+cbGhpKT08nhOTn569du/bhhx/mz/zU1NQzZ86IJjUIeTwem81GCCksLKyoqKD30tLhHDr7YN68ec888wwhxGazeTwele0iwktvYGCApnDDhg01NTX079raWvruE088QQh57LHHfvKTn9DEP/HEE7/4xS9mz55NG2TCMSThR9B80Xf5l3/9619ra2tp3t98883Dhw/PmTOHEPLmm2/q9VsAhAIBCaIex3H/9E//RMftCSEJCQlPP/30p59+St+9dOkSbYVQ8+bNa2xsLCgosNlsHMepBCSfz9fa2so3ccaOHVtTU0O3f/rpp/zc8SlTprS0tKhvFxHFj/Pnz8+YMYNuHD169O7du/m3Xn31VZqvwsLCxsZGep/TyJEjt23bRlt4gQYkn8/3k5/8hMZseig6dRCABSN8d89mgKjm9Xrb29sTExOnTJkiml9ACBkcHPz4449nzZrFD+DfuHFDOugi68aNGzdu3HA4HKLDOp3O69evC8ei1Lerc7vdN2/eHD9+vOhTBgcHr1+/npaWZjKZvF7v9evXH3jggdBXJHI6nV999RU9bIiHAtALAhIAADABlSMAAGACE9O+e3t729raJk2alJmZqbLb6dOnH3nkEf4lx3H8ajGEkKlTp44bNy6MqQQAgHAyPiDV1tbu3LkzNze3ubm5qKhow4YNsrvt27fv0KFDp0+f5rccOXJkz5499H51Qkh1dTWdbQUAANHI4DEkj8eTnZ19+PBhh8PBcVxBQcGvf/1rOteW53K5Kisr6+rqRo8eLQxIGzdufOihh0R3bAAAQJQyeAzp1KlTZrOZ3s1utVrz8vKkT6CpqqqyWq07duwQbb948aLdbuc4zu8aLQAAwD6Du+xcLte0adP4l2PGjOHvt+dt3rzZZDKJFsn3eDxXr17dunUrx3Eul2vp0qX8k2x46iNSAADxpq2tzegkqDE4IHk8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ACYgIAEAABMQkAAAgAkISAAAwAQEJAAAYAICEgAAMAEBCQAAmICABAAATEBAAjCGzYKlvgGGQUACAAAmICABAAATEJAAAIAJCEgAAMAEBCQAAGACAhIAADCB3YDU29t77NixtrY2v3uePn06AukBAICwYjQg1dbWFhcX19XVrV27du/evSp77tu376WXXopYwgAAIEwSjU6ADI/HU15efvjwYYfDwXFcQUFBUVGRzWYT7eZyuSorK+vq6kaPHm1EMgEAQE8stpBOnTplNpsdDgchxGq15uXlnTlzRrpbVVWV1WrdsWOHyqEy7wpXWgEA2BZFxSCLLSSXyzVt2jT+5ZgxY9rb26W7bd682WQyNTQ0qBxKyxAUAEAM44tB9mMSiy0kj8djMt1LmMlk8nq90t2E+wAAQLRjpUzftm1bVlZWVlbWI488kpSU5PF4+Le8Xm9iIostOYCg5dstJ9dlGZ0KALawUtCXlJQUFBQQQhITE30+34ULF/i3nE7n4sWLjUsaAABEAisBacqUKVOmTKF/0w66hoaG+fPnd3R0NDY2bt26lb7V0tKSmpqalpZmWEIBACA8WAlIQiaTadeuXRs3bnQ4HK2trZWVlSkpKfStqqqqwsLCZcuWGZtCAADQ3Qifz2d0GsIlMzMTs+wAACj2i0RWJjUAAECcQ0ACAAAmICABAAATEJAAAIAJCEgAAMAEBCQAAGACAhIAADABAQkAAJiAgAQAAExAQAIAACYgIAEAABMQkAAAgAkISAAAwAQEJAAAYAICEgAAMAEBCQAAmICABAAATEBAAgAAJiAgAQAAExCQAACACQhIAADABAQkAABgAgISAAAwAQEJAACYgIAEAABMQEACAAAmICABAAATEJAAAIAJCEgAAMAEBCQAAGACAhIAADABAQkAAJiAgAQAAExAQAIAACYgIAEAABMQkAAAgAkISAAAwAQEJAAAYAICEgAAMAEBCQAAmICABAAATEBAAgAAJiAgAQAAExCQAACACQhIAADABAQkAABggvEBqbe399ixY21tbX73PH36NP83x3EfCXz22WfhTCNbMjMzjU5CWMRqvkjsZg35An0lGvvxtbW1O3fuzM3NbW5uLioq2rBhg9Ke+/btO3ToEB+Tjhw5smfPnqSkJPqyurp63rx5kUgxAACEh5EByePxlJeXHz582OFwcBxXUFBQ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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"% Download S&P 500 data in MATLAB\n",
"% Listing 1.2\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"price = csvread('index.csv', 1, 0);\n",
"y=diff(log(price)); % calculate returns\n",
"\n",
"plot(y) % plot returns\n",
"title(\"S&P500 returns\")\n",
"\n",
"\n",
"% END\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"ans =\n",
"\n",
" 2.5816e-04\n",
"\n",
"\n",
"ans =\n",
"\n",
" 0.0100\n",
"\n",
"\n",
"ans =\n",
"\n",
" -0.1020\n",
"\n",
"\n",
"ans =\n",
"\n",
" 0.1067\n",
"\n",
"\n",
"ans =\n",
"\n",
" 0.1526\n",
"\n",
"\n",
"ans =\n",
"\n",
" 16.9812\n",
"\n",
"Warning: P is less than the smallest tabulated value, returning 0.001.\n",
"> In jbtest (line 136)\n",
"\n"
]
}
],
"source": [
"% Sample statistics in MATLAB\n",
"% Listing 1.4\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"mean(y)\n",
"std(y)\n",
"min(y)\n",
"max(y)\n",
"skewness(y)\n",
"kurtosis(y)\n",
"[h,pValue,stat]=jbtest(y);\n",
"\n",
"%% NOTE: in MATLAB some functions require name-value pairs\n",
"%% e.g. [h,pValue,stat]=jbtest(y);"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"% ACF plots and the Ljung-Box test in MATLAB\n",
"% Listing 1.6\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"%% subplots here are just for ease of visualization\n",
"\n",
"subplot(1,2,1)\n",
"autocorr(y, 20)\n",
"subplot(1,2,2)\n",
"autocorr(y.^2, 20)\n",
"\n",
"[h,pValue,stat]=lbqtest(y,'lags',20); \n",
"[h,pValue,stat]=lbqtest(y.^2,'lags',20);"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"% QQ plots in MATLAB\n",
"% Listing 1.8\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"%% subplots here are just for ease of visualization\n",
"\n",
"subplot(1,2,1)\n",
"qqplot(y)\n",
"subplot(1,2,2)\n",
"qqplot(y, fitdist(y,'tLocationScale'))"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"ans =\n",
"\n",
" 1.0000 0.2297 0.2126\n",
" 0.2297 1.0000 0.1451\n",
" 0.2126 0.1451 1.0000\n",
"\n",
"\n"
]
}
],
"source": [
"% Download stock prices in MATLAB\n",
"% Listing 1.10\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"price = csvread('stocks.csv', 1, 0);\n",
"y=diff(log(price));\n",
"corr(y) % correlation matrix"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"***"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Chapter 2: Univariate Volatility Modelling\n",
"\n",
"- 2.1/2.2: GARCH and t-GARCH estimation\n",
"- 2.3/2.4: APARCH estimation"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" TARCH(P,O,Q) parameter estimation with different error distributions:\n",
" Normal, Students-T, Generalized Error Distribution, Skewed T\n",
" Estimation of ARCH or GARCH models if o=0 and tarch_type=2\n",
" Estimation of TARCH or GJR asymmetric models if o>0 and tarch_type=1 or 2\n",
" \n",
" USAGE:\n",
" [PARAMETERS] = tarch(EPSILON,P,O,Q)\n",
" [PARAMETERS,LL,HT,VCVROBUST,VCV,SCORES,DIAGNOSTICS] = \n",
" tarch(EPSILON,P,O,Q,ERROR_TYPE,TARCH_TYPE,STARTINGVALS,OPTIONS)\n",
" \n",
" INPUTS:\n",
" EPSILON - A column of mean zero data\n",
" P - Positive, scalar integer representing the number of symmetric innovations\n",
" O - Non-negative scalar integer representing the number of asymmetric innovations (0\n",
" for symmetric processes) \n",
" Q - Non-negative, scalar integer representing the number of lags of conditional\n",
" variance (0 for ARCH) \n",
" ERROR_TYPE - [OPTIONAL] The error distribution used, valid types are:\n",
" 'NORMAL' - Gaussian Innovations [DEFAULT]\n",
" 'STUDENTST' - T distributed errors\n",
" 'GED' - Generalized Error Distribution\n",
" 'SKEWT' - Skewed T distribution\n",
" TARCH_TYPE - [OPTIONAL] The type of variance process, either\n",
" 1 - Model evolves in absolute values\n",
" 2 - Model evolves in squares [DEFAULT]\n",
" STARTINGVALS - [OPTIONAL] A (1+p+o+q), plus 1 for STUDENTST OR GED (nu), plus 2 for SKEWT\n",
" (nu,lambda), vector of starting values. \n",
" [omega alpha(1) ... alpha(p) gamma(1) ... gamma(o) beta(1) ... beta(q) [nu lambda]]'.\n",
" OPTIONS - [OPTIONAL] A user provided options structure. Default options are below.\n",
" \n",
" OUTPUTS:\n",
" PARAMETERS - A 1+p+o+q column vector of parameters with\n",
" [omega alpha(1) ... alpha(p) gamma(1) ... gamma(o) beta(1) ... beta(q) [nu lambda]]'.\n",
" LL - The log likelihood at the optimum\n",
" HT - The estimated conditional variances\n",
" VCVROBUST - Robust parameter covariance matrix\n",
" VCV - Non-robust standard errors (inverse Hessian)\n",
" SCORES - Matrix of scores (# of params by t)\n",
" DIAGNOSTICS - Structure of optimization outputs and other values useful for functions calling TARCH.\n",
" \n",
" COMMENTS:\n",
" The following (generally wrong) constraints are used:\n",
" (1) omega > 0\n",
" (2) alpha(i) >= 0 for i = 1,2,...,p\n",
" (3) gamma(i) + alpha(i) > 0 for i=1,...,o\n",
" (3) beta(i) >= 0 for i = 1,2,...,q\n",
" (4) sum(alpha(i) + 0.5*gamma(j) + beta(k)) < 1 for i = 1,2,...p and\n",
" j = 1,2,...o, k=1,2,...,q\n",
" (5) nu>2 of Students T and nu>1 for GED\n",
" (6) -.99\n",
"***"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Chapter 3: Multivariate Volatility Models\n",
"\n",
"- 3.1/3.2: Loading hypothetical stock prices\n",
"- 3.3/3.4: EWMA estimation\n",
"- 3.5/3.6: OGARCH estimation (unavailable as of June 2018)\n",
"- 3.7/3.8: DCC estimation (unavailable as of June 2018)\n",
"- 3.9/3.10: Comparison of EWMA, OGARCH, DCC (unavailable as of June 2018)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"% Download stock prices in MATLAB\n",
"% Listing 3.2\n",
"% Last updated August 2016\n",
"%\n",
"%\n",
"\n",
"p = csvread('stocks.csv',1,0);\n",
"p = p(:,[1,2]); % consider first two stocks\n",
"\n",
"y = diff(log(p))*100; % convert prices to returns\n",
"y(:,1)=y(:,1)-mean(y(:,1)); % subtract mean\n",
"y(:,2)=y(:,2)-mean(y(:,2));\n",
"T = length(y);"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"% EWMA in MATLAB\n",
"% Listing 3.4\n",
"% Last updated June 2018\n",
"%\n",
"%\n",
"\n",
"%% create a matrix to hold covariance matrix for each t\n",
"EWMA = nan(T,3); \n",
"lambda = 0.94;\n",
"S = cov(y); % initial (t=1) covar matrix\n",
"EWMA(1,:) = S([1,4,2]); % extract var and covar\n",
"for i = 2:T % loop though the sample\n",
" S = lambda*S+(1-lambda)* y(i-1,:)'*y(i-1,:);\n",
" EWMA(i,:) = S([1,4,2]); % convert matrix to vector\n",
"end\n",
"EWMArho = EWMA(:,3)./sqrt(EWMA(:,1).*EWMA(:,2)); % calculate correlations"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"% OGARCH in MATLAB\n",
"% Listing 3.6\n",
"% Last updated August 2016\n",
"%\n",
"%\n",
"\n",
"[par, Ht] = o_mvgarch(y,2, 1,1,1);\n",
"Ht = reshape(Ht,4,T)';\n",
"%% Ht comes from o_mvgarch as a 3D matrix, this transforms it into a 2D matrix\n",
"OOrho = Ht(:,3) ./ sqrt(Ht(:,1) .* Ht(:,4));\n",
"\n",
"%% OOrho is a vector of correlations"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"% DCC in MATLAB\n",
"% Listing 3.8\n",
"% Last updated June 2022\n",
"%\n",
"%\n",
"\n",
"%%The function 'dcc' in MFE toolbox currently cannot work in MATLAB R2022a. \n",
"%%The function 'dcc' use one MATLAB Optimization toolbox function 'fmincon'.\n",
"%%The changes of 'fmincon' cause this problem.\n",
"%%This block can work on Optimization 8.3\n",
"\n",
"[p, lik, Ht] = dcc(y,1,1,1,1);\n",
"Ht = reshape(Ht,4,T)';\n",
"DCCrho = Ht(:,3) ./ sqrt(Ht(:,1) .* Ht(:,4));\n",
"\n",
"%% DCCrho is a vector of correlations"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"% Correlation comparison in MATLAB\n",
"% Listing 3.10\n",
"% Last updated June 2018\n",
"%\n",
"%\n",
"\n",
"plot([EWMArho,OOrho,DCCrho])\n",
"legend('EWMA','DCC','OGARCH','Location','SouthWest')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"***"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Chapter 4: Risk Measures\n",
"\n",
"- 4.1/4.2: Expected Shortfall (ES) estimation under normality assumption"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"VaR =\n",
"\n",
" 0 1.2816 1.6449 1.9600 2.3263 3.0902\n",
"\n",
"\n",
"ES =\n",
"\n",
" 0.7979 1.7550 2.0627 2.3378 2.6652 3.3671\n",
"\n",
"\n"
]
}
],
"source": [
"% ES in MATLAB\n",
"% Listing 4.2\n",
"% Last updated August 2016\n",
"%\n",
"%\n",
"\n",
"p = [0.5,0.1,0.05,0.025,0.01,0.001];\n",
"VaR = -norminv(p)\n",
"ES = normpdf(norminv(p))./p"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"***"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Chapter 5: Implementing Risk Forecasts\n",
"\n",
"- 5.1/5.2: Loading hypothetical stock prices, converting to returns\n",
"- 5.3/5.4: Univariate HS Value at Risk (VaR)\n",
"- 5.5/5.6: Multivariate HS VaR\n",
"- 5.7/5.8: Univariate ES VaR\n",
"- 5.9/5.10: Normal VaR\n",
"- 5.11/5.12: Portfolio Normal VaR\n",
"- 5.13/5.14: Student-t VaR (unavailable as of June 2018)\n",
"- 5.15/5.16: Normal ES VaR\n",
"- 5.17/5.18: Direct Integration Normal ES VaR\n",
"- 5.19/5.20: MA Normal VaR\n",
"- 5.21/5.22: EWMA VaR\n",
"- 5.23/5.24: Two-asset EWMA VaR\n",
"- 5.25/5.26: GARCH(1,1) VaR"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"% Download stock prices in MATLAB\n",
"% Listing 5.2\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"stocks = csvread('stocks.csv',1,0);\n",
"p1 = stocks(:,1); % consider first two stocks\n",
"p2 = stocks(:,2); \n",
"\n",
"y1=diff(log(p1)); % convert prices to returns\n",
"y2=diff(log(p2));\n",
"y=[y1 y2];\n",
"T=length(y1);\n",
"value = 1000; % portfolio value\n",
"p = 0.01; % probability"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"VaR1 =\n",
"\n",
" 17.4982\n",
"\n",
"\n"
]
}
],
"source": [
"% Univariate HS VaR in MATLAB\n",
"% Listing 5.4\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"ys = sort(y1); % sort returns\n",
"op = ceil(T*p); % p percent smallest, rounded up to meet VaR probability requirement\n",
"VaR1 = -ys(op)*value"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"VaR2 =\n",
"\n",
" 18.7263\n",
"\n",
"\n"
]
}
],
"source": [
"% Multivariate HS VaR in MATLAB\n",
"% Listing 5.6\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"w = [0.3; 0.7]; % vector of portfolio weights\n",
"yp = y*w; % portfolio returns\n",
"yps = sort(yp);\n",
"VaR2 = -yps(op)*value"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"ES1 =\n",
"\n",
" 22.5634\n",
"\n",
"\n"
]
}
],
"source": [
"% Univariate ES in MATLAB\n",
"% Listing 5.8\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"ES1 = -mean(ys(1:op))*value"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"VaR3 =\n",
"\n",
" 14.9496\n",
"\n",
"\n"
]
}
],
"source": [
"% Normal VaR in MATLAB\n",
"% Listing 5.10\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"sigma = std(y1); % estimate volatility\n",
"VaR3 = -sigma * norminv(p) * value"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"VaR4 =\n",
"\n",
" 17.0411\n",
"\n",
"\n"
]
}
],
"source": [
"% Portfolio normal VaR in MATLAB\n",
"% Listing 5.12\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"sigma = sqrt(w' * cov(y) * w); % portfolio volatility\n",
"VaR4 = - sigma * norminv(p) * value"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"VaR5 =\n",
"\n",
" 17.1234\n",
"\n",
"\n"
]
}
],
"source": [
"% Student-t VaR in MATLAB\n",
"% Listing 5.14\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"scy1=y1*100; % scale the returns\n",
"res=mle(scy1,'distribution','tlocationscale');\n",
"sigma1 = res(2)/100; % rescale the volatility\n",
"nu = res(3);\n",
"VaR5 = - sigma1 * tinv(p,nu) * value"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"ES2 =\n",
"\n",
" 17.1272\n",
"\n",
"\n"
]
}
],
"source": [
"% Normal ES in MATLAB\n",
"% Listing 5.16\n",
"% Last updated June 2018\n",
"%\n",
"%\n",
"\n",
"sigma = std(y1);\n",
"ES2=sigma*normpdf(norminv(p))/p * value"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"ES =\n",
"\n",
" 17.1266\n",
"\n",
"\n"
]
}
],
"source": [
"% Direct integration ES in MATLAB\n",
"% Listing 5.18\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"VaR = -norminv(p);\n",
"ES = -sigma*quad(@(q) q.*normpdf(q),-6,-VaR)/p*value"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"VaR6 =\n",
"\n",
" 16.0505\n",
"\n",
"\n",
"VaR6 =\n",
"\n",
" 16.1491\n",
"\n",
"\n",
"VaR6 =\n",
"\n",
" 18.8543\n",
"\n",
"\n",
"VaR6 =\n",
"\n",
" 18.8821\n",
"\n",
"\n",
"VaR6 =\n",
"\n",
" 16.2305\n",
"\n",
"\n",
"VaR6 =\n",
"\n",
" 16.1698\n",
"\n",
"\n"
]
}
],
"source": [
"% MA normal VaR in MATLAB\n",
"% Listing 5.20\n",
"% Last updated June 2018\n",
"%\n",
"%\n",
"\n",
"WE=20;\n",
"for t=T-5:T\n",
" t1=t-WE+1;\n",
" window=y1(t1:t); % estimation window\n",
" sigma=std(window);\n",
" VaR6 = -sigma * norminv(p) * value\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"VaR7 =\n",
"\n",
" 16.7534\n",
"\n",
"\n"
]
}
],
"source": [
"% EWMA VaR in MATLAB\n",
"% Listing 5.22\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"lambda = 0.94;\t\n",
"s11 = var(y1(1:30)); % initial variance\n",
"for t = 2:T\t\n",
" s11 = lambda * s11 + (1-lambda) * y1(t-1)^2;\n",
"end\n",
"VaR7 = -norminv(p) * sqrt(s11) * value "
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"VaR8 =\n",
"\n",
" 20.5036\n",
"\n",
"\n"
]
}
],
"source": [
"% Two-asset EWMA VaR in MATLAB\n",
"% Listing 5.24\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"s = cov(y); % initial covariance\n",
"for t = 2:T\n",
" s = lambda * s + (1-lambda) * y(t-1,:)' * y(t-1,:);\n",
"end\n",
"sigma = sqrt(w' * s * w); % portfolio vol\n",
"VaR8 = - sigma * norminv(p) * value "
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"____________________________________________________________\n",
" Diagnostic Information\n",
"\n",
"Number of variables: 3\n",
"\n",
"Functions \n",
"Objective: tarch_likelihood\n",
"Gradient: finite-differencing\n",
"Hessian: bfgs\n",
" \n",
"\n",
"Algorithm selected\n",
" quasi-newton\n",
"\n",
"\n",
"____________________________________________________________\n",
" End diagnostic information\n",
" First-order \n",
" Iteration Func-count f(x) Step-size optimality\n",
" 0 4 -20893.3 31.2\n",
" 1 12 -20895.9 0.00481557 15.9 \n",
" 2 16 -20897 1 10 \n",
" 3 20 -20898.6 1 7.49 \n",
" 4 28 -20900.8 10 13.9 \n",
" 5 32 -20902.8 1 14.4 \n",
" 6 36 -20903.6 1 2.14 \n",
" 7 40 -20903.6 1 1.34 \n",
" 8 44 -20903.6 1 0.524 \n",
" 9 48 -20903.6 1 0.0392 \n",
" 10 52 -20903.6 1 0.000925 \n",
" 11 56 -20903.6 1 0.000711 \n",
" 12 68 -20903.6 0.112986 0.00033 \n",
"\n",
"Local minimum possible.\n",
"\n",
"fminunc stopped because the size of the current step is less than\n",
"the value of the step size tolerance.\n",
"\n",
"\n",
"omega =\n",
"\n",
" 9.6214e-07\n",
"\n",
"\n",
"alpha =\n",
"\n",
" 0.0603\n",
"\n",
"\n",
"beta =\n",
"\n",
" 0.9167\n",
"\n",
"\n",
"sigma2 =\n",
"\n",
" 5.2688e-05\n",
"\n",
"\n",
"VaR9 =\n",
"\n",
" 16.8862\n",
"\n",
"\n"
]
}
],
"source": [
"% GARCH in MATLAB\n",
"% Listing 5.26\n",
"% Last updated August 2016\n",
"%\n",
"%\n",
"\n",
"[parameters,ll,ht]=tarch(y1,1,0,1);\n",
"omega = parameters(1)\n",
"alpha = parameters(2)\n",
"beta = parameters(3)\n",
"sigma2 = omega + alpha*y1(end)^2 + beta*ht(end) % calc sigma2 for t+1\n",
"VaR9 = -sqrt(sigma2) * norminv(p) * value "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"***"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Chapter 6: Analytical Value-at-Risk for Options and Bonds\n",
"\n",
"- 6.1/6.2: Black-Scholes function definition\n",
"- 6.3/6.4: Black-Scholes option price calculation example"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"% Black-Scholes function in MATLAB\n",
"% Listing 6.2\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"%% To run this code block in Jupyter notebook:\n",
"%% delete all lines above the line with file bs.m, then run\n",
"\n",
"\n",
"\n",
"\n",
"%%file bs.m\n",
"function res = bs(K,P,r,sigma,T)\n",
"\td1 = (log(P./K)+(r+(sigma^2)/2)*T)./(sigma*sqrt(T));\n",
"\td2 = d1 - sigma*sqrt(T);\n",
"\tres.Call = P.*normcdf(d1,0,1)-K.*exp(-r*T).*normcdf(d2,0,1);\n",
"\tres.Put = K.*exp(-r*T).*normcdf(-d2,0,1)-P.*normcdf(-d1,0,1);\n",
"\tres.Delta.Call = normcdf(d1,0,1);\n",
"\tres.Delta.Put = res.Delta.Call -1;\n",
"\tres.Gamma = normpdf(d1,0,1)./(P*sigma*sqrt(T));\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"f = \n",
"\n",
" struct with fields:\n",
"\n",
" Call: 13.4985\n",
" Put: 1.2764\n",
" Delta: [1x1 struct]\n",
" Gamma: 0.0172\n",
"\n",
"\n"
]
}
],
"source": [
"% Black-Scholes in MATLAB\n",
"% Listing 6.4\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"f=bs(90,100,0.05,0.2,0.5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"***"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Chapter 7: Simulation Methods for VaR for Options and Bonds\n",
"\n",
"- 7.1/7.2: Plotting normal distribution transformation\n",
"- 7.3/7.4: Random number generation from Uniform(0,1), Normal(0,1)\n",
"- 7.5/7.6: Bond pricing using yield curve\n",
"- 7.7/7.8: Yield curve simulations\n",
"- 7.9/7.10: Bond price simulations\n",
"- 7.11/7.12: Black-Scholes analytical pricing of call\n",
"- 7.13/7.14: Black-Scholes Monte Carlo simulation pricing of call\n",
"- 7.15/7.16: Option density plots\n",
"- 7.17/7.18: VaR simulation of portfolio with only underlying\n",
"- 7.19/7.20: VaR simulation of portfolio with only call\n",
"- 7.21/7.22: VaR simulation of portfolio with call, put and underlying\n",
"- 7.23/7.24: Simulated two-asset returns\n",
"- 7.25/7.26: Two-asset portfolio VaR\n",
"- 7.27/7.28: Two-asset portfolio VaR with a call"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"% Transformation in MATLAB\n",
"% Listing 7.2\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"x=-3:0.1:3;\n",
"plot(x,normcdf(x))\n",
"title(\"CDF of Normal Distribution\")"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"ans =\n",
"\n",
" 0.8147\n",
" 0.9058\n",
" 0.1270\n",
" 0.9134\n",
" 0.6324\n",
" 0.0975\n",
" 0.2785\n",
" 0.5469\n",
" 0.9575\n",
" 0.9649\n",
"\n",
"\n",
"ans =\n",
"\n",
" -1.3499\n",
" 3.0349\n",
" 0.7254\n",
" -0.0631\n",
" 0.7147\n",
" -0.2050\n",
" -0.1241\n",
" 1.4897\n",
" 1.4090\n",
" 1.4172\n",
"\n",
"\n",
"ans =\n",
"\n",
" 1.2458\n",
" -1.8803\n",
" 0.4892\n",
" 2.4722\n",
" 0.5898\n",
" 1.0088\n",
" 0.8056\n",
" -0.2653\n",
" 0.2206\n",
" -0.8372\n",
"\n",
"\n"
]
}
],
"source": [
"% Various RNs in MATLAB\n",
"% Listing 7.4\n",
"% Last updated August 2016\n",
"%\n",
"%\n",
"\n",
"rng default; % set seed\n",
"\n",
"S=10;\n",
"\n",
"rand(S,1)\n",
"randn(S,1)\n",
"trnd(4,S,1)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"P =\n",
"\n",
" 9.9132\n",
"\n",
"\n"
]
}
],
"source": [
"% Price bond in MATLAB\n",
"% Listing 7.6\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"yield = [5.00 5.69 6.09 6.38 6.61...\n",
" 6.79 6.94 7.07 7.19 7.30]; % yield curve\n",
"T = length(yield); \n",
"r=0.07; % initial yield rate\n",
"Par=10; % par value\n",
"coupon=r*Par; % coupon payments\n",
"cc=zeros(1,T)+coupon; % vector of cash flows \n",
"cc(T)=cc(T)+Par; % add par to cash flows\n",
"P=sum(cc./((1+yield./100).^(1:T))) % calculate price"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"% Simulate yields in MATLAB\n",
"% Listing 7.8\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"randn('state',123); % set the seed\n",
"sigma = 1.5; % daily yield volatility\n",
"S = 8; % number of simulations\n",
"r = randn(1,S)*sigma; % generate random numbers\n",
"\n",
"ysim=nan(T,S);\n",
"for i=1:S\n",
" ysim(:,i)=yield+r(i);\n",
"end\n",
"ysim=repmat(yield',1,S)+repmat(r,T,1);\n",
"plot(ysim)\n",
"title(\"Simulated yield curves\")"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"image/png": "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sStfLrHbq+CJH/9Oww+GfQcQG7+QkJCwbdu24cOHNzU1EdHcuXOp+yf2rl27GhoannnmmQcffPAf//jHfffdp1Qqa2trP/roo+Tk5Mcee+y2227LysoqKyu75557vv3tb5eUlAwZMqSrq8vty7GWgePHj//lL3+pr6//4x//SETs77CvvvnNb3oKqX/vtx9SUlI++uij55577tFHH929e/ewYcOuX7/udIyXt+x4hp988slx48aVlpY+//zzs2bNeumllz777LOioqKHHnpo5syZZ8+enTdv3ooVK/bt2+epbsF873vfe/7552tqaioqKkaNGvXQQw/deeed/ThR6enpfXrdp556qqGh4fz583//+9/Zb3/vp+6ee+7JzMysqKiYO3fuvffeW1paevHixXHjxi1evNjteSAiHy/cvHnz4uPjr1y5Eh8ff/fdd9+4cYOIjEZjbm6uWH0UOX3IvcfsC6cnDMQldtW/vwUv/Ph3Goak7sQKSb7fGPvrX/9abKMYMmTIpk2b2PF79+5lTQeLFi2y2WzXrl1bu3Yt+wNjhZ999hk78vPPP2cDisaNG/f222+zoa5lZWU2l7s1LRaL+FU1bdq0F154gYhyc3NZ3SI6OpoddujQITFUm+cRCl5C8vRfvLxfp0ENvgSj1+sTExPZ87DB7uQyqMHTW3Y9w2fPnmUjEYho2LBh4mj7CxcuiM2tq1evZs/mdlDDiBEjfvWrX7EWmPHjx4sDo72cKKcOarbLBhr4+Lrs5Xbv3s02xo0bxy6969V3ernPP//8wQcfZMdERUWtXbvWYrF4OQ+eLpyrJ5980vGSsRf961//6hqD0yXwcjYceRnU4PSE/r3EXsLzcokdr4KPn20vH1rXMCLNIFv3OYXAMRqNX3311dixYx1/RXZ2dn7xxReOhVar9fLly3feeafYn/z111+/8847o0aNYt3ORBQbG/vll19euXLFbecBEZnN5uvXr3t6tK9cQ/KF2/fbv1f/4osv7rzzTu9NIp7esusZNpvNX3755ejRo50CY70OvrzHr7/++urVq2PGjHENtR8nqtfXHTp06M2bN2/evCmTydy+rneuZ4DxdB78deF6DcBfTxiIS+xJ/y6xJ/79Ow0bSEhcs1qt8fHxRqOR3X9XVlZ24MCByZMnNzQ0SB0aBIOYkPzyJQjAOSQk3pWUlDzzzDON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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"% Simulate bond prices in MATLAB\n",
"% Listing 7.10\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"SP = nan(S,1);\n",
"for s = 1:S % S simulations\n",
" SP(s) = sum(cc./(1+ysim(:,s)'./100).^((1:T)));\n",
"end\n",
"SP = SP-(mean(SP) - P); % correct for mean\n",
"bar(SP)\n",
"\n",
"S = 50000;\n",
"rng(\"default\")\n",
"r = randn(S,1) * sigma;\n",
"ysim = nan(T,S);\n",
"for i = 1:S\n",
" ysim(:,i) = yield' + r(i);\n",
"end\n",
"\n",
"SP = nan(S,1);\n",
"for i = 1:S\n",
" SP(i) = sum(cc./(1+ysim(:,i)'./100).^((1:T)));\n",
"end\n",
"\n",
"SP = SP - (mean(SP)-P);\n",
"\n",
"histfit(SP)\n",
"title(\"Histogram of simulated bond prices with fitted normal\")"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"f = \n",
"\n",
" struct with fields:\n",
"\n",
" Call: 11.0873\n",
" Put: 0.0997\n",
" Delta: [1x1 struct]\n",
" Gamma: 0.0107\n",
"\n",
"\n"
]
}
],
"source": [
"% Black-Scholes valuation in MATLAB\n",
"% Listing 7.12\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"P0 = 50; % initial spot price\n",
"sigma = 0.2; % annual volatility\n",
"r = 0.05; % annual interest\n",
"T = 0.5; % time to expiration\n",
"X = 40; % strike price\n",
"f = bs(X,P0,r,sigma,T) % analytical call price\n",
"\n",
"%% This calculation uses the Black-Scholes pricing function (Listing 6.1/6.2)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"ans =\n",
"\n",
" 11.0996\n",
"\n",
"\n"
]
}
],
"source": [
"% Black-Scholes simulation in MATLAB\n",
"% Listing 7.14\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"randn('state',0); % set seed\n",
"S = 1e6; % number of simulations\n",
"ysim = randn(S,1)*sigma*sqrt(T)-0.5*T*sigma^2; % sim returns, lognorm corrected\n",
"F = P0*exp(r*T)*exp(ysim); % sim future prices\n",
"SP = F-X; % payoff\n",
"SP(find(SP < 0)) = 0; % set negative outcomes to zero\n",
"fsim = SP * exp(-r*T) ; % discount\n",
"mean(fsim) % simulated price "
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"image/png": "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egXan6irj0NXT+wqeJdXtcM9JPFdamxs1Gg08+bNs9lszz33HP4mQ5OdJNra2lpaWn7zm9+cPn26rq4uIyNDrVY///zzznsGBQUR0a233kpEo0ePJiKVqne/FJVK9dFHH02fPj0wMJB9jzg7deoUEa1YsWLgwIFhYWFEJAgCayi477772D4TJkzo6hTh4eFs40c/+hERse8C8aED1hozfvx4Ftuzzz774IMPugxg4cKFc+fO3bdv37JlyyZMmDB37tyLFy/26rVDfX29/S/91KlTX3zxhfjw7rvv3rNnzz333COWVFVVsV8NEUVERJSXl9vfE3rnnXcGDRpERIMHDyaiH374wf5c586dIyKtVssednVVOGO/1gcffJA9ZBusUZqIQkND2QY79fXr152PINEVaP+srj4O3T/ROfheXdUjRoxYsmRJfn6+0Wj8xz/+MWnSJJevyHcgIUnib3/7W2Bg4J///GciuuOOO1avXj1o0CD2OekDq9XKNlweITs7+6WXXlqyZElrayu72+Sc0oKDg4lo586dDQ0N33///Q8//JCTk8M+QuKnpa6urqsAWAWOiGpra4mI9V8nooCAAOed2WHFD+0rr7zy+eefuwxgyJAhn3zyydmzZ7du3RobG6vX6//0pz/15A0B0ciRIydNmsRyUnFx8alTp+w7Z0dGRjr8jpqbm/39/dm2SqXy8/MTry57M2bM0Gg0n332GfuNE1FTU9PWrVuJKCEhgZV0dVU4Y5dEZWUle8gS29ChQ3v+MiW6Ap2f5fxxuOkTHfT2qn7yySetVuv69eurqqqWL1/e3bvgC3hX0bxTXV0dq/QkJydv27Zt3rx5RPTQQw/ZnJrskpKSbDc2zTk0x2k0mttvv33Pnj1//etfxV+Z/T6sf3lqaqogCKyf7vvvv2+z2QICAoKDgz/++GObzcb+youOjt6/f/9vf/tbtVr9zjvvXLhwwd/ff/To0Z9++unrr7/ODu6yyY6IXn755U8//XTMmDH+/v51dXWsfPny5Ww3+3i+//77W2+99fbbb//ggw9YbE8//bTLAF566SUieu6556qqql5++WV2Fg/+lrzHyZMn//SnP2VnZ7v86caNG8Umu507d27YsEH80YQJE65fv+7yWew3cvvtt7/44oubN29mNYbHHnvM1vVVYbvxqhOvioaGhhEjRowYMeKdd955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wnSgdJ988glbX27u3LmFhYUGg+Htt9/mHRQoFf/lJ3zEwoUL7R++//77kZGRvIIBcBer1Tp27NhBgwZdvnyZiCIjI8+dO3ft2jXecYEiISF5yE9/+tPp06cTUUtLi06n27Jlyz/+8Q/eQQH017Bhw/7zn/8QUWBgIJt2r62tDQkJ+gZNdh6yZs0aIvrxj398+fLl5cuX7969m3dEAG7w+uuvL1u2LD8///HHH4+JibnjjjtaWlrQfRT6BgnJc9asWaNSqbKzs3kt/QngdpMmTTpx4sSgQYOefPLJ6OjokydPPvLII7yDAqVCQpLWuXPn5s2b51DI+jWo1eqSkhIeQQG4k1gfsu+zA9AHSEjSCg0NPXbsGO8oACTxwQcfPPjgg2PHjiUiq9U6b9687du333HHHbzjAqVCpwbJDe0a79BA8cLCwmpqaric+je/+c2mTZuqq6vZQ7Vafe+9986cObOgoIBLPOAFUEOSFmuyKysri4uLEz+6DJrsoD8yMjICaIqVjDU1NSEhIR4++8WLFw8cOOCwdmpmZubu3buTk5Pt1zYD6DkkJGmJTXZ//etfw8LC2FgNALdQ0XArGbmcuq6u7t5773Uu1+l069evb25uRkc76AM02UmONc2tWLGisrISTXbgHdra2m65xfWfsyoVvlWgj3DpeMjDDz/897//vaWlhXcgAG4wevToc+fOOZefOXNGpVKhegR9gyY7D/n6669LSko+/PBDtVrNSrBsDCjXHXfcERERERcXt2PHDtatzmq1/utf//r1r3+9du1a3tGBUiEheUh2djbvEADc6f333//Vr341c+ZMIho4cGBra+stt9yycePG5cuX8w4NlAoJyUMuXrx4zz332JccOXKEzW4HoFDvvPNOc3NzXV2d1WodPHjw6NGjeUcEyoZ7SJKrr6+vr69/+umnv/322/oOlZWVq1atcjkHpb7CKDS2itueDRagdwYNGhQaGnrPPfcgG0H/oYYkufXr13/99dctLS3i+uXMzJkzNRoNr6gAAOQGCUly7777LhGtWLEiIyOjh129BWOLNnCgxHEBAMgLmuw8JDs7uyfZiDXWFXxrElvtAAB8BBKSJ6SkpLBBG01NTTNmzIiIiHjssce62V8wttKNN5MAALweEpLkpk+f/vXXXwcEBBBRXFzctGnTDh48GBgY+NRTTznsue1YLdsQ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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"% Option density plots in MATLAB\n",
"% Listing 7.16\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"subplot(1,2,1)\n",
"histfit(F);\n",
"title(\"Simulated prices\");\n",
"xline(X, 'LineWidth', 1, 'label', 'Strike');\n",
"\n",
"subplot(1,2,2)\n",
"hist(fsim,100);\n",
"title(\"Option price density\");\n",
"xline(mean(fsim), 'LineWidth', 1, 'label', 'Call');"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"VaR1 =\n",
"\n",
" 2.2906\n",
"\n",
"\n"
]
}
],
"source": [
"% Simulate VaR in MATLAB\n",
"% Listing 7.18\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"randn('state',0); % set seed\n",
"S = 1e7; % number of simulations\n",
"s2 = 0.01^2; % daily variance\n",
"p = 0.01; % probability\n",
"r = 0.05; % annual riskfree rate\n",
"P = 100; % price today\n",
"ysim = randn(S,1)*sqrt(s2)+r/365-0.5*s2; % sim returns\n",
"Psim = P*exp(ysim); % sim future prices \n",
"q = sort(Psim-P); % simulated P/L\n",
"VaR1 = -q(S*p)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"VaR2 =\n",
"\n",
" 1.2150\n",
"\n",
"\n"
]
}
],
"source": [
"% Simulate option VaR in MATLAB\n",
"% Listing 7.20\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"T = 0.25; % time to expiration\n",
"X = 100; % strike price\n",
"sigma = sqrt(s2*250); % annual volatility\n",
"f = bs(X,P,r,sigma,T); % analytical call price\n",
"fsim=bs(X,Psim,r,sigma,T-(1/365)); % sim option prices\n",
"q = sort(fsim.Call-f.Call); % simulated P/L\n",
"VaR2 = -q(p*S)"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"VaR3 =\n",
"\n",
" 1.4951\n",
"\n",
"\n"
]
}
],
"source": [
"% Example 7.3 in MATLAB\n",
"% Listing 7.22\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"X1 = 100;\n",
"X2 = 110;\n",
"f1 = bs(X1,P,r,sigma,T);\n",
"f2 = bs(X2,P,r,sigma,T); \n",
"f1sim=bs(X1,Psim,r,sigma,T-(1/365));\n",
"f2sim=bs(X2,Psim,r,sigma,T-(1/365));\n",
"q = sort(f1sim.Call+f2sim.Put+Psim-f1.Call-f2.Put-P); \n",
"VaR3 = -q(p*S)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"% Simulated two-asset returns in MATLAB\n",
"% Listing 7.24\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"randn('state',12) % set seed\n",
"mu = [r/365 r/365]'; % return mean\n",
"Sigma=[0.01 0.0005; 0.0005 0.02]; % covariance matrix\n",
"y = mvnrnd(mu,Sigma,S); % simulated returns"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"VaR4 =\n",
"\n",
" 25.9700\n",
"\n",
"\n"
]
}
],
"source": [
"% Two-asset VaR in MATLAB\n",
"% Listing 7.26\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"K = 2; \n",
"P = [100 50]'; % prices\n",
"x = [1 1]'; % number of assets\n",
"Port = P'*x; % portfolio at t\n",
"Psim = repmat(P,1,S)' .*exp(y); % simulated prices\n",
"PortSim=Psim * x; % simulated portfolio value\n",
"q = sort(PortSim-Port); % simulated P/L\n",
"VaR4 = -q(S*p)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"VaR5 =\n",
"\n",
" 20.8125\n",
"\n",
"\n"
]
}
],
"source": [
"% A two-asset case in MATLAB with an option\n",
"% Listing 7.28\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"f = bs(P(2),P(2),r,sigma,T);\n",
"fsim=bs(P(2),Psim(:,2),r,sigma,T-(1/365));\n",
"q = sort(fsim.Call+Psim(:,1)-f.Call-P(1)); \n",
"VaR5 = -q(p*S)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"***"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Chapter 8: Backtesting and Stress Testing\n",
"\n",
"- 8.1/8.2: Loading hypothetical stock prices, converting to returns\n",
"- 8.3/8.4: Setting up backtest \n",
"- 8.5/8.6: Running backtest for EWMA/MA/HS/GARCH VaR\n",
"- 8.7/8.8: Backtesting analysis for EWMA/MA/HS/GARCH VaR\n",
"- 8.9/8.10: Bernoulli coverage test\n",
"- 8.11/8.12: Independence test\n",
"- 8.13/8.14: Running Bernoulli/Independence test on backtests\n",
"- 8.15/8.16: Running backtest for EWMA/HS ES\n",
"- 8.17/8.18: Backtesting analysis for EWMA/HS ES"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"% Load data in MATLAB\n",
"% Listing 8.2\n",
"% Last updated August 2016\n",
"%\n",
"%\n",
"\n",
"price = csvread('index.csv', 1, 0);\n",
"\n",
"y=diff(log(price)); % get returns "
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"% Set backtest up in MATLAB\n",
"% Listing 8.4\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"T = length(y); % number of obs for return y\n",
"WE = 1000; % estimation window length \n",
"p = 0.01; % probability\n",
"l1 = ceil(WE*p) ; % HS observation\n",
"value = 1; % portfolio value\n",
"VaR = NaN(T,4); % matrix for forecasts\n",
"%% EWMA setup\n",
"lambda = 0.94;\n",
"s11 = var(y);\n",
"for t = 2:WE\n",
" s11=lambda*s11+(1-lambda)*y(t-1)^2;\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"% Running backtest in MATLAB\n",
"% Listing 8.6\n",
"% Last updated June 2018\n",
"%\n",
"%\n",
"\n",
"for t = WE+1:T\n",
" t1 = t-WE; % start of the data window\n",
" t2 = t-1; % end of data window\n",
" window = y(t1:t2) ; % data for estimation\n",
" s11 = lambda*s11 + (1-lambda)*y(t-1)^2;\n",
" VaR(t,1) = -norminv(p) * sqrt(s11) *value; % EWMA\n",
" VaR(t,2) = -std(window)*norminv(p)*value; % MA\n",
" ys = sort(window);\n",
" VaR(t,3) = -ys(l1)*value; % HS\n",
" [par,ll,ht]=tarch(window,1,0,1);\n",
" h=par(1)+par(2)*window(end)^2+par(3)*ht(end);\n",
" VaR(t,4) = -norminv(p)*sqrt(h)*value; % GARCH(1,1)\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" \"EWMA\" \"Violation Ratio:\" \"0\" \"Volatility:\" \n",
"\n",
" \"MA\" \"Violation Ratio:\" \"0\" \"Volatility:\" \n",
"\n",
" \"HS\" \"Violation Ratio:\" \"0\" \"Volatility:\" \n",
"\n",
" \"GARCH\" \"Violation Ratio:\" \"0\" \"Volatility:\" \n",
"\n",
"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"% Backtesting analysis in MATLAB\n",
"% Listing 8.8\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"names = [\"EWMA\", \"MA\", \"HS\", \"GARCH\"];\n",
"for i=1:4\n",
" VR = length(find(y(WE+1:T)<-VaR(WE+1:T,i)))/(p*(T-WE)); \n",
" s = std(VaR(WE+1:T,i)); \n",
" disp([names(i), \"Violation Ratio:\", VR, \"Volatility:\", s]) \n",
"end\n",
"plot([y(WE+1:T) VaR(WE+1:T,:)])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"% Bernoulli coverage test in MATLAB\n",
"% Listing 8.10\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"%% To run this code block in Jupyter notebook:\n",
"%% delete all lines above the line with bern_test.m, then run\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"%%file bern_test.m\n",
"\n",
"function res=bern_test(p,v)\n",
" lv = length(v);\n",
" sv = sum(v);\n",
" al = log(p)*sv + log(1-p)*(lv-sv);\n",
" bl = log(sv/lv)*sv + log(1-sv/lv)*(lv-sv)\n",
"\tres=-2*(al-bl);\n",
"end\t"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"% Independence test in MATLAB\n",
"% Listing 8.12\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"%% To run this code block in Jupyter notebook:\n",
"%% delete all lines above the line with ind_test.m, then run\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"%%file ind_test.m\n",
"\n",
"function res=ind_test(V)\n",
"\tT=length(V);\n",
"\tJ=zeros(T,4);\n",
"\tfor i = 2:T\n",
"\t\tJ(i,1)=V(i-1)==0 & V(i)==0;\n",
"\t\tJ(i,2)=V(i-1)==0 & V(i)==1;\n",
"\t\tJ(i,3)=V(i-1)==1 & V(i)==0;\n",
"\t\tJ(i,4)=V(i-1)==1 & V(i)==1;\n",
"\tend\t\n",
"\tV_00=sum(J(:,1));\n",
"\tV_01=sum(J(:,2));\n",
"\tV_10=sum(J(:,3));\n",
"\tV_11=sum(J(:,4));\n",
"\tp_00=V_00/(V_00+V_01);\n",
"\tp_01=V_01/(V_00+V_01);\n",
"\tp_10=V_10/(V_10+V_11);\n",
"\tp_11=V_11/(V_10+V_11);\n",
"\that_p=(V_01+V_11)/(V_00+V_01+V_10+V_11);\n",
" \n",
" al = log(1-hat_p)*(V_00+V_10) + log(hat_p)*(V_01+V_11);\n",
" bl = log(p_00)*V_00 + log(p_01)*V_01 + log(p_10)*V_10 + log(p_11)*V_11;\n",
"\tres= -2*(al-bl);\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"bl =\n",
"\n",
" NaN\n",
"\n",
" \"EWMA\" \"Bernoulli Statis...\" \"P-value:\" \"Independence Sta...\" \"P-value:\" \n",
"\n",
"\n",
"bl =\n",
"\n",
" NaN\n",
"\n",
" \"MA\" \"Bernoulli Statis...\" \"P-value:\" \"Independence Sta...\" \"P-value:\" \n",
"\n",
"\n",
"bl =\n",
"\n",
" NaN\n",
"\n",
" \"HS\" \"Bernoulli Statis...\" \"P-value:\" \"Independence Sta...\" \"P-value:\" \n",
"\n",
"\n",
"bl =\n",
"\n",
" NaN\n",
"\n",
" \"GARCH\" \"Bernoulli Statis...\" \"P-value:\" \"Independence Sta...\" \"P-value:\" \n",
"\n",
"\n"
]
}
],
"source": [
"% Backtesting S&P 500 in MATLAB\n",
"% Listing 8.14\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"names = [\"EWMA\", \"MA\", \"HS\", \"GARCH\"];\n",
"ya=y(WE+1:T);\n",
"VaRa=VaR(WE+1:T,:);\n",
"for i=1:4\n",
"\tq=find(y(WE+1:T)<-VaR(WE+1:T,i));\n",
"\tv=VaRa*0;\n",
"\tv(q,i)=1;\n",
"\tber=bern_test(p,v(:,i));\n",
"\tin=ind_test(v(:,i));\n",
"\tdisp([names(i), \"Bernoulli Statistic:\", ber, \"P-value:\", 1-chi2cdf(ber,1),...\n",
" \"Independence Statistic:\", in, \"P-value:\", 1-chi2cdf(in,1)])\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"% Backtest ES in MATLAB\n",
"% Listing 8.16\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"VaR = NaN(T,2); % VaR forecasts for 2 models \n",
"ES = NaN(T,2); % ES forecasts for 2 models \n",
"for t = WE+1:T\n",
" t1 = t-WE; \n",
" t2 = t-1; \n",
" window = y(t1:t2) ;\n",
" \n",
" s11 = lambda * s11 + (1-lambda) * y(t-1)^2; \n",
" VaR(t,1) = -norminv(p) * sqrt(s11) *value; % EWMA\n",
" ES(t,1) = sqrt(s11) * normpdf(norminv(p)) / p;\n",
"\n",
" ys = sort(window);\n",
" VaR(t,2) = -ys(l1) * value; % HS\n",
" ES(t,2) = -mean(ys(1:l1)) * value; \n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" \"EWMA\" \"1.223\"\n",
"\n",
" \"HS\" \"1.0537\"\n",
"\n",
"\n"
]
}
],
"source": [
"% ES in MATLAB\n",
"% Listing 8.18\n",
"% Last updated July 2020\n",
"%\n",
"%\n",
"\n",
"names = [\"EWMA\", \"HS\"];\n",
"VaRa = VaR(WE+1:T,:);\n",
"ESa = ES(WE+1:T,:);\n",
"for i = 1:2\n",
"\tq = find(ya <= -VaRa(:,i));\n",
"\tnES = mean(ya(q) ./ -ESa(q,i));\n",
"\tdisp([names(i), nES])\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"***"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Chapter 9: Extreme Value Theory\n",
"\n",
"- 9.1/9.2: Calculation of tail index from returns"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"iota =\n",
"\n",
" 2.6297\n",
"\n",
"\n"
]
}
],
"source": [
"% Hill estimator in MATLAB\n",
"% Listing 9.2\n",
"% Last updated 2011\n",
"%\n",
"%\n",
"\n",
"ysort = sort(y); % sort the returns\n",
"CT = 100; % set the threshold\n",
"iota = 1/mean(log(ysort(1:CT)/ysort(CT+1))) % get the tail index\n",
"\n",
"% END"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Matlab",
"language": "matlab",
"name": "matlab"
},
"language_info": {
"codemirror_mode": "octave",
"file_extension": ".m",
"help_links": [
{
"text": "MetaKernel Magics",
"url": "https://metakernel.readthedocs.io/en/latest/source/README.html"
}
],
"mimetype": "text/x-octave",
"name": "matlab",
"version": "0.17.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}