Final Project- Options Report Matt & Shweta

advertisement
Matthew Kruszewski
Shweta Jayaram
FIN 5190
12/7/12
Financial Modeling Final Project: Options
Overview of Project and Modeling Objectives
This project was designed and developed to provide a platform for users to evaluate a variety of
options by initially pricing the options via the Black-Scholes method and then building upon this to
model various options strategies. The primary goal was to create simple models for beginning traders to
use to value options and as the methods behind those pricing models became more familiar then the
user would be able to use the strategy models, as well as strategy models using VBA, to evaluate more
progressive ideas and strategies.
This project is comprised of nine separate Excel spreadsheets consisting of pricing models and
hedging strategies. Again, the premise behind this is to have a centralized and easy to use platform for
users to evaluate and view the corresponding models associated with the option that they choose to
evaluate. We believe that we have achieved this goal in this project by keeping the end user in mind.
Explanation of Financial Modeling Techniques Applied
The project and subsequent evaluations are derived and built upon the Black-Scholes method
for option pricing. Our first spreadsheet simply calculates the Black-Sholes European option price for a
non-dividend paying stock. The price of the call option is calculated directly and the price of the put
option is then calculated by way of the put-call parity. The Black-Scholes model is a great foundational
model for option pricing, hence its popularity, and can be easily applied to other forms of option
valuation. The corresponding spreadsheet to our initial Black-Scholes model was used to show bond
option valuation and are essentially one in the same in that the stock model is non-dividend paying and
the bond model is for a zero coupon bond.
The Black Scholes Model
C = SN(dā‚)-Xš‘’ −š‘Ÿš‘‡ N(dā‚‚)
where,
dā‚ =
š‘†
š‘‹
ln( )+(š‘Ÿ+
šœŽ2
)š‘‡
2
šœŽ√š‘‡
dā‚‚= dā‚-š›”√T
The next model constructed built upon the Black-Scholes model to valuate the option prices of a
dividend paying stock. This model is known as Merton’s Dividend-Adjusted Option-Pricing Model. The
Merton model takes into account dividend yield when calculating the option prices for those dividend
paying stocks. Our last basic valuation model derived from the Black-Scholes model was developed for
currency options. Currency options are evaluated similarly to stock options with the exception that both
home and foreign interest rates are required to calculate the option prices.
Next, we constructed a model to calculate the Black-Scholes Greeks which are a variety of
measures that show the sensitivity of an option’s price based upon the movement of specific variables.
Delta (Δ) measures the change in option price with respect to change in the price of the underlying
asset. Gamma (Γ) measures the convexity of the option’s price based upon the change price of the
underlying asset. Vega (κ) measures the sensitivity of an option’s priced based on the volatility of the
underlying asset. Theta (θ) measures the change in the option’s price relative to the change in maturity
of the option. Finally, Rho (ρ) measures the sensitivity of an option with respect to interest rates. These
options are the basis for a wide variety of hedging and trading strategies.
Black-Scholes Greeks Model
The next model that was developed was used to simulate a delta hedge. Delta hedging involves
replicating an option by a portfolio of stocks and bonds with the portfolio proportions determined by
the Black-Scholes model. Delta hedging not only to protects the position from small price changes in the
underlying stock but also helps the investor to continue to profit from the point the stock rises or falls
sharply.
The model shown in the Excel sheet replicates an at-the model European call option that has 12 weeks
to run until expiration.
At initial date, Stock price =50
Also,
Exercise Price = 55
Interest rate = 4%
Volatility = 25%
Time
Weeks until
unitil
Stock
expiration
expiration price
Portfolio
Stock
Bond
value
-
12
0.230769
50 12.78425 11.9146
0.87
11
0.211538 46.20 3.835931 3.68705
0.15
10
0.192308 48.26 6.893263 6.57638
0.32
9
0.173077 46.68 3.380454 3.29391
0.09
8
0.153846 45.46 1.524301 1.52887
0.00
7
0.134615 46.21 1.683267
0.02
-1.6638
-
6
0.115385 46.56 1.449157 1.41818
0.03
5
0.096154 46.57 0.925242 0.89495
0.03
4
0.076923 45.39 0.162041 0.15595
0.01
3
0.057692 49.00 1.553781 1.53494
0.02
2
0.038462 50.39 2.101847 2.04013
0.06
1
0
0.019231 48.93 0.020751 0.02156
0 50.87
0.00
0.00
Hedged position
payoff
0.00
Actual call
payoff
0.00
At initial date, stock position was calculated using S0*deltaCall and bond position was calculated as
–Xe-rTN(d2). Portfolio value was Stock Position + Bond Position.
In each successive week, the stock position was set the same as initial week but the bond position was
set to make the net cash flow of the portfolio equal to zero to achieve delta hedging.
At the end of the 12 week period, the portfolio is liquidated.
This is run for multiple simulations and is seen to work. In order to simulate the stock prices a random
number generator is used to generate a set of 12 random numbers with a mean =0 and standard
deviation = 1 and stock prices are calculated using the formula:
š‘†š‘”š‘œš‘š‘˜ = š‘†š‘ƒš‘Ÿš‘’š‘£š‘–š‘œš‘¢š‘  ∗ š‘’ (šœ‡āˆ†š‘”+ ↑šœŽ√āˆ†š‘”š‘)
Where
SPrevious - Stock Price of previous time to maturity
µ - Stock’s mean return (assumed 20%)
Δt – Time difference
Σ – Volatility of the stock.
The next model simply calculates a collar option position which is writing a call and purchasing a
put so the net position is equal to 0. A collar is a combination of writing a call and purchasing a put with
the same expiration in order to hedge the long position in the stock. This combination is designed so
that the net cost of the position is 0. For example if an investor is long 1 million shares of Standard
Chartered Bank where each share is worth 100$ and if in future he is worried that the stock will decline
he would decide to purchase a collar.
This strategy is for buyers of a stock who are concerned about a correction and wish to hedge their long
position. The maximum loss is limited and so are the profits. Going long a put provides a good exit
strategy where by the investor can liquidate his position if the stock makes losses. The premium from
shorting a call helps you fund the put but at the same time it sets a limit to the profit potential.
Call
Put
S(stock price)
100
X(exercise price)
125 90.47
T(time to expiration)
100
1
1
R(interest rate)
4%
4%
K(dividend yield)
0%
0%
Sigma(volatility)
40%
40%
BS option value
9.16
9.16
Call - Put
0.00
Above are the calculations for a collar. The exercise prices have been set according to the Black Scholes
formula in such a way that the call and put are equal. The BS option value in the table is derived using
the VBA code BSMertonCall and BSMertonPut. Using solver we determine the exercise price of the put
by setting the value of Call-Put to zero.
It is seen that as the option gets closer to expiration, the hedge position becomes extremely sensitive to
small changes in the stock price leading to very large growth in the gamma of the collar. The issue in
case of delta neutral hedging is that even though it prevents the position from reacting to small changes
in the underlying stock, it is still remains prone to sudden large swings. Sometimes traders do not have
the time to continuously rebalance the delta hedge and can take them off guard at times. This is where
Gamma Neutral hedging could be used. The main goal here is to keep the delta value of a position
completely stagnant no matter how the underlying stock moves. Traders use this to try and reduce the
volatility of an options position by keeping the delta at low and stagnant levels and thereby not allowing
price changes to affect the underlying stock. Some traders also speculate using implied volatility (Vega)
and try to lock in any profits they can make from high volatility times.
One strategy to reduce high gammas is to add another asset to the hedge position to make the gamma
neutral. This can be done by adding an out-of-the-money put.
It is seen that for this extremely small time period (close to expiration), the gamma value of the call is
very high. This means that large price swings would impact the position.
To counter this, another out-of-the-money put is added for which the exercise price is chosen as 34. The
gamma for this put is a few orders of magnitude lower and an option price of 0. The option prices, delta
and gamma are calculated using the VBA codes.
Using this new put, a calculation is made to find out the number of options required to keep the gamma
of the entire position as neutral. This is done using goal seek where the position gamma is calculated for
1 call , 1 put (X=48) and p units of put (X=34). Then using goal seek value of gamma is set to zero by
changing put X = 34. So we now get short a call with X = 68 and go long one put with X = 48 and go long
79.247 puts with X = 34 to neutralize the gamma.
The Black-Scholes price will not change as the option price was zero. Hence, this strategy can be carried
out at very little cost.
The last model that was constructed was one which simulated a variety of omega hedge
positions based on the change of exercise price (initial stock price could also be changed). The omega
hedge essentially simulates a protective put with a replicating portfolio of stocks and bonds when there
may not be a market of puts in a particular range available. This is often referred to as “portfolio
insurance” as the strategy more or less guarantees that the dollar return will not be less than that of the
exercise price.
Results and Conclusion
All of the models produced in this project are based on the Black-Scholes pricing model which is
a theoretical pricing model. Subsequently all of the strategies shown here are also theoretical models.
Overall, we believe that this project achieved what was originally set to do, which is to provide a
platform for users to value a variety of options and then build upon those methods to construct
strategies that can be implemented in the trading world. The models that were developed can easily be
manipulated the initial inputs to produce various desired outputs and be used in comparison to real
time quotes and strategies.
What We Learned
Our work on this project expanded our knowledge and understanding of options and strategies
but also took our utilization of Excel to a new level. We learned not only about the various strategies
and pricing methods but also the mechanics and thought processes, which is the most important aspect.
This project utilized VBA development for certain formulas which was the first time that either of us
attempted to use this function. It was difficult at times, having virtually zero experience in VBA, but we
feel that it was successful and contributed highly to our models.
Overall, it was a great learning experience to take theoretical knowledge and translate and build
upon it in a realistic platform (Excel). This project was built with the intention of being used not only by
ourselves, but by others who are interested in option valuation and strategies. We believe that we were
able to achieve this goal and that others will use this model going forward.
Bibliography
Benninga, Simon. Financial Modeling. Third Edition. Cambridge, Massachusetts: The MIT
Print.
http://www.optionseducation.org/strategies_advanced_concepts/strategies/collar.html
http://www.optiontradingpedia.com/gamma_neutral_hedging.htm
Press, 2008.
Appendix
Appendix
VB- Codes for greeks:
Function dOne(stock, excercise, time, interest, divyield, sigma)
dOne = (Log(stock / excercise) + (interest - divyield) * time) / (sigma * Sqr(time)) + 0.5 * sigma *
Sqr(time)
End Function
Function dTwo(stock, excercise, time, interest, divyield, sigma)
dTwo = dOne(stock, excercise, time, interest, divyield, sigma) - sigma * time ^ (1 / 2)
End Function
'Standard normal probability density function N(x)
Function normaldf(x)
normaldf = Exp(-x ^ 2 / 2) / (Sqr(2 * Application.Pi()))
End Function
Function BSMertonCall(stock, excercise, time, interest, divyield, sigma)
BSMertonCall = stock * Exp(-divyield * time) * Application.NormSDist(dOne(stock, excercise, time,
interest, divyield, sigma)) - excercise * Exp(-time * interest) * Application.NormSDist(dTwo(stock,
excercise, time, interest, divyield, sigma))
End Function
Function BSMertonPut(stock, excercise, time, interest, divyield, sigma)
BSMertonPut = BSMertonCall(stock, excercise, time, interest, divyield, sigma) + excercise * Exp(-interest
* time) - stock * Exp(-divyield * time)
End Function
Function DeltaCall(stock, excercise, time, interest, divyield, sigma)
DeltaCall = Exp(-divyield * time) * Application.NormSDist(dOne(stock, excercise, time, interest, divyield,
sigma))
End Function
Function DeltaPut(stock, excercise, time, interest, divyield, sigma)
DeltaPut = -Exp(-divyield * time) * (Application.NormSDist(-dOne(stock, excercise, time, interest,
divyield, sigma)))
End Function
Function Gamma(stock, excercise, time, interest, divyield, sigma)
Gamma = (Exp(dOne(stock, excercise, time, interest, divyield, sigma) ^ 2 / 2 - divyield * time)) / (stock *
sigma * Sqr(2 * time * Application.Pi()))
End Function
Function Vega(stock, excercise, time, interest, divyield, sigma)
Vega = stock * Sqr(time) * normaldf(dOne(stock, excercise, time, interest, divyield, sigma)) * Exp(divyield * time)
End Function
Function ThetaCall(stock, excercise, time, interest, divyield, sigma)
ThetaCall = -stock * normaldf(dOne(stock, excercise, time, interest, divyield, sigma)) * sigma * Exp(divyield * time) / (2 * Sqr(time)) + divyield * stock * Application.NormSDist(dOne(stock, excercise, time,
interest, divyield, sigma)) * Exp(-divyield * time) - interest * excercise * Exp(-interest * time) *
Application.NormSDist(dTwo(stock, excercise, time, interest, divyield, sigma))
End Function
Function ThetaPut(stock, excercise, time, interest, divyield, sigma)
ThetaPut = -stock * normaldf(dOne(stock, excercise, time, interest, divyield, sigma)) * sigma * Exp(divyield * time) / (2 * Sqr(time)) - divyield * stock * Application.NormSDist(dOne(stock, excercise, time,
interest, divyield, sigma)) * Exp(-divyield * time) + interest * excercise * Exp(-interest * time) *
Application.NormSDist(dTwo(stock, excercise, time, interest, divyield, sigma))
End Function
Function RhoCall(stock, excercise, time, interest, divyield, sigma)
RhoCall = excercise * time * Exp(-interest * time) * Application.NormSDist(dTwo(stock, excercise, time,
interest, divyield, sigma))
End Function
Function RhoPut(stock, excercise, time, interest, divyield, sigma)
RhoPut = -excercise * time * Exp(-interest * time) * Application.NormSDist(-dTwo(stock, excercise, time,
interest, divyield, sigma))
End Function
Download