Top Banner
Chapter 3 Pricing and Hedging in Discrete Time We consider the pricing and hedging of options in a discrete-time financial model with N + 1 time instants t =0, 1,...,N . Vanilla options are treated using backward induction, and exotic options with arbitrary payoff functions are considered using the Clark-Ocone formula in discrete time. Contents 3.1 Pricing of Contingent Claims ................... 69 3.2 Pricing of Vanilla Options in the CRR Model .... 74 3.3 Hedging Contingent Claims ..................... 79 3.4 Hedging Vanilla Options in the CRR model ...... 80 3.5 Hedging Exotic Options in the CRR Model ...... 86 3.6 Convergence of the CRR Model ................. 93 Exercises ........................................... 98 3.1 Pricing of Contingent Claims Let us consider an attainable contingent claim with (random) claim payoff C > 0 and maturity N . Recall that by the Definition 2.12 of attainability there exists a (self-financing) portfolio strategy (ξ t ) t=1,2,...,N that hedges the claim C, in the sense that ¯ ξ N · ¯ S N = d k=0 ξ (k) N S (k) N = C (3.1) at time N . Clearly, if (3.1) holds, then investing the amount V 0 = ¯ ξ 1 · ¯ S 0 = d k=0 ξ (k) 1 S (k) 0 (3.2) at time t = 0, resp. 69
40

Notes on Stochastic Finance - NTU€¦ · Chapter3 PricingandHedginginDiscreteTime We consider the pricing and hedging of options in a discrete-time financial modelwithN+ 1 timeinstantst=

May 09, 2018

Download

Documents

ĐăngDũng
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • Chapter 3Pricing and Hedging in Discrete Time

    We consider the pricing and hedging of options in a discrete-time financialmodel with N + 1 time instants t = 0, 1, . . . , N . Vanilla options are treatedusing backward induction, and exotic options with arbitrary payoff functionsare considered using the Clark-Ocone formula in discrete time.

    Contents3.1 Pricing of Contingent Claims . . . . . . . . . . . . . . . . . . . 693.2 Pricing of Vanilla Options in the CRR Model . . . . 743.3 Hedging Contingent Claims . . . . . . . . . . . . . . . . . . . . . 793.4 Hedging Vanilla Options in the CRR model . . . . . . 803.5 Hedging Exotic Options in the CRR Model . . . . . . 863.6 Convergence of the CRR Model . . . . . . . . . . . . . . . . . 93Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

    3.1 Pricing of Contingent Claims

    Let us consider an attainable contingent claim with (random) claim payoffC > 0 and maturity N . Recall that by the Definition 2.12 of attainabilitythere exists a (self-financing) portfolio strategy (t)t=1,2,...,N that hedges theclaim C, in the sense that

    N SN =dk=0

    (k)N S

    (k)N = C (3.1)

    at time N . Clearly, if (3.1) holds, then investing the amount

    V0 = 1 S0 =dk=0

    (k)1 S

    (k)0 (3.2)

    at time t = 0, resp.

    69

  • N. Privault

    Vt = t St =dk=0

    (k)t S

    (k)t (3.3)

    at times t = 1, 2, . . . , N into a self-financing hedging portfolio will allow oneto hedge the option and to obtain the perfect replication (3.1) at time N .Definition 3.1. The value (3.2)-(3.3) at time t of a self-financing portfoliostrategy (t)t=1,2,...,N hedging an attainable claim C will be called an arbitrageprice of the claim C at time t and denoted by t(C), t = 0, 1, . . . , N .

    Recall that arbitrage prices can be used to ensure that financial derivativesare marked at their fair value (mark to market).

    Next we develop a second approach to the pricing of contingent claims, basedon conditional expectations and martingale arguments. We will need the fol-lowing lemma, in which Vt := Vt/(1 + r)t denotes the discounted portfoliovalue, t = 0, 1, . . . , N .

    Relation (3.4) in the following lemma has a natural interpretation by sayingthat when a portfolio is self-financing the value Vt of the (discounted) port-folio at time t is given by summing up the (discounted) profits and lossesregistered over all time periods from time 0 to time t. Note that in (3.4), theuse of the vector of discounted asset prices

    Xt :=(S

    (0)t , S

    (1)t , . . . , S

    (d)t ), t = 0, 1, . . . , N,

    allows us to add up the discounted profits and losses t (Xt Xt1

    )since

    they are expressed in units of currency at time 0. Indeed, in general, $1 attime t = 0 cannot be added to $1 at time t = 1 without proper discounting.Lemma 3.2. The following statements are equivalent:

    (i) The portfolio strategy(t)t=1,2,...,N is self-financing.

    (ii) t Xt = t+1 Xt for all t = 1, 2, . . . , N 1.

    (iii) the discounted portfolio value Vt can be written as the stochastic sum-mation

    Vt = V0 +t

    k=1k

    (Xk Xk1

    ) sum of profits and losses

    , t = 0, 1, . . . , N, (3.4)

    of discounted profits and losses.

    Proof. First, the self-financing condition (i)

    t1 St1 = t St1, t = 2, 3, . . . , N,70

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    is clearly equivalent to (ii) by division of both sides by (1 + r)t1.

    Next, assuming that (ii) holds we have the telescoping identity

    Vt = V0 +t

    k=1(Vk Vk1)

    = V0 +t

    k=1k Xk k1 Xk1

    = V0 +t

    k=1k Xk k Xk1

    = V0 +t

    k=1k

    (Xk Xk1

    ), t = 1, 2, . . . , N.

    Finally, assuming that (iii) holds we get

    Vt Vt1 = t (Xt Xt1

    ),

    which rewrites as

    t Xt t1 Xt1 = t (Xt Xt1

    ),

    ort1 Xt1 = t Xt1, t = 1, 2, . . . , N.

    In Relation (3.4), the term t (Xt Xt1

    )represents the profit and loss

    Vt Vt1 = t (Xt Xt1

    ),

    of the self-financing portfolio strategy(j)j=1,2,...,N over the time interval

    (t 1, t], computed by multiplication of the portfolio allocation t with thechange of price Xt Xt1, t = 1, 2, . . . , N .

    The sum (3.4) is also referred to as a discrete-time stochastic integral ofthe portfolio strategy

    (t)t=1,2,...,N with respect to the random process(

    Xt)t=0,1,...,N .

    Remark 3.3. As a consequence of the above Lemma 3.2, if a contingentclaim C with discounted payoff is attainable by a self-financing portfolio strat-egy

    (t)t=1,2,...,N then the discounted claim payoff

    C := C(1 + r)N = N XN

    " 71

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    rewrites as the sum of discounted profits and losses

    C = N XN = VN = V0 +Nt=1

    t (Xt Xt1

    ). (3.5)

    Remark 3.4. By Proposition 2.9, the process(Xt)t=0,1,...,N is a martingale

    under the risk-neutral measure P, hence by Proposition 2.7 and Lemma 3.2,(Vt)t=0,1,...,N in (3.4) is also martingale under P, provided that

    (t)t=1,2,...,N

    is a self-financing and predictable process.

    The above remarks will be used in the proof of the next Theorem 3.5.

    Theorem 3.5. The arbitrage price t(C) of an attainable contingent claimC is given by

    t(C) =1

    (1 + r)Nt IE[C | Ft], t = 0, 1, . . . , N, (3.6)

    where P denotes any risk-neutral probability measure.

    Proof. a) Short proof. Since the claim C is attainable, there exists a self-financing portfolio strategy (t)t=1,2,...,N such that C = VN , i.e. C = VN .In addition, by Lemma 3.2 and Remark 3.3 the process (Vt)t=0,1,...,N is amartingale, hence we have

    Vt = IE[VNFt] = IE [C Ft], t = 0, 1, . . . , N, (3.7)

    which shows (3.8). To conclude, we note that by Definition 3.1 the arbitrageprice t(C) of the claim at time t is equal to the value Vt of the self-financinghedging C.

    b) Long proof. For completeness, we include a self-contained, step by stepderivation of (3.7), as follows:

    IE[CFt] = IE [VN Ft]

    = IE[V0 +

    Nk=1

    k (Xk Xk1

    ) Ft]

    = IE[V0Ft]+ N

    k=1IE[k

    (Xk Xk1

    ) Ft]= V0 +

    tk=1

    IE[k

    (Xk Xk1

    ) Ft]+ Nk=t+1

    IE[k

    (Xk Xk1

    ) Ft]= V0 +

    tk=1

    k (Xk Xk1

    )+

    Nk=t+1

    IE[k

    (Xk Xk1

    ) Ft]72

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    = Vt +N

    k=t+1IE[k

    (Xk Xk1

    ) Ft],where we used Relation (3.4) of Lemma 3.2. In order to obtain (3.8) we needto show that

    Nk=t+1

    IE[k

    (Xk Xk1

    ) Ft] = 0,or

    IE[j (Xj Xj1

    ) Ft] = 0,for all j = t+ 1, . . . , N . Since 0 6 t 6 j 1 we have Ft Fj1, hence by thetower property of conditional expectations we get

    IE[j (Xj Xj1

    ) Ft] = IE [ IE [j (Xj Xj1) Fj1] | Ft],therefore it suffices to show that

    IE[j (Xj Xj1

    ) Fj1] = 0, j = 1, 2, . . . , N.We note that the porfolio allocation j over the time period [j 1, j] ispredictable, i.e. it is decided at time j 1, and it thus depends only on theinformation Fj1 known up to time j 1, hence

    IE[j (Xj Xj1

    ) Fj1] = j IE [Xj Xj1 Fj1].Finally we note that

    IE[Xj Xj1

    Fj1] = IE [Xj Fj1] IE [Xj1 Fj1]= IE

    [XjFj1] Xj1

    = 0, j = 1, 2, . . . , N,

    because(Xt)t=0,1,...,N is a martingale under the risk-neutral measure P

    , andthis concludes the proof of (3.7). Let

    C = C(1 + r)N

    denote the discounted payoff of the claim C. We will show that under anyrisk-neutral measure P the discounted value of any self-financing portfoliohedging C is given by

    Vt = IE[CFt], t = 0, 1, . . . , N, (3.8)

    which shows thatVt =

    1(1 + r)Nt IE

    [C | Ft]

    " 73

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    after multiplication of both sides by (1 + r)t. Next, we note that (3.8) followsfrom the martingale transform result of Proposition 2.7.

    Note that (3.6) admits an interpretation in an insurance framework, in whicht(C) represents an insurance premium and C represents the random valueof an insurance claim made by a subscriber. In this context, the premium ofthe insurance contract reads as the average of the values (3.6) of the randomclaims after time discounting.

    Remark 3.6. The self-financing discounted portfolio price process(Vt)t=0,1,...,N = ((1 + r)

    tt(C))t=0,1,...,N

    is a martingale under P. From Theorem 3.5, we can recover this fact as inRemark 3.3, since from the tower property (18.40) of conditional expecta-tions we have

    Vt = IE[CFt]

    = IE[IE[CFt+1] Ft]

    = IE[Vt+1

    Ft], t = 0, 1, . . . , N 1. (3.9)This also allows us to compute Vt by backward induction on t = 0, 1, . . . , N1,starting from VN = C.

    In particular, at t = 0 we obtain the price of the contingent claim C at time0:

    0(C) = IE[CF0] = IE [C] = 1(1 + r)N IE[C].

    3.2 Pricing of Vanilla Options in the CRR Model

    In this section we consider the pricing of contingent claims in the discrete-time Cox-Ross-Rubinstein model, with d = 1. More precisely we are con-cerned with vanilla options whose payoffs depend on the terminal value ofthe underlying asset, as opposed to exotic options whose payoffs may dependon the whole path of the underlying asset price until expiration time.

    Recall that the portfolio value process (Vt)t=0,1,...N and the discountedportfolio value process respectively satisfy

    Vt = t St and Vt =1

    (1 + r)tVt =1

    (1 + r)t t St = t Xt, t = 0, 1, . . . , N.

    74

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    Here we will be concerned with the pricing of vanilla options with payoffs ofthe form

    C = f(S

    (1)N

    ),

    e.g. f(x) = (x K)+ in the case of a European call. Equivalently, the dis-counted claim

    C = C(1 + r)N

    satisfies C = f(S

    (1)N

    )with f(x) = f(x)/(1 + r)N . For example in the case of

    a European call with strike price K we have

    f(x) = 1(1 + r)N (xK)+.

    From Theorem 3.5, the discounted value of a portfolio hedging the attainable(discounted) claim C is given by

    Vt = IE[f(S

    (1)N

    ) Ft] = IE [f(S(1)N ) St], t = 0, 1, . . . , N,under the risk-neutral measure P. As a consequence, we have the followingproposition.

    Proposition 3.7. The arbitrage price t(C) at time t = 0, 1, . . . , N of thecontingent claim C = f

    (S

    (1)N

    )is given by

    t(C) =1

    (1 + r)Nt IE [f(S(1)N ) Ft] = 1(1 + r)Nt IE [f(S(1)N ) St],

    (3.10)t = 0, 1, . . . , N .

    In the next proposition we implement the calculation of (3.10).

    Proposition 3.8. The price t(C) of the contingent claim C = f(S

    (1)N

    )satisfies

    t(C) = v(t, S

    (1)t

    ), t = 0, 1, . . . , N,

    where the function v(t, x) is given by

    v(t, x) = 1(1 + r)Nt IE

    fx N

    j=t+1(1 +Rj)

    (3.11)= 1(1 + r)Nt

    Ntk=0

    (N tk

    )(p)k(1 p)Ntkf

    (x(1 + b)k(1 + a)Ntk

    ).

    Proof. From the relations Download the corresponding (non-recursive) that can be runhere.

    " 75

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://try.jupyter.org{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from IPython.display import HTML\n", "\n", "HTML('''\n", "''')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "import networkx as nx \n", "import numpy as np\n", "import matplotlib \n", "import matplotlib.pyplot as plt \n", "\n", "N=2;S0=1\n", "\n", "r = 0.75;a=-0.5;b=2\n", "\n", "p = (r-a)/(b-a)\n", "q = (b-r)/(b-a)\n", "\n", "def plot_tree(g):\n", " pos={}\n", " lab={} \n", " for n in g.nodes():\n", " pos[n]=(n[0],n[1])\n", " lab[n]=float(\"{0:.2f}\".format(g.node[n]['value']))\n", " elarge=g.edges(data=True)\n", " nx.draw_networkx_edges(g,pos,edgelist=elarge)\n", " nx.draw_networkx_labels(g,pos,lab,font_size=15,font_family='sans-serif')\n", " plt.show()\n", " \n", "def graph_stock():\n", " S=nx.Graph()\n", " for k in range(0,N):\n", " for l in range(-k+1,k+3,2):\n", " S.add_edge((k,l),(k+1,l+1))\n", " S.add_edge((k,l),(k+1,l-1))\n", " \n", " for n in S.nodes():\n", " k=n[0]\n", " l=n[1]-1\n", " S.node[n]['value']=S0*((1.0+b)**((k+l)/2))*((1.0+a)**((k-l)/2))\n", " return S\n", "\n", "plot_tree(graph_stock())" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def European_call_price(K):\n", "\n", " price = nx.Graph() \n", " hedge = nx.Graph()\n", " S = graph_stock()\n", "\n", " for k in range(0,N):\n", " for l in range(-k+1,k+3,2):\n", " price.add_edge((k,l),(k+1,l+1))\n", " price.add_edge((k,l),(k+1,l-1))\n", " hedge.add_edge((k,l),(k+1,l+1))\n", " hedge.add_edge((k,l),(k+1,l-1))\n", " \n", " for l in range(-N+1,N+3,2):\n", " price.node[(N,l)]['value'] = np.maximum(S.node[(N,l)]['value']-K,0)\n", " \n", " for k in reversed(range(0,N)):\n", " for l in range(-k+1,k+3,2):\n", " price.node[(k,l)]['value'] = (price.node[(k+1,l+1)]['value']*p+price.node[(k+1,l-1)]['value']*q)/(1+r) \n", " return price" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def European_call_price_non_recursive(K):\n", "\n", " price = nx.Graph() \n", " hedge = nx.Graph()\n", " S = graph_stock()\n", " sum=0\n", " \n", " for k in range(0,N):\n", " for l in range(-k+1,k+3,2):\n", " price.add_edge((k,l),(k+1,l+1))\n", " price.add_edge((k,l),(k+1,l-1))\n", " hedge.add_edge((k,l),(k+1,l+1))\n", " hedge.add_edge((k,l),(k+1,l-1))\n", " \n", " for l in range(-N+1,N+3,2):\n", " price.node[(N,l)]['value'] = np.maximum(S.node[(N,l)]['value']-K,0)\n", " \n", " for k in reversed(range(0,N)):\n", " for l in range(-k+1,k+3,2):\n", " price.node[(k,l)]['value']=0\n", " for i in range (0,N-k+1,1):\n", " price.node[(k,l)]['value']=price.node[(k,l)]['value']+np.maximum(S.node[(k,l)]['value']*(1+b)**i*(1+a)**(N-k-i)-K,0)*p**i*(1-p)**(N-k-i)*np.math.factorial(N-k)/np.math.factorial(i)/np.math.factorial(N-k-i)/(1+r)**(N-k) \n", " return price" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "K = input(\"Strike K=\")\n", "\n", "call_price = European_call_price(float(K))\n", "\n", "call_price_non_recursive = European_call_price_non_recursive(float(K))\n", "\n", "print('Underlying asset prices:')\n", "plot_tree(graph_stock())\n", "print('European call prices:')\n", "plot_tree(call_price)\n", "print('Price at time 0 of the European call option:',float(\"{0:.4f}\".format(call_price.node[(0,1)]['value'])))\n", "print('Non recursive European call prices:')\n", "plot_tree(call_price_non_recursive)\n", "print('Non recursive price at time 0 of the European call option:',float(\"{0:.4f}\".format(call_price_non_recursive.node[(0,1)]['value'])))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def European_put_price(K):\n", "\n", " price = nx.Graph() \n", " S = graph_stock()\n", "\n", " for k in range(0,N):\n", " for l in range(-k+1,k+3,2):\n", " price.add_edge((k,l),(k+1,l+1))\n", " price.add_edge((k,l),(k+1,l-1))\n", " \n", " for l in range(-N+1,N+3,2):\n", " price.node[(N,l)]['value'] = np.maximum(K-S.node[(N,l)]['value'],0)\n", " \n", " for k in reversed(range(0,N)):\n", " for l in range(-k+1,k+3,2):\n", " price.node[(k,l)]['value'] = (price.node[(k+1,l+1)]['value']*p+price.node[(k+1,l-1)]['value']*q)/(1+r) \n", " return price" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def European_put_parity(K):\n", "\n", " price = nx.Graph() \n", " call = European_call_price(K)\n", " S = graph_stock()\n", "\n", " for k in range(0,N):\n", " for l in range(-k+1,k+3,2):\n", " price.add_edge((k,l),(k+1,l+1))\n", " price.add_edge((k,l),(k+1,l-1))\n", "\n", " for k in reversed(range(0,N+1)):\n", " for l in range(-k+1,k+3,2):\n", " price.node[(k,l)]['value'] = call.node[(k,l)]['value'] + K*(1.0+r)**(k-N) - S.node[(k,l)]['value']\n", " return price" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "K = input(\"Strike=\")\n", "\n", "put_price = European_put_price(float(K))\n", "put_parity = European_put_parity(float(K))\n", "\n", "print('Underlying asset prices:')\n", "plot_tree(graph_stock())\n", "print('European put prices:')\n", "plot_tree(put_price)\n", "print('European put parity prices:')\n", "plot_tree(put_parity)\n", "print('Price at time 0 of the European put option:',float(\"{0:.4f}\".format(put_price.node[(0,1)]['value'])))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def European_call_hedge(K):\n", "\n", " price = European_call_price(K)\n", " hedge = nx.Graph()\n", " S = graph_stock()\n", "\n", " for k in range(0,N):\n", " for l in range(-k+1,k+3,2):\n", " hedge.add_edge((k,l),(k+1,l+1))\n", " hedge.add_edge((k,l),(k+1,l-1))\n", " \n", " for l in range(-N+1,N+3,2):\n", " hedge.node[(N,l)]['value'] = 0\n", "\n", " for k in reversed(range(0,N)):\n", " for l in range(-k+1,k+3,2):\n", " hedge.node[(k,l)]['value'] = (price.node[(k+1,l+1)]['value']-price.node[(k+1,l-1)]['value'])/(b-a)/(S.node[(k,l)]['value'])\n", " return hedge" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "K = input(\"Strike K=\")\n", "\n", "call_price = European_call_price(float(K))\n", "\n", "print('Underlying asset prices:')\n", "plot_tree(graph_stock())\n", "print('European call prices:')\n", "plot_tree(European_call_price(float(K)))\n", "print('Price at time 0 of the European call option:',float(\"{0:.4f}\".format(call_price.node[(0,1)]['value'])))\n", "print('Hedging strategy:')\n", "plot_tree(European_call_hedge(float(K)))" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [Root]", "language": "python", "name": "Python [Root]" }, "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.5.1" }, "widgets": { "state": {}, "version": "1.1.2" } }, "nbformat": 4, "nbformat_minor": 0}

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    S(1)N = S

    (1)t

    Nj=t+1

    (1 +Rj),

    and (3.10) we have, using Property (v) of the conditional expectation andthe independence of the returns {R1, . . . , Rt} and {Rt+1, . . . , RN},

    t(C) =1

    (1 + r)Nt IE [f(S(1)N ) Ft]

    = 1(1 + r)Nt IE

    fS(1)t N

    j=t+1(1 +Rj)

    St

    = 1(1 + r)Nt IE

    fx N

    j=t+1(1 +Rj)

    x=S(1)t

    .

    Next, we note that the number of times Rj is equal to b for j {t+1, . . . , N},has a binomial distribution with parameter (N t, p), where

    p = r ab a

    and 1 p = b rb a

    , (3.12)

    since the set of paths from time t+ 1 to time N containing j times (1 + b)

    has cardinality(N tj

    )and each such path has the probability (p)j(1

    p)Ntj , j = 0, . . . , N t. Hence we have

    t(C) =1

    (1 + r)Nt IE [f(S(1)N ) Ft]

    = 1(1 + r)NtNtk=0

    (N tk

    )(p)k(1 p)Ntkf

    (S

    (1)t (1 + b)k(1 + a)Ntk

    ).

    In the above proof we have also shown that t(C) is given by the conditionalexpected value

    t(C) =1

    (1 + r)Nt IE [f(S(1)N ) Ft] = 1(1 + r)Nt IE [f(S(1)N ) St]

    given the value of S(1)t at time t = 0, 1, . . . , N , due to the Markov propertyof(S

    (1)t

    )t=0,1,...,N . In particular, the price of the claim C is written as the

    average (path integral) of the values of the contingent claim over all possiblepaths starting from S(1)t .

    76

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    Market terms and data

    Intrinsic value. The intrinsic value at time t = 0, 1, . . . , N of the optionwith payoff C = h

    (S

    (1)N

    )is given by the immediate exercise payoff h

    (S

    (1)t

    ).

    The extrinsic value at time t = 0, 1, . . . , N of the option is the remainingdifference t(C)h

    (S

    (1)t

    )between the option price t(C) and the immedi-

    ate exercise payoff h(S

    (1)t

    ). In general, the option price t(C) decomposes

    as

    t(C) = h(S

    (1)t

    ) intrinsic value

    + t(C) h(S

    (1)t

    ) extrinsic value

    , t = 0, 1, . . . , N.

    Gearing. The gearing at time t = 0, 1, . . . , N of the option with payoffC = h

    (S

    (1)N

    )is defined as the ratio

    Gt :=S

    (1)t

    t(C)= S

    (1)t

    v(t, S

    (1)t

    ) , t = 0, 1, . . . , N.Break-even price. The break-even underlying price BEPt at time t = 0, 1, . . . , N

    of the underlying asset is the value of S for which the intrinsic option valueh(S

    (1)t

    )equals the option price t(C). In other words, BEPt represents the

    price of the underlying asset for which we would break even if the optionwas exercised today. For European call options it is given by

    BEPt := K + t(C) = K + v(t, S

    (1)t

    ), t = 0, 1, . . . , N.

    whereas for European put options it is given by

    BEPt := K t(C) = K v(t, S

    (1)t

    ), t = 0, 1, . . . , N.

    Premium. The option premium OPt can be defined as the variation requiredfrom the underlying in order to reach the break-even underlying price, i.e.we have

    OPt :=BEPt S(1)t

    S(1)t

    =K + v

    (t, S

    (1)t ) S

    (1)t

    S(1)t

    , t = 0, 1, . . . , N,

    for European call options, and

    OPt :=S

    (1)t BEPtS

    (1)t

    =S

    (1)t + v

    (t, S

    (1)t

    )K

    S(1)t

    , t = 0, 1, . . . , N,

    for European put options. The term premium is sometimes also used todenote the arbitrage price v

    (t, S

    (1)t

    )of the option.

    " 77

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    Pricing by Backward Induction

    In the CRR model, the discounted portfolio price Vt can be computed by back-ward induction as in (3.9), using the martingale property of the discountedoption price process (Vt)t=0,1,...,N under the risk-neutral measure P. Namely,by the tower property of conditional expectations, letting

    v(t, S

    (1)t

    ):= 1(1 + r)t v

    (t, S

    (1)t

    ), t = 0, 1, . . . , N,

    we have

    Vt = v(t, S

    (1)t

    )= IE

    [f(S

    (1)N

    ) Ft]= IE

    [IE[f(S

    (1)N

    ) Ft+1] Ft]= IE

    [Vt+1

    Ft]= IE

    [v(t+ 1, S(1)t+1

    ) St]= v

    (t+ 1, (1 + a)S(1)t

    )P(Rt+1 = a) + v

    (t+ 1, (1 + b)S(1)t

    )P(Rt+1 = b)

    = (1 p)v(t+ 1, (1 + a)S(1)t

    )+ pv

    (t+ 1, (1 + b)S(1)t

    ),

    which shows that v(t, x) satisfies the backward induction relation

    v(t, x) = (1 p)v(t+ 1, x(1 + a)

    )+ pv

    (t+ 1, x(1 + b)

    ), (3.13)

    while the terminal condition VN = f(S

    (1)N

    )implies

    v(N, x) = f(x), x > 0.

    For non-discounted option prices v(t, St), the function v(t, x) satisfies therelation

    v(t, x) = 1 p

    1 + r v(t+ 1, x(1 + a)

    )+ p

    1 + r v(t+ 1, x(1 + b)

    ),

    with the terminal condition

    v(N, x) = f(x), x > 0.

    Note that the discrete-time induction relation (3.13) can be connected to thecontinuous-time Black-Scholes PDE (5.13), cf. Exercises 5.11. Download the corresponding (recursive) that can be run here.

    78

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://try.jupyter.org{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from IPython.display import HTML\n", "\n", "HTML('''\n", "''')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "import networkx as nx \n", "import numpy as np\n", "import matplotlib \n", "import matplotlib.pyplot as plt \n", "\n", "N=2;S0=1\n", "\n", "r = 0.75;a=-0.5;b=2\n", "\n", "p = (r-a)/(b-a)\n", "q = (b-r)/(b-a)\n", "\n", "def plot_tree(g):\n", " pos={}\n", " lab={} \n", " for n in g.nodes():\n", " pos[n]=(n[0],n[1])\n", " lab[n]=float(\"{0:.2f}\".format(g.node[n]['value']))\n", " elarge=g.edges(data=True)\n", " nx.draw_networkx_edges(g,pos,edgelist=elarge)\n", " nx.draw_networkx_labels(g,pos,lab,font_size=15,font_family='sans-serif')\n", " plt.show()\n", " \n", "def graph_stock():\n", " S=nx.Graph()\n", " for k in range(0,N):\n", " for l in range(-k+1,k+3,2):\n", " S.add_edge((k,l),(k+1,l+1))\n", " S.add_edge((k,l),(k+1,l-1))\n", " \n", " for n in S.nodes():\n", " k=n[0]\n", " l=n[1]-1\n", " S.node[n]['value']=S0*((1.0+b)**((k+l)/2))*((1.0+a)**((k-l)/2))\n", " return S\n", "\n", "plot_tree(graph_stock())" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def European_call_price(K):\n", "\n", " price = nx.Graph() \n", " hedge = nx.Graph()\n", " S = graph_stock()\n", "\n", " for k in range(0,N):\n", " for l in range(-k+1,k+3,2):\n", " price.add_edge((k,l),(k+1,l+1))\n", " price.add_edge((k,l),(k+1,l-1))\n", " hedge.add_edge((k,l),(k+1,l+1))\n", " hedge.add_edge((k,l),(k+1,l-1))\n", " \n", " for l in range(-N+1,N+3,2):\n", " price.node[(N,l)]['value'] = np.maximum(S.node[(N,l)]['value']-K,0)\n", " \n", " for k in reversed(range(0,N)):\n", " for l in range(-k+1,k+3,2):\n", " price.node[(k,l)]['value'] = (price.node[(k+1,l+1)]['value']*p+price.node[(k+1,l-1)]['value']*q)/(1+r) \n", " return price" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "K = input(\"Strike K=\")\n", "\n", "call_price = European_call_price(float(K))\n", "\n", "print('Underlying asset prices:')\n", "plot_tree(graph_stock())\n", "print('European call prices:')\n", "plot_tree(call_price)\n", "print('Price at time 0 of the European call option:',float(\"{0:.4f}\".format(call_price.node[(0,1)]['value'])))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def European_put_price(K):\n", "\n", " price = nx.Graph() \n", " S = graph_stock()\n", "\n", " for k in range(0,N):\n", " for l in range(-k+1,k+3,2):\n", " price.add_edge((k,l),(k+1,l+1))\n", " price.add_edge((k,l),(k+1,l-1))\n", " \n", " for l in range(-N+1,N+3,2):\n", " price.node[(N,l)]['value'] = np.maximum(K-S.node[(N,l)]['value'],0)\n", " \n", " for k in reversed(range(0,N)):\n", " for l in range(-k+1,k+3,2):\n", " price.node[(k,l)]['value'] = (price.node[(k+1,l+1)]['value']*p+price.node[(k+1,l-1)]['value']*q)/(1+r) \n", " return price" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def European_put_parity(K):\n", "\n", " price = nx.Graph() \n", " call = European_call_price(K)\n", " S = graph_stock()\n", "\n", " for k in range(0,N):\n", " for l in range(-k+1,k+3,2):\n", " price.add_edge((k,l),(k+1,l+1))\n", " price.add_edge((k,l),(k+1,l-1))\n", "\n", " for k in reversed(range(0,N+1)):\n", " for l in range(-k+1,k+3,2):\n", " price.node[(k,l)]['value'] = call.node[(k,l)]['value'] + K*(1.0+r)**(k-N) - S.node[(k,l)]['value']\n", " return price" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "K = input(\"Strike=\")\n", "\n", "put_price = European_put_price(float(K))\n", "put_parity = European_put_parity(float(K))\n", "\n", "print('Underlying asset prices:')\n", "plot_tree(graph_stock())\n", "print('European put prices:')\n", "plot_tree(put_price)\n", "print('European put parity prices:')\n", "plot_tree(put_parity)\n", "print('Price at time 0 of the European put option:',float(\"{0:.4f}\".format(put_price.node[(0,1)]['value'])))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def European_call_hedge(K):\n", "\n", " price = European_call_price(K)\n", " hedge = nx.Graph()\n", " S = graph_stock()\n", "\n", " for k in range(0,N):\n", " for l in range(-k+1,k+3,2):\n", " hedge.add_edge((k,l),(k+1,l+1))\n", " hedge.add_edge((k,l),(k+1,l-1))\n", " \n", " for l in range(-N+1,N+3,2):\n", " hedge.node[(N,l)]['value'] = 0\n", "\n", " for k in reversed(range(0,N)):\n", " for l in range(-k+1,k+3,2):\n", " hedge.node[(k,l)]['value'] = (price.node[(k+1,l+1)]['value']-price.node[(k+1,l-1)]['value'])/(b-a)/(S.node[(k,l)]['value'])\n", " return hedge" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "K = input(\"Strike K=\")\n", "\n", "call_price = European_call_price(float(K))\n", "\n", "print('Underlying asset prices:')\n", "plot_tree(graph_stock())\n", "print('European call prices:')\n", "plot_tree(European_call_price(float(K)))\n", "print('Price at time 0 of the European call option:',float(\"{0:.4f}\".format(call_price.node[(0,1)]['value'])))\n", "print('Hedging strategy:')\n", "plot_tree(European_call_hedge(float(K)))" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [Root]", "language": "python", "name": "Python [Root]" }, "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.5.1" }, "widgets": { "state": {}, "version": "1.1.2" } }, "nbformat": 4, "nbformat_minor": 0}

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    3.3 Hedging Contingent Claims

    The basic idea of hedging is to allocate assets in a portfolio in order to pro-tect oneself from a given risk. For example, a risk of increasing oil pricescan be hedged by buying oil-related stocks, whose value should be positivelycorrelated with the oil price. In this way, a loss connected to increasing oilprices could be compensated by an increase in the value of the correspondingportfolio.

    In the setting of this chapter, hedging an attainable contingent claim C meanscomputing a self-financing portfolio strategy

    (t)t=1,2,...,N such that

    N SN = C, i.e. N XN = C. (3.14)

    Price, then hedge.

    The portfolio allocation N can be computed by first solving (3.14) for Nfrom the payoff values C, based on the fact that the allocation N dependsonly on information up to time N 1, by the predictability of

    (k)

    16k6N .

    If the self-financing portfolio value Vt is known, for example from (3.6), i.e.

    Vt =1

    (1 + r)Nt IE[C | Ft], t = 0, 1, . . . , N, (3.15)

    we may similarly compute t by solving t St = Vt for all t = 1, 2, . . . , N 1.

    Hedge, then price.

    If Vt is not known we can use backward induction to compute a self-financingportfolio strategy. Starting from the values of N obtained by solving

    N SN = C,

    we use the self-financing condition to solve for N1, N2, . . ., 4, down to3, 2, and finally 1.

    In order to implement this algorithm we can use the N 1 self-financingequations

    t Xt = t+1 Xt, t = 1, 2, . . . , N 1, (3.16)

    allowing us in principle to compute the portfolio strategy(t)t=1,2,...,N .

    Based on the values of N we can solve

    " 79

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    N1 SN1 = N SN1

    for N1, thenN2 SN2 = N1 SN2

    for N2, and successively 2 down to 1. In Section 3.4 the backward induc-tion (3.16) will be implemented in the CRR model, see the proof of Proposi-tion 3.9, and Exercises 3.11 and 3.4 for an application in a two-step model.

    The discounted value Vt at time t of the portfolio claim can then be obtainedfrom

    V0 = 1 X0 and Vt = t Xt, t = 1, 2, . . . , N. (3.17)

    In addition we have shown in the proof of Theorem 3.5 that the price t(C)of the claim C at time t coincides with the value Vt of any self-financingportfolio hedging the claim C, i.e.

    t(C) = Vt, t = 0, 1, . . . , N,

    as given by (3.17). Hence the price of the claim can be computed either al-gebraically by solving (3.14) and (3.16) using backward induction and thenusing (3.17), or by a probabilistic method by a direct evaluation of the dis-counted expected value (3.15).

    The increased use of hedging algorithms has increased credit exposure andcounterparty risk, meaning that one party may not be able to deliver theoption payoff as stated in the contract.

    3.4 Hedging Vanilla Options in the CRR model

    In this section we implement the backward induction (3.16) of Section 3.3 forthe hedging of contingent claims in the discrete-time Cox-Ross-Rubinsteinmodel. Our aim is to compute a self-financing portfolio strategy hedging avanilla option with payoff of the form

    C = h(S

    (1)N

    ).

    Since the discounted price S(0)t of the risk-free asset satisfies

    S(0)t = (1 + r)tS

    (0)t = S

    (0)0 ,

    80

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    we may sometimes write S(0)0 in place of S(0)t . In Propositions 3.9 and 3.11

    we present two different approaches to hedging and to the computation ofthe predictable process

    (

    (1)t

    )t=1,2,...,N , which is also called the Delta.

    Proposition 3.9. Price, then hedge. The self-financing replicating portfo-lio allocation

    (

    (0)t ,

    (1)t

    )t=1,2,...,N =

    (

    (0)t

    (S

    (1)t1),

    (1)t

    (S

    (1)t1))t=1,2,...,N hedging

    the contingent claim C = h(S

    (1)N

    )is given by

    (1)t

    (S

    (1)t1)

    =v(t, (1 + b)S(1)t1

    ) v(t, (1 + a)S(1)t1

    )(b a)S(1)t1

    =v(t, (1 + b)S(1)t1

    ) v(t, (1 + a)S(1)t1

    )(b a)S(1)t1/(1 + r)

    , (3.18)

    where the function v(t, x) is given by (3.11), and

    (0)t

    (S

    (1)t1)

    =(1 + b)v

    (t, (1 + a)S(1)t1

    ) (1 + a)v

    (t, (1 + b)S(1)t1

    )(b a)S(0)t

    =(1 + b)v

    (t, (1 + a)S(1)t1

    ) (1 + a)v

    (t, (1 + b)S(1)t1

    )(b a)S(0)0

    , (3.19)

    t = 1, 2, . . . , N , where the function v(t, x) = (1+r)tv(t, x) is given by (3.11).

    Proof. We first compute the self-financing hedging strategy(t)t=1,2,...,N by

    solvingt Xt = Vt, t = 1, 2, . . . , N,

    from which we deduce the two equations

    (0)t

    (S

    (1)t1)S

    (0)0 +

    (1)t

    (S

    (1)t1)1 + a

    1 + r S(1)t1 = v

    (t, (1 + a)S(1)t1

    )

    (0)t

    (S

    (1)t1)S

    (0)0 +

    (1)t

    (S

    (1)t1)1 + b

    1 + r S(1)t1 = v

    (t, (1 + b)S(1)t1

    ),

    which can be solved as

    (0)t

    (S

    (1)t1)

    =(1 + b)v

    (t, (1 + a)S(1)t1

    ) (1 + a)v

    (t, (1 + b)S(1)t1

    )(b a)S(0)0

    (1)t

    (S

    (1)t1)

    =v(t, (1 + b)S(1)t1

    ) v(t, (1 + a)S(1)t1

    )(b a)S(1)t1/(1 + r)

    ,

    Download the corresponding pricing and hedging that can berun here.

    " 81

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    { "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from IPython.display import HTML\n", "\n", "HTML('''\n", "''')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "import networkx as nx \n", "import numpy as np\n", "import matplotlib \n", "import matplotlib.pyplot as plt \n", "\n", "N=2;S0=1\n", "\n", "r=0.75;a=-0.5;b=2\n", "\n", "p = (r-a)/(b-a)\n", "q = (b-r)/(b-a)\n", "\n", "def plot_tree(g):\n", " pos={}\n", " lab={}\n", " \n", " for n in g.nodes():\n", " pos[n]=(n[0],n[1])\n", " lab[n]=float(\"{0:.2f}\".format(g.node[n]['value']))\n", " \n", " elarge=g.edges(data=True)\n", " nx.draw_networkx_edges(g,pos,edgelist=elarge)\n", " nx.draw_networkx_labels(g,pos,lab,font_size=15)\n", " plt.show()\n", " \n", "def graph_stock():\n", " S=nx.Graph()\n", " for k in range(0,N):\n", " for l in range(-k+1,k+3,2):\n", " S.add_edge((k,l),(k+1,l+1))\n", " S.add_edge((k,l),(k+1,l-1))\n", " \n", " for n in S.nodes(): \n", " k=n[0]\n", " l=n[1]-1\n", " S.node[n]['value']=S0*((1.0+b)**((k+l)/2))*((1.0+a)**((k-l)/2))\n", " return S\n", "\n", "plot_tree(graph_stock())" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def European_call_hedge_risky(K):\n", "\n", " price = nx.Graph()\n", " hedge_risky = nx.Graph()\n", " S = graph_stock()\n", "\n", " for k in range(0,N):\n", " for l in range(-k+1,k+3,2):\n", " price.add_edge((k,l),(k+1,l+1))\n", " price.add_edge((k,l),(k+1,l-1))\n", " hedge_risky.add_edge((k,l),(k+1,l+1))\n", " hedge_risky.add_edge((k,l),(k+1,l-1))\n", " \n", " for l in range(-N+1,N+3,2):\n", " price.node[(N,l)]['value'] = np.maximum(S.node[(N,l)]['value']-K,0)\n", " hedge_risky.node[(N,l)]['value'] = 0\n", "\n", " for k in reversed(range(0,N)):\n", " for l in range(-k+1,k+3,2):\n", " price.node[(k,l)]['value'] = (price.node[(k+1,l+1)]['value']*p+price.node[(k+1,l-1)]['value']*q)/(1+r)\n", " hedge_risky.node[(k,l)]['value'] = (price.node[(k+1,l+1)]['value']-price.node[(k+1,l-1)]['value'])/(b-a)/(S.node[(k,l)]['value'])\n", " return hedge_risky" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def European_call_hedge_riskless(K):\n", "\n", " price = nx.Graph()\n", " hedge_riskless = nx.Graph()\n", " S = graph_stock()\n", "\n", " for k in range(0,N):\n", " for l in range(-k+1,k+3,2):\n", " price.add_edge((k,l),(k+1,l+1))\n", " price.add_edge((k,l),(k+1,l-1))\n", " hedge_riskless.add_edge((k,l),(k+1,l+1))\n", " hedge_riskless.add_edge((k,l),(k+1,l-1))\n", " \n", " for l in range(-N+1,N+3,2):\n", " price.node[(N,l)]['value'] = np.maximum(S.node[(N,l)]['value']-K,0)\n", " hedge_riskless.node[(N,l)]['value'] = 0\n", "\n", " for k in reversed(range(0,N)):\n", " for l in range(-k+1,k+3,2):\n", " price.node[(k,l)]['value'] = (price.node[(k+1,l+1)]['value']*p+price.node[(k+1,l-1)]['value']*q)/(1+r)\n", " hedge_riskless.node[(k,l)]['value'] = ((1+b)*price.node[(k+1,l-1)]['value']-(1+a)*price.node[(k+1,l+1)]['value'])/(b-a)/pow(1+r,k+1)\n", " return hedge_riskless" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "K = input(\"Strike K=\")\n", "\n", "print('Underlying asset prices:')\n", "plot_tree(graph_stock())\n", "print('Risky hedging strategy:')\n", "plot_tree(European_call_hedge_risky(float(K)))\n", "print('Riskless hedging strategy:')\n", "plot_tree(European_call_hedge_riskless(float(K)))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def Hedge_then_price(K):\n", "\n", " hedge_riskless = European_call_hedge_riskless(K)\n", " hedge_risky = European_call_hedge_risky(K)\n", " S = graph_stock()\n", " hedge_then_price = nx.Graph()\n", "\n", " for k in range(0,N):\n", " for l in range(-k+1,k+3,2):\n", " hedge_then_price.add_edge((k,l),(k+1,l+1))\n", " hedge_then_price.add_edge((k,l),(k+1,l-1))\n", " \n", " for l in range(-N+1,N+3,2):\n", " hedge_risky.node[(N,l)]['value'] = 0\n", " hedge_then_price.node[(N,l)]['value'] = 0\n", "\n", " for k in reversed(range(0,N)):\n", " for l in range(-k+1,k+3,2):\n", " hedge_then_price.node[(k,l)]['value'] = hedge_risky.node[(k,l)]['value']*S.node[(k,l)]['value']+hedge_riskless.node[(k,l)]['value']*(1+r)**k\n", " return hedge_then_price" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "K = input(\"Strike K=\")\n", "\n", "print('Underlying asset prices:')\n", "plot_tree(graph_stock())\n", "print('Risky hedging strategy:')\n", "plot_tree(European_call_hedge_risky(float(K)))\n", "print('Riskless hedging strategy:')\n", "plot_tree(European_call_hedge_riskless(float(K)))\n", "print('Hedge then price:')\n", "plot_tree(Hedge_then_price(float(K)))" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [Root]", "language": "python", "name": "Python [Root]" }, "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.5.1" }, "widgets": { "state": {}, "version": "1.1.2" } }, "nbformat": 4, "nbformat_minor": 0}

    http://try.jupyter.orghttp://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    t = 1, 2, . . . , N , which only depends on S(1)t1, as expected. This is consistentwith the fact that (1)t represents the (possibly fractional) quantity of therisky asset to be present in the portfolio over the time period [t 1, t] inorder to hedge the claim C at time N , and is decided at time t 1.

    Market terms and data

    Effective gearing. The effective gearing at time t = 1, 2, . . . , N of the optionwith payoff C = h

    (S

    (1)N

    )is defined as the ratio

    Get := Gt(1)t

    = S(1)t

    t(C)

    (1)t

    =S

    (1)t

    (v(t, (1 + b)S(1)t1

    ) v(t, (1 + a)S(1)t1

    ))S

    (1)t1v

    (t, S

    (1)t

    )(b a)

    =(v(t, (1 + b)S(1)t1

    ) v(t, (1 + a)S(1)t1

    ))/v(t, S

    (1)t

    )S

    (1)t1(b a)/S

    (1)t

    , t = 1, 2, . . . , N.

    The effective gearing Get = tS(1)t /t(C) can be interpreted as the hedge

    ratio, i.e. the percentage of the portfolio which is invested on the riskyasset. It also represents the ratio between the percentage change

    (v(t, (1+

    b)S(1)t1)v(t, (1+a)S(1)t1

    ))/v(t, S

    (1)t

    )in the option price and the potential

    percentage change S(1)t1(b a)/S(1)t in the underlying when the market

    return switches from a to b.

    Note that if the function x 7 h(x) is nondecreasing then the function x 7v(t, x) is also nondecreasing for all fixed t = 0, 1, . . . , N , hence the portfolioallocation

    (

    (0)t ,

    (1)t

    )t=1,2,...,N defined by (3.11) or (3.18) satisfies

    (1)t > 0,

    t = 1, 2, . . . , N and there is not short selling. This applies in particular toEuropean call options. Similarly we can show that (1)t 6 0, t = 1, 2, . . . , N ,i.e. short selling always occurs, when x 7 h(x) is a nonincreasing function,as in the case of European put options.

    Remark 3.10. We can check that the portfolio strategy(t)t=1,2,...,N =

    (

    (0)t ,

    (1)t

    )t=1,2,...,N =

    (

    (0)t

    (S

    (1)t1),

    (1)t

    (S

    (1)t1))t=1,2,...,N

    is self-financing, as we have

    t+1 Xt = (0)t+1(S

    (1)t

    )S

    (0)0 +

    (1)t+1(S

    (1)t

    )S

    (1)t

    82

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    = S(0)0(1 + b)v

    (t+ 1, (1 + a)S(1)t

    ) (1 + a)v

    (t+ 1, (1 + b)S(1)t

    )(b a)S(0)0

    +S(1)tv(t+ 1, (1 + b)S(1)t

    ) v(t+ 1, (1 + a)S(1)t

    )(b a)S(1)t /(1 + r)

    =(1 + b)v

    (t+ 1, (1 + a)S(1)t

    ) (1 + a)v

    (t+ 1, (1 + b)S(1)t

    )(b a)

    +v(t+ 1, (1 + b)S(1)t

    ) v(t+ 1, (1 + a)S(1)t

    )(b a)/(1 + r)

    = r ab a

    v(t+ 1, (1 + b)S(1)t

    )+ b rb a

    v(t+ 1, (1 + a)S(1)t

    )= pv

    (t+ 1, (1 + b)S(1)t

    )+ qv

    (t+ 1, (1 + a)S(1)t

    )= v

    (t, S

    (1)t

    )= (0)t

    (S

    (1)t

    )S

    (0)0 +

    (1)t

    (S

    (1)t

    )S

    (1)t

    = t Xt, t = 0, 1, . . . , N 1,

    where we used (3.13) or the martingale property of the discounted price pro-cess

    (v(t, S

    (1)t

    ))t=0,1,...,N , cf. Lemma 3.2.

    As a consequence of (3.19), the discounted amounts (0)t S(0)0 and

    (1)t S

    (1)t

    respectively invested on the risk-free and riskly assets are given by

    S(0)0

    (0)t

    (S

    (1)t1)

    =(1 + b)v

    (t, (1 + a)S(1)t1

    ) (1 + a)v

    (t, (1 + b)S(1)t1

    )b a

    (3.20)

    and

    S(1)t

    (1)t

    (S

    (1)t1)

    = (1 +Rt)v(t, (1 + b)S(1)t1

    ) v(t, (1 + a)S(1)t1

    )b a

    ,

    t = 1, 2, . . . , N .

    Regarding the quantity (0)t of the risk-free asset in the portfolio at time t,from the relation

    Vt = t Xt = (0)t S(0)t +

    (1)t S

    (1)t , t = 1, 2, . . . , N,

    we also obtain

    (0)t =

    Vt (1)t S(1)t

    S(0)t

    " 83

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    = Vt (1)t S

    (1)t

    S(0)0

    =v(t, S

    (1)t

    ) (1)t S

    (1)t

    S(0)0

    ,

    t = 1, 2, . . . , N . In the next proposition we compute the hedging strategy bybackward induction, starting from the relation

    (1)N

    (S

    (1)N1

    )=h((1 + b)S(1)N1

    ) h((1 + a)S(1)N1

    )(b a)S(1)N1

    ,

    and

    (0)N

    (S

    (1)N1

    )=

    (1 + b)h((1 + a)S(1)N1

    ) (1 + a)h

    ((1 + b)S(1)N1

    )(b a)S(0)0 (1 + r)N

    ,

    that follow from (3.18) and (3.19) applied to the payoff function h().

    Proposition 3.11. Hedge, then price. The self-financing replicating portfo-lio allocation

    (

    (0)t ,

    (1)t

    )t=1,2,...,N =

    (

    (0)t

    (S

    (1)t1),

    (1)t

    (S

    (1)t1))t=1,2,...,N hedging

    the contingent claim C = h(S

    (1)N

    )is given from (3.18) at time t = N by

    (1)N

    (S

    (1)N1

    )=h((1 + b)S(1)N1

    ) h((1 + a)S(1)N1

    )(b a)S(1)N1

    , (3.21)

    where the function v(t, x) is given by (3.11), and

    (0)N

    (S

    (1)N1

    )=

    (1 + b)h((1 + a)S(1)N1

    ) (1 + a)h

    ((1 + b)S(1)N1

    )(b a)S(0)N

    , (3.22)

    and then inductively by

    (1)t

    (S

    (1)t1)

    =(1 + b)(1)t+1((1 + b)S

    (1)t1) (1 + a)

    (1)t+1((1 + a)S

    (1)t1)

    b a

    +S(0)0

    (0)t+1((1 + b)S

    (1)t1)

    (0)t+1((1 + a)S

    (1)t1)

    (b a)S(1)t1/(1 + r),

    and

    (0)t

    (S

    (1)t1)

    =(1 + a)(1 + b)S(1)t1

    (

    (1)t+1((1 + a)S(1)t1

    ) (1)t+1

    ((1 + b)S(1)t1

    ))(b a)(1 + r)S(0)0

    84

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    +(1 + b)(0)t+1

    ((1 + a)S(1)t1

    ) (1 + a)(0)t+1

    ((1 + b)S(1)t1

    )b a

    , (3.23)

    t = 1, 2, . . . , N 1.

    The pricing function v(t, x) = (1 + r)tv(t, x) is then given by

    v(t, S

    (1)t

    )= S(0)0

    (0)t

    (S

    (1)t1)

    + S(1)t (1)t

    (S

    (1)t1), t = 1, 2, . . . , N.

    Proof. Relations (3.21)-(3.22) follow from (3.18)-(3.19) at time t = N . Next,by the self-financing condition (3.16) we have

    t Xt = t+1 Xt

    i.e.

    S(0)0

    (0)t

    (S

    (1)t1)

    + S(1)t1(1)t

    (S

    (1)t1)1 + b

    1 + r= (0)t+1

    ((1 + b)S(1)t1

    )S

    (0)0 +

    (1)t+1((1 + b)S(1)t1

    )S

    (1)t1

    1 + b1 + r

    S(0)0

    (0)t

    (S

    (1)t1)

    + S(1)t1(1)t

    (S

    (1)t1)1 + a

    1 + r= (0)t+1

    ((1 + a)S(1)t1

    )S

    (0)0 +

    (1)t+1((1 + a)S(1)t1

    )S

    (1)t1

    1 + a1 + r ,

    which can be solved as

    (1)t

    (S

    (1)t1)

    =(1 + b)(1)t+1

    ((1 + b)S(1)t1

    ) (1 + a)(1)t+1

    ((1 + a)S(1)t1

    )b a

    +(1 + r)S(0)0

    (0)t+1((1 + b)S(1)t1

    ) (0)t+1

    ((1 + a)S(1)t1

    )(b a)S(1)t1

    ,

    and

    (0)t

    (S

    (1)t1)

    =(1 + a)(1 + b)S(1)t1

    (

    (1)t+1((1 + a)S(1)t1

    ) (1)t+1

    ((1 + b)S(1)t1

    ))(b a)(1 + r)S(0)0

    +(1 + b)(0)t+1

    ((1 + a)S(1)t1

    ) (1 + a)(0)t+1

    ((1 + b)S(1)t1

    )b a

    ,

    t = 1, 2, . . . , N 1.

    Remark 3.12. We can check that the corresponding discounted price process

    (Vt)t=1,2,...,N =(t Xt

    )t=1,2,...,N

    is a martingale under P:

    " 85

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    Vt = t Xt= S(0)0

    (0)t

    (S

    (1)t1)

    + S(1)t (1)t

    (S

    (1)t1)

    =(1 + a)(1 + b)S(1)t1

    (

    (1)t+1((1 + a)S(1)t1

    ) (1)t+1

    ((1 + b)S(1)t1

    ))(b a)(1 + r)

    +S(0)0(1 + b)(0)t+1

    ((1 + a)S(1)t1

    ) (1 + a)(0)t+1

    ((1 + b)S(1)t1

    )(b a)

    +S(1)t(1 + b)(1)t+1

    ((1 + b)S(1)t1

    ) (1 + a)(1)t+1

    ((1 + a)S(1)t1

    )b a

    +(1 + r)S(1)t S(0)0

    (0)t+1((1 + b)S(1)t1

    ) (0)t+1

    ((1 + a)S(1)t1

    )(b a)S(1)t1

    = r ab a

    S(0)0

    (0)t+1(S

    (1)t

    )+ b rb a

    S(0)0

    (0)t+1(S

    (1)t

    )+(r a)(1 + b)(b a)(1 + r) S

    (1)t

    (1)t+1(S

    (1)t

    )+ (b r)(1 + a)(b a)(1 + r) S

    (1)t

    (1)t+1(S

    (1)t

    )= pS(0)0

    (0)t+1(S

    (1)t

    )+ qS(0)0

    (0)t+1(S

    (1)t

    )+p 1 + b1 + r S

    (1)t

    (1)t+1(S

    (1)t

    )+ q 1 + a1 + r S

    (1)t

    (1)t+1(S

    (1)t

    )= IE

    [S

    (0)0

    (0)t+1(S

    (1)t

    )+ S(1)t+1

    (1)t+1(S

    (1)t

    ) Ft]= IE

    [Vt+1

    Ft],t = 1, 2, . . . , N 1.

    3.5 Hedging Exotic Options in the CRR Model

    In this section we take p = p given by (3.12) and we consider the hedgingof path-dependent options. Here we choose to use the finite difference gra-dient and the discrete Clark-Ocone formula of stochastic analysis, see also[FS04], [LL96], [Pri08], Chapter 1 of [Pri09], [RdC01], or 15-1 of [Wil91].See [NP09] and Section 8.2 of [Pri09] for a similar approach in continuoustime. Given

    = (1, 2, . . . , N ) = {1, 1}N ,

    and r = 1, 2, . . . , N , let

    t+ := (1, 2, . . . , t1,+1, t+1, . . . , N )

    andt := (1, 2, . . . , t1,1, t+1, . . . , N ).

    We also assume that the return Rt() is constructed as

    86

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    Rt(t+) = b and Rt(t) = a, t = 1, 2, . . . , N, .

    Definition 3.13. The operator Dt is defined on any random variable F by

    DtF () = F (t+) F (t), t = 1, 2, . . . , N. (3.24)

    We define the centered and normalized return Yt by

    Yt :=Rt rb a

    =

    b rb a

    = q, t = +1,

    a rb a

    = p, t = 1,t = 1, 2, . . . , N.

    Note that under the risk-neutral measure P we have

    IE[Yt] = IE[Rt rb a

    ]= a rb a

    P(Rt = a) +b rb a

    P(Rt = b)

    = a rb a

    b rb a

    + b rb a

    r ab a

    = 0,

    andVar [Yt] = pq2 + qp2 = pq, t = 1, 2, . . . , N.

    In addition, the discounted asset price increment reads

    S(1)t S

    (1)t1 = S

    (1)t1

    1 +Rt1 + r S

    (1)t1

    = Rt r1 + r S(1)t1

    = b a1 + rYtS(1)t1, t = 1, 2, . . . , N.

    We also have

    DtYt =b rb a

    + r ab a

    = 1, t = 1, 2, . . . , N,

    and

    DtS(1)N = S

    (1)0 (1 + b)

    Nk=1k 6=t

    (1 +Rk) S(1)0 (1 + a)Nk=1k 6=t

    (1 +Rk)

    " 87

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    = (b a)S(1)0Nk=1k 6=t

    (1 +Rk)

    = S(1)0b a

    1 +Rt

    Nk=1

    (1 +Rk)

    = b a1 +RtS

    (1)N , t = 1, 2, . . . , N.

    The following stochastic integral decomposition formula for the functionalsof the binomial process is known as the Clark-Ocone formula in discrete time,cf. e.g. [Pri09], Proposition 1.7.1.Proposition 3.14. For any square-integrable random variables F on wehave

    F = IE[F ] +k=1

    Yk IE[DkF | Fk1]. (3.25)

    The Clark-Ocone formula has the following consequence.Corollary 3.15. Assume that (Mk)kN is a square-integrable (Fk)kN-martingale. Then we have

    MN = IE[MN ] +Nk=1

    YkDkMk, N > 0.

    Proof. We have

    MN = IE[MN ] +k=1

    Yk IE[DkMN | Fk1]

    = IE[MN ] +k=1

    YkDk IE[MN | Fk]

    = IE[MN ] +k=1

    YkDkMk

    = IE[MN ] +Nk=1

    YkDkMk.

    In addition to the Clark-Ocone formula we also state a discrete-time analog ofIts change of variable formula, which can be useful for option hedging. Thenext result extends Proposition 1.13.1 of [Pri09] by removing the unnecessarymartingale requirement on (Mt)nN.Proposition 3.16. Let (Zn)nN be an (Fn)nN-adapted process and let f :R N R be a given function. We have88

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    f(Zt, t) = f(Z0, 0) +t

    k=1Dkf(Zk, k)Yk

    +t

    k=1

    (IE[f(Zk, k) | Fk1] f(Zk1, k 1)

    ). (3.26)

    Proof. First, we note that the process

    t 7 f(Zt, t)t

    k=1

    (IE[f(Zk, k) | Fk1] f(Zk1, k 1)

    )is a martingale under P. Indeed, we have

    IE[f(Zt, t)

    tk=1

    (IE[f(Zk, k) | Fk1] f(Zk1, k 1)

    ) Ft1]= IE[f(Zt, t) | Ft1]

    t

    k=1

    (IE[IE[f(Zk, k) | Fk1] | Ft1] IE[IE[f(Zk1, k 1) | Fk1] | Ft1]

    )= IE[f(Zt, t) | Ft1]

    tk=1

    (IE[f(Zk, k) | Fk1] f(Zk1, k 1)

    )= f(Zt1, t 1)

    t1k=1

    (IE[f(Zk, k) | Fk1] f(Zk1, k 1)

    ), t > 1.

    Note that if (Zt)tN is a discrete-time (Ft)tN-martingale in L2() writtenas

    Zt = Z0 +t

    k=1ukYk, t N,

    where (ut)tN is an (Ft)tN-predictable process locally in L2( N), (i.e.u()1[0,N ]() L2( N) for all N > 0), then we have

    Dtf(Zt, t) = f(Zt1 + qut, t

    ) f

    (Zt1 put, t

    ), (3.27)

    t = 1, 2, . . . , N . On the other hand, the term

    IE[f(Zt, t) f(Zt1, t 1) | Ft1]

    is analog to the finite variation part in the continuous-time It formula, andcan be written as

    pf(Zt1 + qut, t

    )+ qf

    (Zt1 put, t

    ) f

    (Zt1, t 1

    ).

    " 89

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    Naturally, if (f(Zt, t))tN is a martingale we recover the decomposition

    f(Zt, t) = f(Z0, 0)

    +t

    k=1

    (f(Zk1 + quk, k

    ) f

    (Zk1 puk, k

    ))Yk

    = f(Z0, 0) +t

    k=1YkDkf(Zk, k). (3.28)

    This identity follows from Corollary 3.15 as well as from Proposition 3.14. Inthis case the Clark-Ocone formula (3.25) and the change of variable formula(3.28) both coincide and we have in particular

    Dkf(Zk, k) = IE[Dkf(ZN , N) | Fk1],

    k = 1, 2, . . . , N . For example this recovers the martingale representation

    S(1)t = S

    (1)0 +

    tk=1

    YkDkS(1)k

    = S(1)0 +b a1 + r

    tk=1

    S(1)k1Yk

    = S(1)0 +t

    k=1S

    (1)k1

    Rk r1 + r

    = S(1)0 +t

    k=1

    (S

    (1)k S

    (1)k1),

    of the discounted asset price.

    Our goal is to hedge an arbitrary claim C on , i.e. given an FN -measurable random variable C we search for a portfolio allocation

    (

    (0)t ,

    (1)t

    )t=1,2,...,N

    such that the equality

    C = VN = (0)N S(0)N +

    (1)N S

    (1)N (3.29)

    holds, where S(0)N = S(0)0 (1 + r)N denotes the value of the risk-free asset at

    time N N.

    The next proposition is the main result of this section, and provides asolution to the hedging problem under the constraint (3.29).

    Proposition 3.17. Given a contingent claim C, let

    90

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    (1)t =

    (1 + r)(Nt)

    (b a)S(1)t1IE[DtC | Ft1], t = 1, 2, . . . , N, (3.30)

    and

    (0)t =

    1S

    (0)t

    ((1 + r)(Nt) IE[C | Ft] (1)t S

    (1)t

    ), (3.31)

    t = 1, 2, . . . , N . Then the portfolio allocation(

    (0)t ,

    (1)t

    )t=1,2,...,N is self fi-

    nancing and satisfies

    Vt = (0)t S(0)t +

    (1)t S

    (1)t = (1 + r)(Nt) IE[C | Ft], t = 1, 2, . . . , N,

    in particular we have VN = C, hence(

    (0)t ,

    (1)t

    )t=1,2,...,N is a hedging strategy

    leading to C.

    Proof. Let(

    (1)t

    )t=1,2,...,N be defined by (3.30), and consider the process(

    (0)t

    )t=0,1,...,N defined by

    (0)0 = (1 + r)N

    IE[C]S

    (1)0

    and (0)t+1 = (0)t

    (

    (1)t+1

    (1)t

    )S

    (1)t

    S(0)t

    ,

    t = 0, 1, . . . , N 1. Then(

    (0)t ,

    (1)t

    )t=1,2,...,N satisfies the self-financing con-

    dition

    S(0)t

    (

    (0)t+1

    (0)t

    )+ S(1)t

    (

    (1)t+1

    (1)t

    )= 0, t = 1, 2, . . . , N 1.

    Let now

    V0 :=1

    (1 + r)N IE[C], Vt := (0)t S

    (0)t +

    (1)t S

    (1)t , t = 1, 2, . . . , N,

    andVt =

    Vt(1 + r)t t = 0, 1, . . . , N.

    Since(

    (0)t ,

    (1)t

    )t=1,2,...,N is self-financing, by Lemma 3.2 we have

    Vt = V0 + (b a)t

    k=1

    1(1 + r)k Yk

    (1)k S

    (1)k1, (3.32)

    t = 1, 2, . . . , N . On the other hand, from the Clark-Ocone formula (3.25) andthe definition of

    (

    (1)t

    )t=1,2,...,N we have

    1(1 + r)N IE

    [C | Ft]

    " 91

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    = 1(1 + r)N IE

    [IE[C] +

    Nk=0

    Yk IE[DkC | Fk1]Ft]

    = 1(1 + r)N IE[C] + 1(1 + r)N

    tk=0

    IE[DkC | Fk1]Yk

    = 1(1 + r)N IE[C] + (b a)

    tk=0

    1(1 + r)k

    (1)k S

    (1)k1Yk

    = Vt

    from (3.32). Hence

    Vt =1

    (1 + r)N IE[C | Ft], t = 0, 1, . . . , N,

    andVt = (1 + r)(Nt) IE[C | Ft], t = 0, 1, . . . , N. (3.33)

    In particular, (3.33) shows that we have VN = C. To conclude the proofwe note that from the relation Vt = (0)t S

    (0)t +

    (1)t S

    (1)t , t = 1, 2, . . . , N , the

    process(

    (0)t

    )t=1,2,...,N coincides with

    (

    (0)t

    )t=1,2,...,N defined by (3.31).

    From Proposition 3.8, the price t(C) of the contingent claim C = f(S

    (1)N

    )is given by

    t(C) = v(t, S

    (1)t

    ),

    where the function v(t, x) is given by

    v(t, S

    (1)t

    )= 1(1 + r)Nt IE

    [C | Ft] =1

    (1 + r)Nt IE

    fx N

    j=t+1(1 +Rj)

    x=S(1)t

    .

    Note that in this case we have C = v(N,S

    (1)N

    ), IE[C] = v(0,M0), and the

    discounted claim payoff C = C/(1 + r)N = v(N,S

    (1)N

    )satisfies

    C = IE[C]

    +Nt=1

    Yt IE[Dtv

    (N,S

    (1)N

    ) Ft1]= IE

    [C]

    +Nt=1

    YtDtv(t, S

    (1)t

    )= IE

    [C]

    +Nt=1

    1(1 + r)tYtDtv

    (t, S

    (1)t

    )

    92

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    = IE[C]

    +Nt=1

    YtDt IE[v(N,S

    (1)N

    ) Ft]= IE

    [C]

    + 1(1 + r)NNt=1

    YtDt IE[C | Ft],

    hence we have

    IE[Dtv

    (N,S

    (1)N

    ) Ft1] = (1 + r)NtDtv(t, S(1)t ), t = 1, 2, . . . , N,and by Proposition 3.17 the hedging strategy for C = f

    (S

    (1)N

    )is given by

    (1)t =

    (1 + r)(Nt)

    (b a)S(1)t1IE[Dtv

    (N,S

    (1)N

    ) Ft1]= 1

    (b a)S(1)t1Dtv

    (t, S

    (1)t

    )= 1

    (b a)S(1)t1

    (v(t, S

    (1)t1(1 + b)

    ) v(t, S

    (1)t1(1 + a)

    ))= 1

    (b a)S(1)t1/(1 + r)(v(t, S

    (1)t1(1 + b)

    ) v(t, S

    (1)t1(1 + a)

    )),

    t = 1, 2, . . . , N , which recovers Proposition 3.9 as a particular case. Note that

    (1)t is nonnegative (i.e. there is no short selling) when f is a non decreasingfunction, because a < b. This is in particular true in the case of a Europeancall option for which we have f(x) = (xK)+.

    3.6 Convergence of the CRR Model

    As the pricing formulas (3.11) in the CRR model can be difficult to implementfor large values on N , in this section we consider the convergence of thediscrete-time model to the continuous-time Black Scholes model.

    Continuous compounding - risk-free asset

    Consider the subdivision[0, TN,

    2TN, . . . ,

    (N 1)TN

    , T

    ]of the time interval [0, T ] into N time steps. Note that

    limN

    (1 + r)N =,

    " 93

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    when r > 0, thus we need to renormalize r so that the interest rate on eachtime interval becomes rN , with limN rN = 0. It turns out that the correctrenormalization is

    rN := rT

    N, (3.34)

    so that for T > 0,

    limN

    (1 + rN )N = limN

    (1 + r T

    N

    )N= erT . (3.35)

    Hence the price S(0)t of the risk-free asset is given by

    S(0)t = S

    (0)0 ert, t R+, (3.36)

    which solves the differential equation

    dS(0)t

    dt= rS(0)t , S

    (0)0 = 1, t R+, (3.37)

    also written as

    dS(0)t = rS

    (0)t dt, or

    dS(0)t

    S(0)t

    = rdt. (3.38)

    Rewriting the last equation as

    S(0)t+dt S

    (0)t

    S(0)t

    = rdt,

    with dS(0)t = S(0)t+dt S

    (0)t , we find the return (S

    (0)t+dt S

    (0)t )/S

    (0)t of the risk-

    free asset equals rdt on the small time interval [t, t + dt]. Equivalently, onesays that r is the instantaneous interest rate per unit of time.

    The same equation rewrites in integral form as

    S(0)T S

    (0)0 =

    w T0dS

    (0)t = r

    w T0S

    (0)t dt.

    Continuous compounding - risky asset

    The Galton board simulation of Figure 3.1 shows the convergence of thebinomial random walk to a Gaussian distribution in large time.

    94

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    Fig. 3.1: Galton board simulation.

    Figure 3.2 pictures a real-life Galton board.

    Fig. 3.2: A real-life Galton board at Jurong Point # 03-01.

    In the CRR model we need to replace the standard Galton board by its mul-tiplicative version which converges to the lognormal distribution with proba-bility density function of the form

    x 7 f(x) = 1x

    2Te((r

    2/2)T+log x)2/(22T ), x > 0,

    and log-variance 2, as illustrated in the modified Galton board of Figure 3.3. The animation works in Acrobat Reader on the entire pdf file.

    " 95

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    Fig. 3.3: Multiplicative Galton board simulation.

    In addition to the renormalization (3.34) for the interest rate rN := rT/N ,we need to apply a similar renormalization to the coefficients a and b of theCRR model. Let > 0 denote a positive parameter called the volatility andlet aN , bN be defined from

    1 + aN1 + rN

    = eT/N and 1 + bN1 + rN

    = eT/N ,

    i.e.

    aN = (1 + rN ) eT/N 1 and bN = (1 + rN ) e

    T/N 1,

    where > 0 quantifies the range of random fluctations.

    Consider the random return R(N)k {aN , bN} and the price process definedas

    S(1)t,N = S

    (1)0

    tk=1

    (1 +R(N)k ), t = 1, 2, . . . , N.

    Note that the risk-neutral probabilities are given by

    P(Rt = aN ) =bN rNbN aN

    = eT/N 1

    2 sinh2T/N

    , t = 1, 2, . . . , N,

    and

    P(Rt = bN ) =rN aNbN aN

    = 1 eT/N

    2 sinh2T/N

    , t = 1, 2, . . . , N,

    which both converge to 1/2 as N goes to infinity. The animation works in Acrobat Reader on the entire pdf file.

    96

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    Continuous-time limit

    We have the following convergence result.Proposition 3.18. Let f be a continuous and bounded function on R. Theprice at time t = 0 of a contingent claim with payoff C = f

    (S

    (1)N,N

    )converges

    as follows:

    limN

    1(1 + rT/N)N IE

    [f(S(1)N,N)] = erT IE [f(S(1)0 eX+rT2T/2)](3.39)

    where X ' N (0, T ) is a centered Gaussian random variable with varianceT > 0.Proof. This result is consequence of the weak convergence in distributionof the sequence

    (S

    (1)N,N

    )N>1 to a lognormal distribution, cf. Theorem 5.53 of

    [FS04]. The convergence of the discount factor follows directly from (3.35).

    Note that the expectation (3.39) can be written as the Gaussian integral

    erT IE[f(S

    (1)0 eX+rT

    2T/2)] = erT w

    f(S

    (1)0 e

    Tx+rT2T/2) ex2/2

    2dx,

    see also Lemma 6.5 in Chapter 6, hence we have

    limN

    1(1 + rT/N)N IE

    [f(S(1)N,N)] = erT w f(S(1)0 eTx+rT2T/2) ex2/2

    2

    dx.

    It is a remarkable fact that in case f(x) = (xK)+, i.e. when C =(S

    (1)T

    K)+ is the payoff of a European call option with strike price K, the above

    integral can be computed according to the Black-Scholes formula:

    erT IE[(S

    (1)0 eX+rT

    2T/2 K)+] = S(1)0 (d+)K erT(d),

    where

    d =(r 2/2)T + log

    (S

    (1)0 /K

    )T

    , d+ = d + T ,

    and(x) := 1

    2

    w x

    ey2/2dy, x R,

    is the Gaussian cumulative distribution function.

    The Black-Scholes formula will be derived explicitly in the subsequentchapters using both PDE and probabilistic methods, cf. Propositions 5.17" 97

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    and 6.4. It can be considered as a building block for the pricing of financialderivatives, and its importance is not restricted to the pricing of options onstocks. Indeed, the complexity of the interest rate models makes it in generaldifficult to obtain closed-form expressions, and in many situations one hasto rely on the Black-Scholes framework in order to find pricing formulas, forexample in the case of interest rate derivatives as in the Black caplet formulaof the BGM model, cf. Proposition 14.4 in Section 14.3.

    Our aim later on will be to price and hedge options directly in continuous-time using stochastic calculus, instead of applying the limit procedure de-scribed in the previous section. In addition to the construction of the risk-free asset price (At)tR+ via (3.36) and (3.37) we now need to construct amathematical model for the price of the risly asset in continuous time.

    The return of the risky asset S(1)t over the time period [t, d + dt] will bedefined as

    dS(1)t

    S(1)t

    = dt+ dBt,

    where in comparison with (3.38), we add a small Gaussian random per-turbation dBt which accounts for market volatility. Here, the Brownianincrement dBt is multiplied by the volatility parameter > 0. In the nextChapter 4 we will turn to the formal definition of the stochastic process(Bt)tR+ which will be used for the modeling of risky assets in continuoustime.

    Exercises

    Exercise 3.1 (Exercise 2.3 continued) Consider a two-period trinomial mar-ket model

    (S

    (1)t

    )t=0,1,2 with r = 0 and three return rates Rt = 1, 0, 1.

    Taking S(1)0 = 1, price the European put option with strike price K = 1 andmaturity N = 2 at times t = 0 and t = 1.

    Exercise 3.2 Consider a two-period binomial market model (St)t=0,1,2 withtwo return rates a = 0, b = 1 and S0 = 1, and with the risk-free accountAt = (1 + r)t where r = 0.5. Price and hedge the vanilla option whose payoffC at time 2 is given by

    C =

    3 if S2 = 4,

    1 if S2 = 2,

    3 if S2 = 1.

    98

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    Exercise 3.3 In a two-period trinomial market model (St)t=0,1,2 with interestrate r = 0 and three return rates Rt = 0.5, 0, 1, we consider a down-an-outbarrier call option with exercise date N = 2, strike price K and barrier B,whose payoff C is given by

    C =(SN K

    )+1{

    mint=1,2,...,N

    St > B} =

    (SN K

    )+ if mint=1,2,...,N

    St > B,

    0 if mint=1,2,...,N

    St 6 B.

    a) Show that P given by r = P(Rt = 0.5) := 1/2, q = P(Rt = 0) :=1/4, p = P(Rt = 1) := 1/4 is risk-neutral.

    b) Taking S0 = 1, compute the possible values of the option payoff C withstrike price K = 1.5 and barrier B = 1, at maturity N = 2.

    c) Price the down-an-out barrier call option with exercise date N = 2, strikeprice K = 1.5 and barrier B = 1, at time t = 0 and t = 1.

    Hint: Use the formula

    t(C) =1

    (1 + r)Nt IE[C | St], t = 0, 1, . . . , N,

    where N denotes maturity time and C is the option payoff.d) Is this market complete? Is every contingent claim attainable?

    Exercise 3.4 Consider a two-step binomial random asset model (Sk)k=0,1,2with possible returns a = 0 and b = 200%, and a risk-free asset Ak = A0(1 +r)k, k = 0, 1, 2 with interest rate r = 100%, and S0 = A0 = 1, under therisk-neutral measure p = (r a)/(b a) = 1/2.

    a) Draw a binomial tree for the possible values of (Sk)k=0,1,2 and computethe values Vk of the hedging portfolio at times k = 0, 1, 2 of a Europeancall option on ST with strike price K = 8 and maturity T = 2.

    Hint: Consider three cases when k = 2, and two cases when k = 1.b) Compute the self-financing hedging portfolio allocation (k, k)k=1,2 with

    priceVk = kSk + kAk = k+1Sk + k+1Ak,

    at k = 1, hedging the European call with strike price K = 8 and maturityT = 2.

    Hint: Consider two separate cases for k = 2 and one case for k = 1.

    " 99

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    Exercise 3.5 Consider a two-step binomial random asset model (Sk)k=0,1,2with possible returns a = 50% and b = 150%, and a risk-free asset Ak =A0(1 + r)k, k = 0, 1, 2 with interest rate r = 100%, and S0 = A0 = 1, underthe risk-neutral measure p = (r a)/(b a) = 3/4.

    a) Draw a binomial tree for the values of (Sk)k=0,1,2.b) Compute the values Vk at times k = 0, 1, 2 of the hedging portfolio of a

    European put option with strike priceK = 5/4 and maturity T = 2 on ST .

    c) Compute the self-financing hedging portfolio allocation (k, k)k=1,2 withprice

    Vk = kSk + kAk = k+1Sk + k+1Ak,

    at k = 1, hedging the European put option with strike price K = 5/4 andmaturity T = 2.

    Exercise 3.6 Analysis of a binary option trading website.

    a) In a one-step model with risky asset prices S0, S1 at times t = 0 and t = 1,compute the price at time t = 0 of the binary call option with payoff

    C = 1[K,)(S1)

    =

    $1 if S1 > K,0 if S1 < K,in terms of the probability p = P(S1 > K) and of the risk-free rate r.

    b) Compute the two potential net returns obtained by purchasing one binarycall option.

    c) Compute the corresponding expected return.d) A website proposes to pay a return of 86% in case the binary options

    matures in the money, i.e. when S1 > K. Compute the correspondingexpected return. What do you conclude?

    Exercise 3.7 A put spread collar option requires its holder to sell an asset atthe price f(x) when its market price is x, where f(x) is the function plottedin Figure 3.4, with K1 := 90, K2 := 110, and K3 := 120.a) Draw the payoff function of the put spread collar.b) Show that the put spread collar can be realized by purchasing and/or

    issuing standard European call and put options with strike prices to bespecified.

    Hints: Recall that an option with payoff (SN ) is priced (1+r)N IE[(SN )

    ]at time 0. The payoff of the European call (resp. put) option with strikeprice K is (SN K)+, resp. (K SN )+.

    100

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    70

    80

    90

    100

    110

    120

    130

    60 70 80 90 100 110 120 130

    f(x)

    x

    put spread collar price map f(x)y=x

    Fig. 3.4: Put spread collar price graph.

    Exercise 3.8 Consider an asset price (Sn)n=0,1,...,N which is a martingale un-der the risk-neutral measure P, with respect to the filtration (Fn)n=0,1,...,N .Given the (convex) function (x) := (x K)+, show that the price of anAsian option with payoff

    (S1 + + SN

    N

    )and maturity N > 1 is always lower than the price of the correspondingEuropean call option, i.e. show that

    IE[

    (S1 + S2 + + SN

    N

    )]6 IE[(SN )].

    Hint: Use in the following order:

    (i) the convexity inequality (x1/N + + xN/N) 6 (x1)/N + +(xN )/N ,

    (ii) the martingale property Sk = IE[SN | Fk], k = 1, 2, . . . , N .(iii) the Jensen inequality

    (IE[SN | Fk]) 6 IE[(SN ) | Fk], k = 1, 2, . . . , N,

    (iv) the tower property IE[IE[(SN ) | Fk]] = IE[(SN )] of conditionalexpectations, k = 1, 2, . . . , N .

    Exercise 3.9 (Exercise 2.5 continued)

    a) We consider a forward contract on SN with strike price K and payoff

    C := SN K.

    Find a portfolio allocation (N , N ) with price

    " 101

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    VN = NN + NSN

    at time N , such thatVN = C, (3.40)

    by writing Condition (3.40) as a 2 2 system of equations.b) Find a portfolio allocation (N1, N1) with price

    VN1 = N1N1 + N1SN1

    at time N 1, and verifying the self-financing condition

    VN1 = NN1 + NSN1.

    Next, at all times t = 1, 2, . . . , N 1, find a portfolio allocation (t, t)with price Vt = tt+tSt verifying (3.40) and the self-financing condition

    Vt = t+1t + t+1St,

    where t, resp. t, represents the quantity of the risk-free, resp. risky, assetin the portfolio over the time period [t 1, t], t = 1, 2, . . . , N .

    c) Compute the arbitrage price t(C) = Vt of the forward contract C, attime t = 0, 1, . . . , N .

    d) Check that the arbitrage price t(C) satisfies the relation

    t(C) =1

    (1 + r)Nt IE[C | Ft], t = 0, 1, . . . , N.

    Exercise 3.10 Power option. Let (Sn)nN denote a binomial price processwith returns50% and +50%, and let the risk-free asset be priced as Ak = $1,k N. We consider a power option with payoff C := (SN )2, and a predictableself-financing portfolio strategy (k, k)k=1,2,...,N with price

    Vk = kSk + kA0, k = 1, 2, . . . , N.

    a) Find the portfolio allocation (N , N ) that matches the payoff C = (SN )2at time N , i.e. that satisfies

    VN = (SN )2.

    Hint: We have N = 3(SN1)2/4.b) Compute the portfolio price under the risk-neutral measure p = 1/2

    VN1 = IE[C | FN1].

    c) Find the portfolio allocation (N1, N1) at time N1 from the relation

    102

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    VN1 = N1SN1 + N1A0.

    Hint: We have N1 = 15(SN2)2/16.d) Check that the portfolio satisfies the self-financing condition

    VN1 = N1SN1 + N1A0 = NSN1 + NA0.

    Exercise 3.11 Consider the discrete-time Cox-Ross-Rubinstein model withN+1 time instants t = 0, 1, . . . , N . The price S0t of the risk-free asset evolvesas S0t = 0(1 + r)t, t = 0, 1, . . . , N . The return of the risky asset, defined as

    Rt :=St St1St1

    , t = 1, 2, . . . , N,

    is random and allowed to take only two values a and b, with 1 < a < r < b.

    The discounted asset price is given by St := St/(1 + r)t, t = 0, 1, . . . , N .

    a) Show that this model admits a unique risk-neutral measure P and ex-plicitly compute P(Rt = a) and P(Rt = b) for all t = 1, 2, . . . , N , witha = 2%, b = 7%, r = 5%.

    b) Does there exist arbitrage opportunities in this model? Explain why.c) Is this market model complete? Explain why.d) Consider a contingent claim with payoff

    C = (SN )2.

    Compute the discounted arbitrage price Vt, t = 0, 1, . . . , N , of a self-financing portfolio hedging the claim C, i.e. such that

    VN = C =(SN )2

    (1 + r)N .

    e) Compute the portfolio strategy(t)t=1,2,...,N =

    (0t ,

    1t

    )t=1,2,...,N

    associated to Vt, i.e. such that

    Vt = t Xt = 0tX0t + 1tX1t , t = 1, 2, . . . , N.

    f) Check that the above portfolio strategy is self-financing, i.e.

    t St = t+1 St, t = 1, 2, . . . , N 1. This is the payoff of a power call option with strike price K = 0.

    " 103

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    Exercise 3.12 We consider the discrete-time Cox-Ross-Rubinstein modelwith N + 1 time instants t = 0, 1, . . . , N .

    The price t of the risk-free asset evolves as t = 0(1 + r)t, t = 0, 1, . . . , N .The evolution of St1 to St is given by

    St =

    (1 + b)St1 if Rt = b,(1 + a)St1 if Rt = a,with 1 < a < r < b. The return of the risky asset is defined as

    Rt :=St St1St1

    , t = 1, 2, . . . , N.

    Let t, resp. t, denote the (possibly fractional) quantities of the risky, resp.risk-free, asset held over the time period [t 1, t] in the portfolio with value

    Vt = tSt + tt, t = 0, 1, . . . , N. (3.41)

    a) Show that

    Vt = (1 +Rt)tSt1 + (1 + r)tt1, t = 1, 2, . . . , N. (3.42)

    b) Show that under the probability P defined by

    P(Rt = a | Ft1) =b rb a

    , P(Rt = b | Ft1) =r ab a

    ,

    where Ft1 represents the information generated by {R1, R2, . . . , Rt1},we have

    IE[Rt | Ft1] = r.

    c) Under the self-financing condition

    Vt1 = tSt1 + tt1 t = 1, 2, . . . , N, (3.43)

    recover the martingale property

    Vt1 =1

    1 + r IE[Vt | Ft1],

    using the result of Question (a).d) Let a = 5%, b = 25% and r = 15%. Assume that the price Vt at time t of

    the portfolio is $3 if Rt = a and $8 if Rt = b, and compute the price Vt1of the portfolio at time t 1.

    104

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    Problem 3.13 We consider a ternary tree model with N + 1 time instantsk = 0, 1, . . . , N and d = 1 risky asset. The price S(0)k of the risk-free assetevolves as

    S(0)k = S

    (0)0 (1 + r)k, k = 0, 1, . . . , N,

    with r > 1. Let the return of the risky asset S(1) be defined as

    Rk :=S

    (1)k S

    (1)k1

    S(1)k1

    , k = 1, 2, . . . , N.

    In this ternary tree model, the return Rk is random and allowed to take onlythree values a, 0 and b at each time step, i.e.

    Rk {a, 0, b}, k = 1, 2, . . . , N,

    with 1 < a < 0 < b. That means, the evolution of S(1)k1 to S(1)k is random

    and given by

    S(1)k =

    (1 + b)S(1)k1 if Rk = b

    S(1)k1 if Rk = 0

    (1 + a)S(1)k1 if Rk = a

    = (1 +Rk)S(1)k1, k = 1, 2, . . . , N,

    and

    S(1)k = S

    (1)0

    ki=1

    (1 +Ri), k = 0, 1, . . . , N.

    The price process(S

    (1)k

    )k=0,1,...,N evolves on a ternary tree of the following

    form:

    S(1)0

    (1 + b)S(1)0

    (1 + a)S(1)0

    S(1)0

    The information Fk known to the market up to time k is given by the knowl-edge of S(1)1 , S

    (1)2 , . . . , S

    (1)k , i.e. we write

    " 105

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • N. Privault

    Fk = (S

    (1)1 , S

    (1)2 , . . . , S

    (1)k

    )= (R1, R2, . . . , Rk),

    k = 0, 1, . . . , N , where, as a convention, S(1)0 is a constant and F0 = {, }contains no information. In the sequel we will consider that (Rk)k=1,2,...,Nis a sequence of independent identically distributed random variables underany risk-neutral measure P, and we denote

    p := P(Rk = b) > 0,

    := P(Rk = 0) > 0,

    q := P(Rk = a) > 0, k = 1, 2, . . . , N.

    a) Determine all possible risk-neutral measures P equivalent to P in termsof the parameter (0, 1).

    b) Give a necessary and sufficient condition for absence of arbitrage in thisternary tree model.

    Hint: Use your intuition of the market to find what the condition shouldbe, and then prove that it is necessary and sufficient. Note that we havea < 0 and b > 0, and the condition should only depend on the modelparameters a, b and r.

    c) When the model parameters allow for arbitrage opportunities, explainhow you would exploit them if you joined the market with zero money toinvest.

    d) Is this ternary tree market model complete?e) In this question we assume that the conditional variance

    Var[S

    (1)k+1 S

    (1)k

    S(1)k

    Fk]

    = 2 > 0

    of the asset return (S(1)k+1 S(1)k )/S

    (1)k given Fk is constant and equal to

    2, k = 0, 1, . . . , N 1. Show that this condition determines a uniquevalue of and a unique risk-neutral measure P to be written explicitly,under a certain condition on a, b, r and .

    f) In this question and in the following we impose the condition (1 + a)(1 +b) = 1, i.e. we let a := b/(b+ 1). What does this imply on this ternarytree model and on the risk-neutral measure P?

    g) We consider a vanilla financial claim with payoff C = h(SN ) and maturityN , priced as time k as

    f(k, S

    (1)k

    )= 1(1 + r)Nk IE

    [h(SN )

    Fk]= 1(1 + r)Nk IE

    [h(SN )

    S(1)k ],106

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    "

    http://www.ntu.edu.sg/home/nprivault/indext.html

  • Pricing and Hedging in Discrete Time

    k = 0, 1, . . . , N , under the risk-neutral measure P. Find a recurrenceequation between the functions f(k, ) and f(k + 1, ), k = 0, . . . , N 1.

    Hint: Use the tower property of conditional expectations.h) Assuming that C is the payoff of a European put option with strike K,

    give the expression of f(N, x).i) Modify the attached binomial Python code in order to make it deal with

    the trinomial model (attach a printout of your modified code).j) Taking S(1)0 = 1, r = 0.1, b = 1, (1 + a)(1 + b) = 1, compute the price at

    time k = 0 of the European put option with strike K = 1 and maturityN = 2 using the code of Question (i) with = 0.5.

    Download and install the Anaconda distribution from https://www.continuum.io/downloads or try it online at https://try.jupyter.org/.

    Download the corresponding that can be run here.

    " 107

    This version: May 26, 2018http://www.ntu.edu.sg/home/nprivault/indext.html

    https://try.jupyter.org/{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import networkx as nx \n", "import numpy as np\n", "import matplotlib \n", "import matplotlib.pyplot as plt \n", "\n", "N=2;S0=1\n", "\n", "r = 0.1;a=-0.5;b=1; # change \n", "\n", "# add definition of