{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "306d1152",
   "metadata": {},
   "source": [
    "# Exercise 1 #"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5e7f658e",
   "metadata": {},
   "source": [
    "A fixed-coupond bond is a financial instrument characterised with maturity $T$-years, coupon $c$ (which is assumed to be paid out annually) and principal $P$. For such a bond, a bond holder gets $cP$ amound of money at the end of each year before maturity, and at the maturity they get $cP +P$. The value of the bond at time $t=0$ is equal to the present value of the underlying cashflows.\n",
    "\n",
    "1. Assume that the interest rate at time $t=0$ is flat and equal $r$. Write down a formula for calculating the value of the bond at time $t=0$ given the parameters $r, T, c, P$. (4p)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c6b90fed",
   "metadata": {},
   "source": [
    "## Solution exercise 1.1"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7ce6a1b1",
   "metadata": {},
   "source": [
    "Blackboard"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb930eda",
   "metadata": {},
   "source": [
    "2. Write a function (script) which calculates the value of the bond, given parameters $r,c,P,T$. Run the function for $r=5\\%$, $c=4\\%$, $T=10$ and $P=1000$.  Run the function again changing different parameters and plot the results (paramater agains the value of the bond), first with the interest rate ($r=1,2,3,4,5,6,7,8,9,10\\%$), then coupon ($c=1,2,3,4,5,6,7,8,9,10\\%$) and at last, the maturity of the bond ($T=2,4,6,8,10,12,14,16,18,20$). What does the results tell you about the relation between different level of parameters and the value of the bond? (8p)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7194049a",
   "metadata": {},
   "source": [
    "## Solution Exercise 1.2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "5b9be89e",
   "metadata": {},
   "outputs": [],
   "source": [
    "### INPUTS\n",
    "maturity<-10\n",
    "principal<-1000\n",
    "coupon<-0.04\n",
    "interest<-0.05"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4d57866c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "922.782650708152"
      ],
      "text/latex": [
       "922.782650708152"
      ],
      "text/markdown": [
       "922.782650708152"
      ],
      "text/plain": [
       "[1] 922.7827"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#define\n",
    "calculate_bond_value<-function(maturity,principal,coupon,interest){\n",
    "    #define the cashflows\n",
    "    cashflow<-rep(coupon*principal,times=maturity)\n",
    "    cashflow[maturity]<-cashflow[maturity]+principal\n",
    "    cashflow <-cbind(1:maturity,cashflow)\n",
    "    \n",
    "    #discount the cashflows\n",
    "    discounted_cashflow<-cashflow\n",
    "    for (i in 1:maturity){\n",
    "        discounted_cashflow[i,2]<-cashflow[i,2]/(1+interest)^cashflow[i,1]\n",
    "    }\n",
    "    \n",
    "    #calculate value: OUTPUT\n",
    "    value<-sum(discounted_cashflow[,2])\n",
    "\n",
    "    return(value)\n",
    "}\n",
    "\n",
    "calculate_bond_value(maturity,principal,coupon,interest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "b17235b6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A matrix: 10 × 2 of type dbl</caption>\n",
       "<tbody>\n",
       "\t<tr><td>0.01</td><td>1284.1391</td></tr>\n",
       "\t<tr><td>0.02</td><td>1179.6517</td></tr>\n",
       "\t<tr><td>0.03</td><td>1085.3020</td></tr>\n",
       "\t<tr><td>0.04</td><td>1000.0000</td></tr>\n",
       "\t<tr><td>0.05</td><td> 922.7827</td></tr>\n",
       "\t<tr><td>0.06</td><td> 852.7983</td></tr>\n",
       "\t<tr><td>0.07</td><td> 789.2926</td></tr>\n",
       "\t<tr><td>0.08</td><td> 731.5967</td></tr>\n",
       "\t<tr><td>0.09</td><td> 679.1171</td></tr>\n",
       "\t<tr><td>0.10</td><td> 631.3260</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A matrix: 10 × 2 of type dbl\n",
       "\\begin{tabular}{ll}\n",
       "\t 0.01 & 1284.1391\\\\\n",
       "\t 0.02 & 1179.6517\\\\\n",
       "\t 0.03 & 1085.3020\\\\\n",
       "\t 0.04 & 1000.0000\\\\\n",
       "\t 0.05 &  922.7827\\\\\n",
       "\t 0.06 &  852.7983\\\\\n",
       "\t 0.07 &  789.2926\\\\\n",
       "\t 0.08 &  731.5967\\\\\n",
       "\t 0.09 &  679.1171\\\\\n",
       "\t 0.10 &  631.3260\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A matrix: 10 × 2 of type dbl\n",
       "\n",
       "| 0.01 | 1284.1391 |\n",
       "| 0.02 | 1179.6517 |\n",
       "| 0.03 | 1085.3020 |\n",
       "| 0.04 | 1000.0000 |\n",
       "| 0.05 |  922.7827 |\n",
       "| 0.06 |  852.7983 |\n",
       "| 0.07 |  789.2926 |\n",
       "| 0.08 |  731.5967 |\n",
       "| 0.09 |  679.1171 |\n",
       "| 0.10 |  631.3260 |\n",
       "\n"
      ],
      "text/plain": [
       "      [,1] [,2]     \n",
       " [1,] 0.01 1284.1391\n",
       " [2,] 0.02 1179.6517\n",
       " [3,] 0.03 1085.3020\n",
       " [4,] 0.04 1000.0000\n",
       " [5,] 0.05  922.7827\n",
       " [6,] 0.06  852.7983\n",
       " [7,] 0.07  789.2926\n",
       " [8,] 0.08  731.5967\n",
       " [9,] 0.09  679.1171\n",
       "[10,] 0.10  631.3260"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "### INPUT \n",
    "interest_sen<-1:10/100\n",
    "\n",
    "#define the matrix with the bond_values for different interest rates\n",
    "values<-matrix(nrow=length(interest_sen),ncol=2)\n",
    "\n",
    "# calculate the bond value\n",
    "for (i in 1:length(interest_sen)){\n",
    "    values[i,1]<-interest_sen[i]\n",
    "    values[i,2]<-calculate_bond_value(maturity,principal,coupon,interest_sen[i])\n",
    "}\n",
    "\n",
    "###output\n",
    "values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "8acced40",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAC+lBMVEUAAAABAQECAgIDAwME\nBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUW\nFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJyco\nKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6\nOjo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tM\nTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1e\nXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29w\ncHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGC\ngoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uNjY2Ojo6Pj4+RkZGSkpKTk5OUlJSVlZWW\nlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eo\nqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6\nurq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vM\nzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e\n3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w\n8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////wJKQ4AAAA\nCXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO3de3yU1Z348TNJJiGBgIBgRJOAyPpTscSA\nFaogFn9esBXEFgTZEmG9cNHQBhq1yK1VumHRarzQKqjddpdq2q1aXRGl2oIK0VIVlUhRoCAI\n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",
      "text/plain": [
       "plot without title"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot(values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "8f3fdd0f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A matrix: 10 × 2 of type dbl</caption>\n",
       "<tbody>\n",
       "\t<tr><td>0.01</td><td> 691.1306</td></tr>\n",
       "\t<tr><td>0.02</td><td> 768.3480</td></tr>\n",
       "\t<tr><td>0.03</td><td> 845.5653</td></tr>\n",
       "\t<tr><td>0.04</td><td> 922.7827</td></tr>\n",
       "\t<tr><td>0.05</td><td>1000.0000</td></tr>\n",
       "\t<tr><td>0.06</td><td>1077.2173</td></tr>\n",
       "\t<tr><td>0.07</td><td>1154.4347</td></tr>\n",
       "\t<tr><td>0.08</td><td>1231.6520</td></tr>\n",
       "\t<tr><td>0.09</td><td>1308.8694</td></tr>\n",
       "\t<tr><td>0.10</td><td>1386.0867</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A matrix: 10 × 2 of type dbl\n",
       "\\begin{tabular}{ll}\n",
       "\t 0.01 &  691.1306\\\\\n",
       "\t 0.02 &  768.3480\\\\\n",
       "\t 0.03 &  845.5653\\\\\n",
       "\t 0.04 &  922.7827\\\\\n",
       "\t 0.05 & 1000.0000\\\\\n",
       "\t 0.06 & 1077.2173\\\\\n",
       "\t 0.07 & 1154.4347\\\\\n",
       "\t 0.08 & 1231.6520\\\\\n",
       "\t 0.09 & 1308.8694\\\\\n",
       "\t 0.10 & 1386.0867\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A matrix: 10 × 2 of type dbl\n",
       "\n",
       "| 0.01 |  691.1306 |\n",
       "| 0.02 |  768.3480 |\n",
       "| 0.03 |  845.5653 |\n",
       "| 0.04 |  922.7827 |\n",
       "| 0.05 | 1000.0000 |\n",
       "| 0.06 | 1077.2173 |\n",
       "| 0.07 | 1154.4347 |\n",
       "| 0.08 | 1231.6520 |\n",
       "| 0.09 | 1308.8694 |\n",
       "| 0.10 | 1386.0867 |\n",
       "\n"
      ],
      "text/plain": [
       "      [,1] [,2]     \n",
       " [1,] 0.01  691.1306\n",
       " [2,] 0.02  768.3480\n",
       " [3,] 0.03  845.5653\n",
       " [4,] 0.04  922.7827\n",
       " [5,] 0.05 1000.0000\n",
       " [6,] 0.06 1077.2173\n",
       " [7,] 0.07 1154.4347\n",
       " [8,] 0.08 1231.6520\n",
       " [9,] 0.09 1308.8694\n",
       "[10,] 0.10 1386.0867"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "### INPUT \n",
    "coupon_sen<-1:10/100\n",
    "\n",
    "#define the matrix with the coupon_sen for different interest rates\n",
    "values<-matrix(nrow=length(interest_sen),ncol=2)\n",
    "\n",
    "# calculate the bond value\n",
    "for (i in 1:length(coupon_sen)){\n",
    "    values[i,1]<-coupon_sen[i]\n",
    "    values[i,2]<-calculate_bond_value(maturity,principal,coupon_sen[i],interest)\n",
    "}\n",
    "\n",
    "###output\n",
    "values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "36255b9c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAC91BMVEUAAAABAQECAgIDAwME\nBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUW\nFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUnJycoKCgp\nKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk7Ozs8\nPDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1O\nTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19g\nYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFy\ncnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OE\nhISFhYWGhoaHh4eIiIiJiYmKioqLi4uNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWWlpaX\nl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eoqKip\nqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6urq7\nu7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vMzMzN\nzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e3t7f\n39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx\n8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///87cS/3AAAACXBI\nWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO3da3yU1Z3A8TMkkxAgpFzEGEwCVbr1RrhoQUAs\nahUvoHZBUEuEqkXQ4IJGLQLSIm4QK0p18Ya3XWttXGurVKTS9YIW4qUiqBFpQYMgJIABkhDm\n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\ngABCAgT8Py7UuV+JzcAbAAAAAElFTkSuQmCC",
      "text/plain": [
       "plot without title"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot(values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "8a568511",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A matrix: 10 × 2 of type dbl</caption>\n",
       "<tbody>\n",
       "\t<tr><td> 2</td><td>981.4059</td></tr>\n",
       "\t<tr><td> 4</td><td>964.5405</td></tr>\n",
       "\t<tr><td> 6</td><td>949.2431</td></tr>\n",
       "\t<tr><td> 8</td><td>935.3679</td></tr>\n",
       "\t<tr><td>10</td><td>922.7827</td></tr>\n",
       "\t<tr><td>12</td><td>911.3675</td></tr>\n",
       "\t<tr><td>14</td><td>901.0136</td></tr>\n",
       "\t<tr><td>16</td><td>891.6223</td></tr>\n",
       "\t<tr><td>18</td><td>883.1041</td></tr>\n",
       "\t<tr><td>20</td><td>875.3779</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A matrix: 10 × 2 of type dbl\n",
       "\\begin{tabular}{ll}\n",
       "\t  2 & 981.4059\\\\\n",
       "\t  4 & 964.5405\\\\\n",
       "\t  6 & 949.2431\\\\\n",
       "\t  8 & 935.3679\\\\\n",
       "\t 10 & 922.7827\\\\\n",
       "\t 12 & 911.3675\\\\\n",
       "\t 14 & 901.0136\\\\\n",
       "\t 16 & 891.6223\\\\\n",
       "\t 18 & 883.1041\\\\\n",
       "\t 20 & 875.3779\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A matrix: 10 × 2 of type dbl\n",
       "\n",
       "|  2 | 981.4059 |\n",
       "|  4 | 964.5405 |\n",
       "|  6 | 949.2431 |\n",
       "|  8 | 935.3679 |\n",
       "| 10 | 922.7827 |\n",
       "| 12 | 911.3675 |\n",
       "| 14 | 901.0136 |\n",
       "| 16 | 891.6223 |\n",
       "| 18 | 883.1041 |\n",
       "| 20 | 875.3779 |\n",
       "\n"
      ],
      "text/plain": [
       "      [,1] [,2]    \n",
       " [1,]  2   981.4059\n",
       " [2,]  4   964.5405\n",
       " [3,]  6   949.2431\n",
       " [4,]  8   935.3679\n",
       " [5,] 10   922.7827\n",
       " [6,] 12   911.3675\n",
       " [7,] 14   901.0136\n",
       " [8,] 16   891.6223\n",
       " [9,] 18   883.1041\n",
       "[10,] 20   875.3779"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "### INPUT \n",
    "mat_sen<-1:10*2\n",
    "\n",
    "#define the matrix with the coupon_sen for different interest rates\n",
    "values<-matrix(nrow=length(mat_sen),ncol=2)\n",
    "\n",
    "# calculate the bond value\n",
    "for (i in 1:length(mat_sen)){\n",
    "    values[i,1]<-mat_sen[i]\n",
    "    values[i,2]<-calculate_bond_value(mat_sen[i],principal,coupon,interest)\n",
    "}\n",
    "\n",
    "###output\n",
    "values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "77c33a09",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAC/VBMVEUAAAABAQECAgIDAwME\nBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUW\nFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJyco\nKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6\nOjo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tM\nTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1e\nXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29w\ncHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGC\ngoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OU\nlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWm\npqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGzs7O0tLS1tbW2tra3t7e4uLi5\nubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrL\ny8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd\n3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v\n7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///+Gm0JH\nAAAACXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO3de3iU1Z3A8TMkEwghXILlEiXBC9uV\nimBwFSogLV4oVMFLRaBtIqy6iBIsYLxzsUoXd3GpoBZXQaW2tRitrVoRxIqCSGoFa6wpouAC\n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",
      "text/plain": [
       "plot without title"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot(values)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "adc5a498",
   "metadata": {},
   "source": [
    "3. Calculate the duration of the bond for $r=5\\%$, $c=4\\%$, $T=10$ and $P=1000$ and give an interpretation to it. Assume that the interest rate has increased from $r=5\\%$ to $r=6\\%$. How much would the price of the bond change, as prescribed by the duration? What is the real change in the value of the bond? Why those two value are different? (8p)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bc07c36d",
   "metadata": {},
   "source": [
    "## Solution Exercise 4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "d4f242b9",
   "metadata": {},
   "outputs": [],
   "source": [
    "calculate_bond_duration<-function(maturity,principal,coupon,interest){\n",
    "    #define the cashflows\n",
    "    cashflow<-rep(coupon*principal,times=maturity)\n",
    "    cashflow[maturity]<-cashflow[maturity]+principal\n",
    "    cashflow <-cbind(1:maturity,cashflow)\n",
    "    \n",
    "    #discount the cashflows\n",
    "    discounted_cashflow<-cashflow\n",
    "    for (i in 1:maturity){\n",
    "        discounted_cashflow[i,2]<-cashflow[i,2]/(1+interest)^cashflow[i,1]\n",
    "    }\n",
    "    \n",
    "    #calculate value: OUTPUT\n",
    "    value<-sum(discounted_cashflow[,2]*cashflow[,1])/sum(discounted_cashflow[,2])\n",
    "\n",
    "    return(value)\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "c870b5b9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "8.35958916401051"
      ],
      "text/latex": [
       "8.35958916401051"
      ],
      "text/markdown": [
       "8.35958916401051"
      ],
      "text/plain": [
       "[1] 8.359589"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dur<-calculate_bond_duration(maturity,principal,coupon,interest)\n",
    "dur"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ff3b3198",
   "metadata": {},
   "source": [
    "change approximated by duration"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "9fb8d912",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "-73.4674652152072"
      ],
      "text/latex": [
       "-73.4674652152072"
      ],
      "text/markdown": [
       "-73.4674652152072"
      ],
      "text/plain": [
       "[1] -73.46747"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "-dur * (0.06-0.05) * calculate_bond_value(maturity,principal,coupon,interest)/(1+interest)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "55140bd6",
   "metadata": {},
   "source": [
    "Approximated value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "ee45cacc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "849.315185492944"
      ],
      "text/latex": [
       "849.315185492944"
      ],
      "text/markdown": [
       "849.315185492944"
      ],
      "text/plain": [
       "[1] 849.3152"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "-dur * (0.06-0.05) * calculate_bond_value(maturity,principal,coupon,interest)/(1+interest)+\n",
    "    calculate_bond_value(maturity,principal,coupon,interest)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9dd14d5f",
   "metadata": {},
   "source": [
    "Real value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "ce1a332b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "852.798258971706"
      ],
      "text/latex": [
       "852.798258971706"
      ],
      "text/markdown": [
       "852.798258971706"
      ],
      "text/plain": [
       "[1] 852.7983"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "calculate_bond_value(maturity,principal,coupon,interest+0.01)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "89149e49",
   "metadata": {},
   "source": [
    "# Exercise 2\n",
    "We assume that a random sample $Z_1,\\ldots,Z_n$ is Reyleigh-distributed. The density, expected value and variance of Reyleigh distribution is given by:\n",
    "$$f(x) =\\begin{cases}\n",
    "     \\frac{x}{\\sigma^2} \\exp\\left(-\\frac{ x^2}{2\\sigma^2}\\right)       & \\quad \\text{if } x>0\\\\\n",
    "    0  & \\quad \\text{otherwise } \n",
    "  \\end{cases} $$\n",
    "  $$ \\mathbb E X=\\sigma\\sqrt{\\pi/2}$$\n",
    "  $$ \\mathbb{VAR}(X)=\\frac{4-\\pi}{2} \\sigma^2.$$\n",
    "  \n",
    " "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1e06f585",
   "metadata": {},
   "source": [
    "1. Derive an inverse sampler for a Reyleigh-distribution (Note: You are expected to compute first the CDF by integration by substitution, then the inverse of CDF). (5p)\n",
    "\n",
    "$F^{-1}(u)=\\sigma\\sqrt{-2\\ln(1-u)}$\n",
    "\n",
    "2. Derive the moment estimator of $\\sigma$. (5p)\n",
    "\n",
    "$ \\sigma_{mm}=\\bar X_n\\sqrt{\\frac{2}{\\pi}}$\n",
    "\n",
    "3. Write a log-likelihood function $\\mathcal L(\\sigma)$.  Derive the maximum likelihood estimator of $\\sigma$. (5p)\n",
    "\n",
    "$ \\sigma_{ml}=\\sqrt{\\frac{1}{2n}\\sum_{i=1}^nx_i^2}$\n",
    "\n",
    "4. Write a script for a function which calculates the maximum likelihood estimatetors given a sample $Z_1,\\ldots,Z_n$. Function should be general enough to handle different $n$. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "1265efa0",
   "metadata": {},
   "outputs": [],
   "source": [
    "estimate_sigma_ml<-function(x){\n",
    "    n<-length(x)\n",
    "    sigma<- (sum(x^2)/(2*n))^0.5 \n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "594fd4da",
   "metadata": {},
   "source": [
    "5. Generate $n=10, 100, 1000, 10000, 1000000$ simulations using the inverse sampler (simulations for different $n$ should be drawn independently) for parameters $\\sigma=3$. Compute a moment estimatior $\\sigma_{MM}$ and maximum likelihood estimator $\\sigma_{ML}$ for each $n$  using a function from a previous points and prepare a table presenting the estimated parameters for different $n$. Compare it to the true value of parameter and comment on the estimation error. (5p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "bd509137",
   "metadata": {},
   "outputs": [],
   "source": [
    "generate_ray<-function(n,sigma){\n",
    "    u<-runif(n)\n",
    "    x <- sigma*(-2*log(1-u))^0.5\n",
    "    return(x)\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "7fff6732",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1] \"N= 10\"\n",
      "[1] \"ML= 2.88897654850751\"\n",
      "[1] \"MM= 2.93817008695092\"\n",
      "[1] \"N= 100\"\n",
      "[1] \"ML= 2.89261395172873\"\n",
      "[1] \"MM= 2.89722725712971\"\n",
      "[1] \"N= 1000\"\n",
      "[1] \"ML= 3.05038940657277\"\n",
      "[1] \"MM= 3.06221336577764\"\n",
      "[1] \"N= 10000\"\n",
      "[1] \"ML= 3.00356565335221\"\n",
      "[1] \"MM= 3.00999659119662\"\n",
      "[1] \"N= 1e+05\"\n",
      "[1] \"ML= 3.00738545375832\"\n",
      "[1] \"MM= 3.00880345877067\"\n"
     ]
    }
   ],
   "source": [
    "#### INPUT\n",
    "n=c(10,100,1000,10000,100000)\n",
    "sigma=3\n",
    "\n",
    "MM<-cbind(n,rep(0,times=length(n)))\n",
    "ML<-cbind(n,rep(0,times=length(n)))\n",
    "\n",
    "for (i in 1:length(n)){\n",
    "    print(paste(\"N=\",n[i]))\n",
    "    x=generate_ray(n[i],sigma)\n",
    "    ML[i,2]=estimate_sigma_ml(x)\n",
    "    print(paste(\"ML=\",ML[i,2]))\n",
    "    MM[i,2]=mean(x)*(2/pi)^0.5\n",
    "    print(paste(\"MM=\",MM[i,2]))\n",
    "    \n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3ef9ba11",
   "metadata": {},
   "source": [
    "6. Using the closed-form formula compute mean, standard deviation and $0,025$ and $0,975$-quantiles for \\textbf{the Reyleight-distribution} with estimated parameters $\\sigma_{MM}$ and $\\sigma_{ML}$ for each $n$ estimated in the previous point, as well as for true value of the parameter. Present the values in the table and comment on them.(5p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "4a30fef0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A matrix: 6 × 6 of type dbl</caption>\n",
       "<thead>\n",
       "\t<tr><th scope=col>n</th><th scope=col></th><th scope=col>average</th><th scope=col>stdev</th><th scope=col>perc_2_5</th><th scope=col>perc_97_5</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "\t<tr><td>1e+01</td><td>2.938170</td><td>0.9352486</td><td>1.924902</td><td>0.6611576</td><td>7.980666</td></tr>\n",
       "\t<tr><td>1e+02</td><td>2.897227</td><td>0.9222161</td><td>1.898079</td><td>0.6519445</td><td>7.869457</td></tr>\n",
       "\t<tr><td>1e+03</td><td>3.062213</td><td>0.9747328</td><td>2.006167</td><td>0.6890702</td><td>8.317593</td></tr>\n",
       "\t<tr><td>1e+04</td><td>3.009997</td><td>0.9581117</td><td>1.971958</td><td>0.6773202</td><td>8.175762</td></tr>\n",
       "\t<tr><td>1e+05</td><td>3.008803</td><td>0.9577319</td><td>1.971177</td><td>0.6770518</td><td>8.172521</td></tr>\n",
       "\t<tr><td>0e+00</td><td>3.000000</td><td>0.9549297</td><td>1.965409</td><td>0.6750708</td><td>8.148609</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A matrix: 6 × 6 of type dbl\n",
       "\\begin{tabular}{llllll}\n",
       " n &  & average & stdev & perc\\_2\\_5 & perc\\_97\\_5\\\\\n",
       "\\hline\n",
       "\t 1e+01 & 2.938170 & 0.9352486 & 1.924902 & 0.6611576 & 7.980666\\\\\n",
       "\t 1e+02 & 2.897227 & 0.9222161 & 1.898079 & 0.6519445 & 7.869457\\\\\n",
       "\t 1e+03 & 3.062213 & 0.9747328 & 2.006167 & 0.6890702 & 8.317593\\\\\n",
       "\t 1e+04 & 3.009997 & 0.9581117 & 1.971958 & 0.6773202 & 8.175762\\\\\n",
       "\t 1e+05 & 3.008803 & 0.9577319 & 1.971177 & 0.6770518 & 8.172521\\\\\n",
       "\t 0e+00 & 3.000000 & 0.9549297 & 1.965409 & 0.6750708 & 8.148609\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A matrix: 6 × 6 of type dbl\n",
       "\n",
       "| n | <!----> | average | stdev | perc_2_5 | perc_97_5 |\n",
       "|---|---|---|---|---|---|\n",
       "| 1e+01 | 2.938170 | 0.9352486 | 1.924902 | 0.6611576 | 7.980666 |\n",
       "| 1e+02 | 2.897227 | 0.9222161 | 1.898079 | 0.6519445 | 7.869457 |\n",
       "| 1e+03 | 3.062213 | 0.9747328 | 2.006167 | 0.6890702 | 8.317593 |\n",
       "| 1e+04 | 3.009997 | 0.9581117 | 1.971958 | 0.6773202 | 8.175762 |\n",
       "| 1e+05 | 3.008803 | 0.9577319 | 1.971177 | 0.6770518 | 8.172521 |\n",
       "| 0e+00 | 3.000000 | 0.9549297 | 1.965409 | 0.6750708 | 8.148609 |\n",
       "\n"
      ],
      "text/plain": [
       "     n              average   stdev    perc_2_5  perc_97_5\n",
       "[1,] 1e+01 2.938170 0.9352486 1.924902 0.6611576 7.980666 \n",
       "[2,] 1e+02 2.897227 0.9222161 1.898079 0.6519445 7.869457 \n",
       "[3,] 1e+03 3.062213 0.9747328 2.006167 0.6890702 8.317593 \n",
       "[4,] 1e+04 3.009997 0.9581117 1.971958 0.6773202 8.175762 \n",
       "[5,] 1e+05 3.008803 0.9577319 1.971177 0.6770518 8.172521 \n",
       "[6,] 0e+00 3.000000 0.9549297 1.965409 0.6750708 8.148609 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "MM<-rbind(MM,c(0,sigma))\n",
    "\n",
    "average<-MM[,2]*(2/pi)*0.5\n",
    "stdev<-((4-pi)/2)^0.5 *MM[,2]\n",
    "perc_2_5<-MM[,2]*(-2*log(1-0.025))^0.5\n",
    "perc_97_5<-MM[,2]*(-2*log(1-0.975))^0.5\n",
    "\n",
    "MM<-cbind(MM,average,stdev,perc_2_5,perc_97_5)\n",
    "MM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "2fe18539",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A matrix: 6 × 6 of type dbl</caption>\n",
       "<thead>\n",
       "\t<tr><th scope=col>n</th><th scope=col></th><th scope=col>average</th><th scope=col>stdev</th><th scope=col>perc_2_5</th><th scope=col>perc_97_5</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "\t<tr><td>1e+01</td><td>2.888977</td><td>0.9195898</td><td>1.892674</td><td>0.6500879</td><td>7.847047</td></tr>\n",
       "\t<tr><td>1e+02</td><td>2.892614</td><td>0.9207476</td><td>1.895057</td><td>0.6509064</td><td>7.856927</td></tr>\n",
       "\t<tr><td>1e+03</td><td>3.050389</td><td>0.9709691</td><td>1.998421</td><td>0.6864096</td><td>8.285477</td></tr>\n",
       "\t<tr><td>1e+04</td><td>3.003566</td><td>0.9560646</td><td>1.967745</td><td>0.6758731</td><td>8.158294</td></tr>\n",
       "\t<tr><td>1e+05</td><td>3.007385</td><td>0.9572805</td><td>1.970248</td><td>0.6767327</td><td>8.168669</td></tr>\n",
       "\t<tr><td>0e+00</td><td>3.000000</td><td>0.9549297</td><td>1.965409</td><td>0.6750708</td><td>8.148609</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A matrix: 6 × 6 of type dbl\n",
       "\\begin{tabular}{llllll}\n",
       " n &  & average & stdev & perc\\_2\\_5 & perc\\_97\\_5\\\\\n",
       "\\hline\n",
       "\t 1e+01 & 2.888977 & 0.9195898 & 1.892674 & 0.6500879 & 7.847047\\\\\n",
       "\t 1e+02 & 2.892614 & 0.9207476 & 1.895057 & 0.6509064 & 7.856927\\\\\n",
       "\t 1e+03 & 3.050389 & 0.9709691 & 1.998421 & 0.6864096 & 8.285477\\\\\n",
       "\t 1e+04 & 3.003566 & 0.9560646 & 1.967745 & 0.6758731 & 8.158294\\\\\n",
       "\t 1e+05 & 3.007385 & 0.9572805 & 1.970248 & 0.6767327 & 8.168669\\\\\n",
       "\t 0e+00 & 3.000000 & 0.9549297 & 1.965409 & 0.6750708 & 8.148609\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A matrix: 6 × 6 of type dbl\n",
       "\n",
       "| n | <!----> | average | stdev | perc_2_5 | perc_97_5 |\n",
       "|---|---|---|---|---|---|\n",
       "| 1e+01 | 2.888977 | 0.9195898 | 1.892674 | 0.6500879 | 7.847047 |\n",
       "| 1e+02 | 2.892614 | 0.9207476 | 1.895057 | 0.6509064 | 7.856927 |\n",
       "| 1e+03 | 3.050389 | 0.9709691 | 1.998421 | 0.6864096 | 8.285477 |\n",
       "| 1e+04 | 3.003566 | 0.9560646 | 1.967745 | 0.6758731 | 8.158294 |\n",
       "| 1e+05 | 3.007385 | 0.9572805 | 1.970248 | 0.6767327 | 8.168669 |\n",
       "| 0e+00 | 3.000000 | 0.9549297 | 1.965409 | 0.6750708 | 8.148609 |\n",
       "\n"
      ],
      "text/plain": [
       "     n              average   stdev    perc_2_5  perc_97_5\n",
       "[1,] 1e+01 2.888977 0.9195898 1.892674 0.6500879 7.847047 \n",
       "[2,] 1e+02 2.892614 0.9207476 1.895057 0.6509064 7.856927 \n",
       "[3,] 1e+03 3.050389 0.9709691 1.998421 0.6864096 8.285477 \n",
       "[4,] 1e+04 3.003566 0.9560646 1.967745 0.6758731 8.158294 \n",
       "[5,] 1e+05 3.007385 0.9572805 1.970248 0.6767327 8.168669 \n",
       "[6,] 0e+00 3.000000 0.9549297 1.965409 0.6750708 8.148609 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ML<-rbind(ML,c(0,sigma))\n",
    "\n",
    "average<-ML[,2]*(2/pi)*0.5\n",
    "stdev<-((4-pi)/2)^0.5 *ML[,2]\n",
    "perc_2_5<-ML[,2]*(-2*log(1-0.025))^0.5\n",
    "perc_97_5<-ML[,2]*(-2*log(1-0.975))^0.5\n",
    "\n",
    "ML<-cbind(ML,average,stdev,perc_2_5,perc_97_5)\n",
    "ML"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7ab477e6",
   "metadata": {},
   "source": [
    "# Exercise 3"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "174fd623",
   "metadata": {},
   "source": [
    "We assume the compound Poisson model.  In this model, the claim number from all policies is modelled as a random variable $N\\sim Poiss(\\lambda)$ and the claim size $Z_i$ is distributed according to exponential distribution with a parameter  $\\beta$ (defined as in the lectures). $Z_1,Z_2,\\ldots$ are i.i.d. and independent of $N$. Then the sum of all claims can be defined as $X=\\sum_{i=1}^N Z_i$. \n",
    "\n",
    "Assume that the insurer bought a reinsurance programme per event such that the reinsurer cover the part of the claim exceeding a fixed number $b>0$ ($H^{event}(x)=max(0,x-b)$).\n",
    "1.  Define a sequence of random variables $U_i,\\ i=1,2,\\ldots$ as \n",
    "\t$$U_i =\\begin{cases}\n",
    "     1       & \\quad \\text{if } Z_i>b\\\\\n",
    "    0  & \\quad \\text{otherwise } \n",
    "  \\end{cases} $$\n",
    "  Prove that $(U_1,U_2,\\ldots)$ is an independent and identically distributed sequence of random variables. (5p)\n",
    "2. Define $N_b:=\\sum_{i=1}^N U_i$. Prove that $N_b\\sim Poiss(\\lambda \\mathbb P (Z_1>b))$. (15p)\n",
    "\tTips: 1. fix $k$. If $N_b=k$ it means that $N$ must be at least $k$. Use it together with the the law of total probability to express $\\mathbb P(N_b=k)=\\sum_{n=k}^{\\infty}\\mathbb P(N_b=k|N=n)\\mathbb P(N=n)$. 2. Note that for a fixed $n$ the random variable $\\sum_{i=1}^n U_i$ is binominally distributed. 3. Note that $e^x=\\sum_{n=0}^{\\infty} \\frac{x^k}{k!}$.\n",
    "3. Fix any $i=1,2,\\ldots$. Prove that $\\mathbb P(Z_i>x+b|Z_i>b)=\\mathbb P(Z_i>x)$. Argue that random variable $Z_i-b$ conditioned on $Z_i>b$ (i.e. using conditional probability) has an exponential distribution with the same parameter $\\beta$. (5p)\n",
    "4. For $n=1,2,3,...$ define the following random variable: $$\\tau_n=\\min\\{k\\in\\mathbb N: k>\\tau_{n-1}\\text{ and } U_k=1 \\}$$ where $\\tau_0=0$. $\\tau_n$ has the intrepretation as a (random) index identifying on which element of the sequence $U_1, U_2, \\ldots$ the value $1$ is taken for the n-th time. Argue that the following equality is true $$  \\sum_{i=1}^N H^{event}(Z_i)=\\sum_{k=1}^{N_b} (Z_{\\tau_k}-b).$$ The equality should be understood $\\omega$-wise (i.e. those two objects are really the same). (5p)\n",
    "5. It can be proven that $Z_{\\tau_1},Z_{\\tau_2},\\ldots$ are i.i.d. and that $(Z_{\\tau_n}-b)\\sim Exp(\\beta)$. Moreover,  is independent of $N_b$. Use those facts (without proving them) and the previous point to prove the following explicit formulas for the pure reinsurance premium for our contract as well for the standard deviation of the reinsurance recoverables from that contract $X^{re}:=  \\sum_{i=1}^N H^{event}(Z_i)$. (10p)\n",
    "\t$$ \\pi^{reinsurance,pure}=\\frac{\\lambda}{\\beta}\\exp(-\\beta b)$$\n",
    "\t$$ \\mathbb{VAR}(X^{re})=\\frac{2\\lambda\\exp(-\\beta b)}{\\beta^2}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e2b9f611",
   "metadata": {},
   "source": [
    "##  Exercise 4\n",
    "We are in the setup of Assignment 3. Write a program which simulates the sum of reinsurance recoverables $X^{re}$ from that exercise and simulate $n=10, 100,1000, 10000$ simulations and for parameters $\\lambda=10$, $\\beta=0.25$ and $b=5$. Compute the estimate of the pure reinsurance premium and standard deviation of the reinsurance recoverables from the simulations for different $n$. Moreover, compute the pure reinsurance premium and standard deviation  by the explicit formulas given in the Assignment 3(5) and compare it with the simulated ones. Comment on simulation error. \n",
    "\t\n",
    "Note: you can either use the inverse sampler to simulate from the exponential distribtion or you can use the fact that exponential distribution is a special case of gamma distribution and use a ready gamma sampler. In the second case make sure that you use the right parametrisation!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "6a97223e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1] \"Number of simulations:  10\"\n",
      "[1] \"Simulated average: 12.7645367169462\"\n",
      "[1] \"Simulated sd: 9.3294132139151\"\n",
      "[1] \"True average: 11.4601918744076\"\n",
      "[1] \"True sd: 9.57504751921685\"\n",
      "[1] \"-----\"\n",
      "[1] \"Number of simulations:  100\"\n",
      "[1] \"Simulated average: 12.5470140009292\"\n",
      "[1] \"Simulated sd: 11.0940703765532\"\n",
      "[1] \"True average: 11.4601918744076\"\n",
      "[1] \"True sd: 9.57504751921685\"\n",
      "[1] \"-----\"\n",
      "[1] \"Number of simulations:  1000\"\n",
      "[1] \"Simulated average: 11.098532377864\"\n",
      "[1] \"Simulated sd: 9.37508244487934\"\n",
      "[1] \"True average: 11.4601918744076\"\n",
      "[1] \"True sd: 9.57504751921685\"\n",
      "[1] \"-----\"\n",
      "[1] \"Number of simulations:  10000\"\n",
      "[1] \"Simulated average: 11.4646351404571\"\n",
      "[1] \"Simulated sd: 9.472376627215\"\n",
      "[1] \"True average: 11.4601918744076\"\n",
      "[1] \"True sd: 9.57504751921685\"\n",
      "[1] \"-----\"\n"
     ]
    }
   ],
   "source": [
    "#input\n",
    "m=c(10,100,1000,10000)\n",
    "lambda=10\n",
    "beta=0.25\n",
    "b=5\n",
    "\n",
    "#draw exponential\n",
    "draw_exponential<-function(beta,n){\n",
    "    u<-runif(n)\n",
    "    x<-(log(1-u)/(-beta))\n",
    "    return(x)\n",
    "}\n",
    "\n",
    "#program\n",
    "generate_compound_poiss<-function(lambda,beta,b,m){\n",
    "    N <- rpois(m,lambda)\n",
    "    Xre <- rep(0,m)\n",
    "    for(i in 1:m)\n",
    "      {\n",
    "            Z <- draw_exponential(beta,N[i])\n",
    "            Xre[i] <- sum(pmax(Z-b,0))\n",
    "      }\n",
    "    return(Xre)\n",
    "}\n",
    "\n",
    "for (i in 1:4){\n",
    "    Xre<-generate_compound_poiss(lambda,beta,b,m[i])\n",
    "    print(paste(\"Number of simulations: \",m[i]))\n",
    "    print(paste(\"Simulated average:\", mean(Xre)))\n",
    "    print(paste(\"Simulated sd:\", sd(Xre)))\n",
    "    print(paste(\"True average:\", lambda/beta*exp(-beta*b)))\n",
    "    print(paste(\"True sd:\", (2*lambda/beta^2*exp(-beta*b))^0.5))\n",
    "    print(\"-----\")\n",
    "}\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1857f5bc",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "R",
   "language": "R",
   "name": "ir"
  },
  "language_info": {
   "codemirror_mode": "r",
   "file_extension": ".r",
   "mimetype": "text/x-r-source",
   "name": "R",
   "pygments_lexer": "r",
   "version": "4.0.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
