{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\"The" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Parallel Valuation of Large Portfolios " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Derivatives (portfolio) valuation by Monte Carlo simulation is a **computationally demanding task**. For practical applications, when valuation speed plays an important role, **parallelization of both simulation and valuation tasks** might prove a useful strategy. DX Analytics has built in a basic parallelization option which allows the use of the Python `mulitprocessing` module. Depending on the tasks at hand this can already lead to significant speed-ups." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from dx import *\n", "import time\n", "from pylab import plt\n", "plt.style.use('seaborn')\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Single Risk Factor" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The example is based on a **single risk factor**, a `geometric_brownian_motion` object." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# constant short rate\n", "r = constant_short_rate('r', 0.02)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# market environments\n", "me_gbm = market_environment('gbm', dt.datetime(2015, 1, 1))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# geometric Brownian motion\n", "me_gbm.add_constant('initial_value', 100.)\n", "me_gbm.add_constant('volatility', 0.2) \n", "me_gbm.add_constant('currency', 'EUR')\n", "me_gbm.add_constant('model', 'gbm')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# valuation environment\n", "val_env = market_environment('val_env', dt.datetime(2015, 1, 1))\n", "val_env.add_constant('paths', 25000)\n", "val_env.add_constant('frequency', 'M')\n", "val_env.add_curve('discount_curve', r)\n", "val_env.add_constant('starting_date', dt.datetime(2015, 1, 1))\n", "val_env.add_constant('final_date', dt.datetime(2015, 12, 31))" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# add valuation environment to market environments\n", "me_gbm.add_environment(val_env)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "risk_factors = {'gbm' : me_gbm}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## American Put Option" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We also model only a **single derivative instrument**." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "gbm = geometric_brownian_motion('gbm_obj', me_gbm)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "me_put = market_environment('put', dt.datetime(2015, 1, 1))\n", "me_put.add_constant('maturity', dt.datetime(2015, 12, 31))\n", "me_put.add_constant('strike', 40.)\n", "me_put.add_constant('currency', 'EUR')\n", "me_put.add_environment(val_env)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "am_put = valuation_mcs_american_single(\n", " 'am_put', mar_env=me_put, underlying=gbm,\n", " payoff_func='np.maximum(strike - instrument_values, 0)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Large Portfolio" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, the `derivatives_portfolio` object we compose consists of **100 derivatives positions**. Each option differes with respect to the strike." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "positions = {}\n", "strikes = np.linspace(80, 120, 100)\n", "for i, strike in enumerate(strikes):\n", " positions[i] = derivatives_position(\n", " name='am_put_pos_%s' % strike,\n", " quantity=1,\n", " underlyings=['gbm'],\n", " mar_env=me_put,\n", " otype='American single',\n", " payoff_func='np.maximum(%5.3f - instrument_values, 0)' % strike)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sequential Valuation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, the derivatives portfolio with **sequential valuation**." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "port_sequ = derivatives_portfolio(\n", " name='portfolio',\n", " positions=positions,\n", " val_env=val_env,\n", " risk_factors=risk_factors,\n", " correlations=None,\n", " parallel=False) # sequential calculation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The call of the `get_values` method to **value all instruments** ..." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Total\n", " pos_value 839.234\n", "dtype: float64\n", "Time in sec 4.09\n" ] } ], "source": [ "t0 = time.time()\n", "ress = port_sequ.get_values()\n", "ts = time.time() - t0\n", "print('Time in sec %.2f' % ts)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "... and the **results visualized**." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0,0.5,'option value estimates')" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ress['strike'] = strikes\n", "ress.set_index('strike')['value'].plot(figsize=(10, 6))\n", "plt.ylabel('option value estimates')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Parallel Valuation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Second, the derivatives portfolio with **parallel valuation**." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "port_para = derivatives_portfolio(\n", " 'portfolio',\n", " positions,\n", " val_env,\n", " risk_factors,\n", " correlations=None,\n", " parallel=True) # parallel valuation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The call of the `get_values` method for the parall valuation case." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Total\n", " pos_value 840.238\n", "dtype: float64\n", "Time in sec 5.36\n" ] } ], "source": [ "t0 = time.time()\n", "resp = port_para.get_values()\n", " # parallel valuation with as many cores as available\n", "tp = time.time() - t0\n", "print('Time in sec %.2f' % tp)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, the **results visualized** (and compared to the sequential results)." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0,0.5,'option value estimates')" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nvJCI28SRF7wAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10, 6))\n", "plt.plot(strikes, resp['value'].values, 'r.', label='parallel')\n", "plt.plot(strikes, ress['value'].values, 'b', label='sequential')\n", "plt.legend(loc=0)\n", "plt.ylabel('option value estimates')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Speed-up" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The **realized speed-up** is of course dependend on the hardware used, and in particular the number of cores (threads) available." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7630898756144515" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ts / tp\n", " # speed-up factor\n", " # of course harware-dependent" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5,1,'DX Analytics Portfolio Valuation')" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "wi = 0.4\n", "plt.figure(figsize=(10, 6))\n", "plt.bar((1.5 - wi/2, 2.5 - wi/2), (ts/ts, tp/ts), width=wi)\n", "plt.xticks((1.5, 2.5), ('sequential', 'parallel'))\n", "plt.ylim(0, 1.1), plt.xlim(0.75, 3.25)\n", "plt.ylabel('relative performance (lower = better)')\n", "plt.title('DX Analytics Portfolio Valuation')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Copyright, License & Disclaimer**\n", "\n", "© Dr. Yves J. Hilpisch | The Python Quants GmbH\n", "\n", "DX Analytics (the \"dx library\" or \"dx package\") is licensed under the GNU Affero General\n", "Public License version 3 or later (see http://www.gnu.org/licenses/).\n", "\n", "DX Analytics comes with no representations or warranties, to the extent\n", "permitted by applicable law.\n", "\n", "http://tpq.io | [dx@tpq.io](mailto:team@tpq.io) |\n", "http://twitter.com/dyjh\n", "\n", "\"The
\n", "\n", "**Quant Platform** | http://pqp.io\n", "\n", "**Python for Finance Training** | http://training.tpq.io\n", "\n", "**Certificate in Computational Finance** | http://compfinance.tpq.io\n", "\n", "**Derivatives Analytics with Python (Wiley Finance)** |\n", "http://dawp.tpq.io\n", "\n", "**Python for Finance (2nd ed., O'Reilly)** |\n", "http://py4fi.tpq.io" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.8" } }, "nbformat": 4, "nbformat_minor": 1 }