Main Content

Explore Single-Period Asset Arbitrage

This example explores basic arbitrage concepts in a single-period, two-state asset portfolio. The portfolio consists of a bond, a long stock, and a long call option on the stock.

It uses these Symbolic Math Toolbox™ functions:

  • equationsToMatrixto convert a linear system of equations to a matrix.

  • linsolveto solve the system.

  • Symbolic equivalents of standard MATLAB® functions, such asdiag.

这个例子symbolically derives the risk-neutral probabilities and call price for a single-period, two-state scenario.

Define Parameters of the Portfolio

Create the symbolic variablerrepresenting the risk-free rate over the period. Set the assumption thatris a positive value.

symsrpositive

Define the parameters for the beginning of a single period,time = 0. HereS0is the stock price, andC0is the call option price with strike,K.

symsS0C0Kpositive

Now, define the parameters for the end of a period,time = 1. Label the two possible states at the end of the period as U (the stock price over this period goes up) and D (the stock price over this period goes down). Thus,SUandSDare the stock prices at states U and D, andCUis the value of the call at state U. Note that S D < = K < = S U .

symsSUSDCUpositive

The bond price attime = 0is 1. Note that this example ignores friction costs.

Collect the prices attime = 0into a column vector.

prices = [1 S0 C0]'
prices =

( 1 S 0 C 0 )

Collect the payoffs of the portfolio attime = 1into thepayoffmatrix. The columns ofpayoffcorrespond to payoffs for states D and U. The rows correspond to payoffs for bond, stock, and call. The payoff for the bond is1 + r. The payoff for the call in state D is zero since it is not exercised (because S D < = K ).

payoff = [(1 + r), (1 + r); SD, SU; 0, CU]
payoff =

( r + 1 r + 1 SD SU 0 CU )

CUis worth苏- Kin state U. Substitute this value inpayoff.

payoff = subs(payoff, CU, SU - K)
payoff =

( r + 1 r + 1 SD SU 0 SU - K )

Solve for Risk-Neutral Probabilities

Define the probabilities of reaching states U and D.

symspUpDreal

Under no-arbitrage,eqns == 0must always hold true with positivepUandpD.

eqns = payoff*[pD; pU] - prices
eqns =

( pD r + 1 + pU r + 1 - 1 SD pD - S 0 + SU pU - C 0 - pU K - SU )

Transform equations to userisk-neutralprobabilities.

symspDrnpUrnreal; eqns = subs(eqns, [pD; pU], [pDrn; pUrn]/(1 + r))
eqns =

( pDrn + pUrn - 1 SD pDrn r + 1 - S 0 + SU pUrn r + 1 - C 0 - pUrn K - SU r + 1 )

The unknown variables arepDrn,pUrn, andC0. Transform the linear system to a matrix form using these unknown variables.

[A, b] = equationsToMatrix(方程式,[pDrn pUrn, C0]”)
A =

( 1 1 0 SD r + 1 SU r + 1 0 0 - K - SU r + 1 - 1 )

b =

( 1 S 0 0 )

Usinglinsolve, find the solution for the risk-neutral probabilities and call price.

x = linsolve(A, b)
x =

( S 0 - SU + S 0 r SD - SU - S 0 - SD + S 0 r SD - SU K - SU S 0 - SD + S 0 r SD - SU r + 1 )

Verify the Solution

Verify that under risk-neutral probabilities,x(1:2), the expected rate of return for the portfolio,E_returnequals the risk-free rate,r.

E_return = diag(prices)\(payoff - [prices,prices])*x(1:2); E_return = simplify(subs(E_return, C0, x(3)))
E_return =

( r r r )

Test for No-Arbitrage Violations

As an example of testing no-arbitrage violations, use the following values:r = 5%,S0 = 100, andK = 100. ForSU < 105, the no-arbitrage condition is violated becausepDrn = xSol(1)is negative (SU >= SD). Further, for any call price other thanxSol(3), there is arbitrage.

xSol = simplify(subs(x, [r,S0,K], [0.05,100,100]))
xSol =

( - SU - 105 SD - SU SD - 105 SD - SU 20 SD - 105 SU - 100 21 SD - SU )

Plot Call Price as a Surface

Plot the call price,C0 = xSol(3), for50 <= SD <= 100and105 <= SU <= 150. Note that the call is worth more when the "variance" of the underlying stock price is higher for example,SD = 50, SU = 150.

fsurf(xSol(3), [50,100,105,150]) xlabelSDylabelSUtitle'Call Price'

Figure contains an axes object. The axes object with title Call Price contains an object of type functionsurface.

Reference

Advanced Derivatives, Pricing and Risk Management: Theory, Tools and Programming Applicationsby Albanese, C., Campolieti, G.