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:
方程式stomatrix
to convert a linear system of equations to a matrix.linsolve
to solve the system.Symbolic equivalents of standard MATLAB® functions, such as
diag
。
这个例子symbolically derives the risk-neutral probabilities and call price for a single-period, two-state scenario.
Define Parameters of the Portfolio
创建符号变量r
representing the risk-free rate over the period. Set the assumption thatr
是一个积极的价值。
symsrpositive
Define the parameters for the beginning of a single period,time = 0
。HereS0
is the stock price, andC0
是罢工的呼叫期权价格,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,SU
和SD
是u和d州的股价,以及CU
是州的电话的价值。请注意
。
symsSUSDCUpositive
The bond price attime = 0
is 1. Note that this example ignores friction costs.
Collect the prices attime = 0
into a column vector.
价格= [1 S0 C0]'
prices =
Collect the payoffs of the portfolio attime = 1
into thepayoff
matrix. The columns ofpayoff
correspond to payoffs for states D and U. The rows correspond to payoffs for bond, stock, and call. The payoff for the bond is1 + r
。由于未行使,状态D中的电话的回报为零(因为
)。
payoff = [(1 + r), (1 + r); SD, SU; 0, CU]
payoff =
CU
is worth苏- K
in state U. Substitute this value inpayoff
。
payoff = subs(payoff, CU, SU - K)
payoff =
Solve for Risk-Neutral Probabilities
Define the probabilities of reaching states U and D.
symspuPD真实的
Under no-arbitrage,eqns == 0
must always hold true with positivepu
和PD
。
eqns =payoff*[pD; pU] - prices
eqns =
Transform equations to use风险中立概率。
symsPDrnpurn真实的;eqns = subs(eqns,[pd; pu],[pdrn; purn]/(1 + r))
eqns =
The unknown variables arePDrn
,purn
, 和C0
。使用这些未知变量将线性系统转换为矩阵形式。
[A, b] = equationsToMatrix(eqns, [pDrn, pUrn, C0]')
A =
b =
Usinglinsolve
, find the solution for the risk-neutral probabilities and call price.
x = linsolve(a,b)
x =
Verify the Solution
Verify that under risk-neutral probabilities,x(1:2)
, the expected rate of return for the portfolio,E_return
equals 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 =
测试无容易违规行为
As an example of testing no-arbitrage violations, use the following values:r = 5%
,S0 = 100
, 和K = 100
。ForSU < 105
, the no-arbitrage condition is violated becausepdrn = xsol(1)
是负的(SU >= SD
)。此外,除了任何其他电话价格xSol(3)
, there is arbitrage.
XSOL =simplify(subs(x, [r,S0,K], [0.05,100,100]))
XSOL =
情节呼叫价格作为表面
Plot the call price,C0 = xSol(3)
, for50 <= SD <= 100
和105 <= 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'
Reference
Advanced Derivatives, Pricing and Risk Management: Theory, Tools and Programming Applications
由Albanese,C.,Campolieti,G。