Financial Modeling Final Project: Options
Total Page:16
File Type:pdf, Size:1020Kb
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₁)-XN(d₂)
where,
d₁ =
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 Portfolio
expiration expiration price Stock Bond value -
12 0.230769 50 12.78425 11.9146 0.87 46.2 -
11 0.211538 0 3.835931 3.68705 0.15 48.2 -
10 0.192308 6 6.893263 6.57638 0.32 46.6 -
9 0.173077 8 3.380454 3.29391 0.09 45.4 -
8 0.153846 6 1.524301 1.52887 0.00 46.2
7 0.134615 1 1.683267 -1.6638 0.02 46.5 -
6 0.115385 6 1.449157 1.41818 0.03 46.5 -
5 0.096154 7 0.925242 0.89495 0.03 45.3 -
4 0.076923 9 0.162041 0.15595 0.01 49.0 -
3 0.057692 0 1.553781 1.53494 0.02 50.3 -
2 0.038462 9 2.101847 2.04013 0.06 48.9 -
1 0.019231 3 0.020751 0.02156 0.00 50.8
0 0 7 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
-rT –Xe N(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 100 X(exercise price) 125 90.47 T(time to
expiration) 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 Press, 2008.
Print. http://www.optionseducation.org/strategies_advanced_concepts/strategies/collar.html http://www.optiontradingpedia.com/gamma_neutral_hedging.htm
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