{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "![](../images/rivacon_frontmark_combined_header.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Discount Curves" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2020-05-03T11:48:52.071736Z", "start_time": "2020-05-03T11:48:44.755804Z" } }, "outputs": [], "source": [ "import datetime as dt\n", "import math\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from rivapy.marketdata.curves import DiscountCurve\n", "from rivapy.enums import DayCounterType, InterpolationType, ExtrapolationType\n", "\n", "\n", "%load_ext autoreload\n", "%autoreload 2\n", "#the next lin is a jupyter internal command to show the matplotlib graphs within the notebook\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Definition of Discount Curves\n", "A discount curve \n", "- stores discount factors for different maturities,\n", "- has an interpolation to compute discount factors for arbitrary maturities,\n", "- has an extrapolation to compute discount factors for arbitrary maturities after the latest given maturity,\n", "- has a day counter to convert dates to year fractions to apply the inter- and extrapolation.\n", "\n", "Under the assumption of continuous compounding, the discount factor $df$ for a cashflow at maturity $T$ based on a constant discount rate $r$ is defined as\n", "\n", "$$df(T) = e^{-rT}$$\n", "\n", "where $T$ is the time to maturity as year fraction." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "## Creating Discount Curves\n", "### Setup the specification\n", "\n", "To setup a discount curve, we need the following information:\n", "\n", "\n", "\n", "**Object id**\n", "\n", "Nearly every structure in the analytics library has an object id. An object id allows for nice logging and exceptions (which object created the message/error) and is also used as identifier for retrieving objects from containers." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2020-05-03T11:48:52.091271Z", "start_time": "2020-05-03T11:48:52.077862Z" } }, "outputs": [], "source": [ "object_id = \"Test_DC\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Reference date**\n", "\n", "A reference date is needed for all objects representing market data. Dates entering analytics objects must be analytics ptimes. \n", "\n", "Most of the functions provided by market data objects also get a calculation/valuation date and some logic is applied if this date is after the reference date. For a discount curve, if the valuation date is after the reference date, the forward discount factor is returned.\n", "\n", "The help function provides information about the function mentioned in its arguments (in parentheses). Uncomment the line to see the information about the analytics.ptime function." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2020-05-03T11:48:52.123093Z", "start_time": "2020-05-03T11:48:52.097101Z" } }, "outputs": [], "source": [ "refdate = dt.datetime(2017,1,1,0,0,0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Dates and corresponding discount factors**\n", "\n", "We need a list of dates and a list of discount factors. Here, we must use the analytics (C++ swigged) vectors to create the list of dates. We use a helper method which just gets a list of number of days and a reference date and returns the resulting dates from adding the number of days to the reference date. To view the created list of dates, uncomment the 4th and 5th line of the following code.\n", "\n", "To calculate the discount factors from a constant rate, we need to provide the constant rate and calculate the discount factors according to the desired compounding frequency." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2020-05-03T11:48:52.146772Z", "start_time": "2020-05-03T11:48:52.125323Z" }, "code_folding": [] }, "outputs": [], "source": [ "days_to_maturity = [1, 180, 365, 720, 3*365, 4*365, 10*365]\n", "dates = [refdate + dt.timedelta(days=i) for i in days_to_maturity]\n", "discount_rate = 0.03\n", "df = [math.exp(-d/365.0*discount_rate) for d in days_to_maturity]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Day count convention**\n", "\n", "Additionally, we need to provide the discount curve with a day count convention. The different options are provided in the enums module. Here, we apply the ACT365FIXED day count convention where the number of days between two dates is divided by 365. For other examples please refer to the [Roll conventions, day counters and schedule generation](daycounter_rollconventions_schedules.ipynb) notebook." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Interpolation type and extrapolation type**\n", "\n", "The interpolation is necessary to compute discount factors for arbitrary maturities until the last maturity provided; the extrapolation is necessary to compute discount factors for arbitrary maturities after the last given maturity. Here, we use HAGAN_DF as interpolation type and use no extrapolation. For an overview of interpolation and extrapolation types please refer to the *enums* module.\n", "\n", "The main advantage of the The HAGAN_DF interpolation, also called the monotone convex method (unameliorated version), is that in contrast to the other methods, it ensures forward rates to be positive and is, hence, the probably most suitable interpolation method for financial problems. The method is described in depth in: Hagan, West, \"Methods for Constructing a Yield Curve\", 2008.\n", "\n", "The following diagrams show the differences between the linear and HAGAN_DF interpolation for a newly created discount curve." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2020-05-03T11:48:52.570852Z", "start_time": "2020-05-03T11:48:52.152082Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "refdate = dt.datetime(2017,1,1,0,0,0)\n", "days_to_maturity = [1, 180, 365, 720, 3*365, 4*365, 10*365]\n", "rates = [-0.0065, 0.0003, 0.0059, 0.0086, 0.0101, 0.02, 0.03]\n", "dates = [refdate + dt.timedelta(days=i) for i in days_to_maturity]\n", "dsc_fac = [math.exp(-rates[d]*days_to_maturity[d]/365) for d in range(len(rates))]\n", " \n", "dc_linear = DiscountCurve('dc_linear', refdate, dates, dsc_fac, InterpolationType.LINEAR, \n", " ExtrapolationType.NONE, DayCounterType.Act365Fixed)\n", "dc_hagan = DiscountCurve('dc_hagan', refdate, dates, dsc_fac, InterpolationType.HAGAN_DF,\n", " ExtrapolationType.NONE, DayCounterType.Act365Fixed)\n", "\n", "\n", "dc_linear.plot(discount_factors=False)\n", "dc_hagan.plot(discount_factors=False)\n", "plt.xlabel('year')\n", "plt.ylabel('zero rate')\n", "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Setup the discount curve\n", "\n", "Our discount curve is given the name *dc* and is defined as an analytics.DiscountCurve object which we provide with the information described before. " ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2020-05-03T11:48:52.582771Z", "start_time": "2020-05-03T11:48:52.573837Z" } }, "outputs": [], "source": [ "dc = DiscountCurve(object_id, refdate,dates, df, \n", " InterpolationType.HAGAN_DF,\n", " ExtrapolationType.NONE, \n", " DayCounterType.Act365Fixed)\n", "#help(analytics.DiscountCurve)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Compute Discount Factors\n", "\n", "This section is only to manually derive some discount factors from the recently created discount curve.\n", "\n", "**a. Maturity in 180 days from the reference date**\n", "\n", "The value function returning a discount factor needs two arguments: the calculation date (here we use the current reference date) and the maturity for which the discount factor shall be computed. Hence, in a first step, the maturity in 180 days has to be converted into a date. Subsequently, the discount factor is computed using the value function. Finally, the print function gives us the computed discount factor of the value function." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2020-05-03T11:48:52.605103Z", "start_time": "2020-05-03T11:48:52.586368Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DF for T=180 days: 0.9853143806656076\n" ] } ], "source": [ "df1 = dc.value(refdate, refdate + dt.timedelta(days=180))\n", "print(\"DF for T=180 days: \", df1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**b. Forward discount factor for a maturity in 180 days in 90 days**\n", "\n", "If the valuation date given is in the future, the value function returns the forward discount factor. The following example gives us the forward discount factor for a maturity in 180 days in 90 days." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2020-05-03T11:48:52.617713Z", "start_time": "2020-05-03T11:48:52.608407Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fwd-DF for T=180 days in 90 days: 0.9926300321180352\n" ] } ], "source": [ "fwd_df = dc.value(refdate + dt.timedelta(days=90), refdate + dt.timedelta(days=180))\n", "print(\"Fwd-DF for T=180 days in 90 days: \", fwd_df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A check proves that the result equally the forward discount curve." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2020-05-03T11:48:52.640920Z", "start_time": "2020-05-03T11:48:52.622492Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fwd-DF (manual calculation): 0.9926300321180352\n" ] } ], "source": [ "df2 = dc.value(refdate, refdate + dt.timedelta(days=90))\n", "print(\"Fwd-DF (manual calculation): \", df1/df2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**c. Valuation dates before the reference date**\n", "\n", "Valuation dates before the curves reference date result in an exception (uncomment the following code to see the exception)." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2020-05-03T11:48:52.663528Z", "start_time": "2020-05-03T11:48:52.642706Z" } }, "outputs": [], "source": [ "#dc.value(refdate + dt.timedelta(days=-90), refdate + dt.timedelta(days=90))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plotting Discount Curves\n", "\n", "To plot a curve one can simply call the curve's *plot* method. This method plots either the discoutn factors or the rates (depending on the argument *discount_factors*). The granularity of the timegrid on which the curve is plotted can be determined by the argument *days*. Arguments to matplotlibs plot function can be given using the respective **kwargs**." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2020-05-03T11:48:53.415055Z", "start_time": "2020-05-03T11:48:52.712661Z" }, "code_folding": [], "scrolled": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#Example with coarse timegrid\n", "dc_hagan.plot(days=300, marker='x')\n", "#Example with fine timegrid\n", "plt.figure()\n", "dc_hagan.plot(days=10, marker='x')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercises" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Create a second discount curve with non-flat rate structure." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Plot the second discount curve and the first discount curve together in one figure." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Create a third discount curve exactly as the second but with interpolation LINEARLOG and compare the differences of results using different interpolation schemes (note that finding the correct ensemble of dates and discount factors, forward rates may not be smoothly interpolated with LINEARLOG)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Write a function computing a simply (continuously) compounded rate for a given discount factor and year fraction." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Write a function computing an annually compounded rate for a given discount factor and year fraction." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Find and modify the plot function from above so that the user can additionally choose which compounding rate is used when plotting the rate." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] } ], "metadata": { "hide_input": false, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.6" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": true, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": true }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }