Hello! I am trying to theoretically price the VXX options by using a code snippet from the BlackScholes model. The snippet for a call option is seen below. But I wonder what I should put in as arguments here. I know what the Spot, Strike and also I think Expiry is as below? But does the VXX has an InterestRate, what is Income and Volatility. How should I do this correctly? I will have dates between year: 2009-2020 Spot: Current price like: 14.61 Strike: For example: 14 InterestRate: ??? Income:??? Expiry: Is this is years like a half year is: 0.5? Volatility: public double CallPrice(double Spot, double Strike, double InterestRate, double Income, double Expiry, double Volatility) { double a = Math.Log(Spot / Strike); double b_call = (InterestRate - Income + 0.5 * Math.Pow(Volatility, 2)) * Expiry; double b_put = (InterestRate - Income - 0.5 * Math.Pow(Volatility, 2)) * Expiry; double c = Volatility * Math.Sqrt(Expiry); double d1 = (a + b_call) / c; double d2 = (a + b_put) / c; callPrice = Spot * NormsDist(d1) - Strike * Math.Exp(-InterestRate * Expiry) * NormsDist(d2); return callPrice; }
I've never seen it done this way, but if I had to guess `income` is supposed to be a dividend and this is a dividend adjustment for the standard BSM. Interest rate is typically taken to be the risk free rate. In fact this formula looks kind of strange. I'd find a better more canonical one - perhaps from Hull or another textbook. Since this wasn't immediately obvious to you, you may want to dig into Hull to learn how options are priced before attempting to price it yourself.
VXX is an ETN, which underneath is a rebalancing futures index plus a cash deposit. In terms of interest rate, while the futures index is going to be purely excess return, the cash is going to accrue riskless interest minus the management fee. In real life, you probably want to also the borrow rebate in addition to the management fee. For BS model, that means that you are using treasury bill rate as your discounting/accrual rate and using management fee + the borrow rate as your "income".
Okay interesting. So I could use: Interest: "treasury bill rate" (I might wonder which one here. It should be annual interest?) Income: "management fee + the borrow rate" I am not sure I follow on what "management fee + the borrow rate" means exactly. Are there data charts where I can extract those from for any date?
You want to pick the interest rate that’s closest to the expiration of the option (ideally, you’d want to interpolate it exactly). The management fee is listed in the prospectus. These are the easy parts. Borrow rate is what the market makers get charged for borrowing the ETP to sell short. Sadly, getting the borrow rate is the tricky part. If you are trying to be really precise, the best bet is to back it out of the option chain for that expiration. Otherwise you can use the borrow rate from some service that would give you an average borrow rate.
VIX has mean reverting properties similar to interest rates. Your best bet is to use a binomial tree and modify it to include the stochastic properties of VIX.
All those variables don’t matter since you won’t be able to price actual options this way. The article where you copied the BS code from states that it only “makes it easy to see how our prices respond to changes in our variables”. This means that you can use any variables you like and observe how the prices change. The article suggests to use 2% as a sample interest rate and that’s what you can use as well. Interest rate is global, not specific to VXX. Use 0 as “income”. That article also points to Wikipedia article that explains that you can use: “the average future volatility of the underlying asset, though it can be found from the price of other options.” So you’d need to either calculate historical volatility that wont give you realistic price of an option, or find implied volatility from the price of other options. None of this will give you prices you can trade with, but it’s nice for learning how those options work and how prices may behave, as the article accompanying your code states. The actual option prices depend on implied volatility that you may want to Google.
guru That was an interesting read. Thank you! I tried to put in some values as a test in the function for the current VXX option Call with Expiry on February 28, 2020: Spotprice: 14.91 Strike: 14.50 Interest Rate: 2 Income: 0 Expiry: 8 / 365 (8 days to expiration) Volatility: 67.81 (Got some implied volatility from an online calculator. However, whatever I put here as a value does give the same callprice) double callprice = bs.CallPrice(14.91, 14.50, 2, 0, 0.0219178, 67.81); The callprice returns: 0.733 but when looking at yahoo finance exactly now at time of writing. The price is 0.82 which is some difference. I wonder if I am doing something wrong or if this is the difference to expect approx? Is there anything that could be done better or any other method?
Hmm, I’m getting the value you expected, $0.82, at https://www.optionseducation.org/toolsoptionquotes/optionscalculator The calc code you have may be wrong, not sure. You can probably find other BS calculation code online for some programming languages, but looks like you need it specifically for Excel?
Yes, you are right the link you had there gave 0.82 as you said. That was strange. Perheps the code I have is something wrong with and need to see if I can find anything better. It is a C# code so I use C# programming in Visual Studio. I found this project that actually gives a value just around: 0.82 in C# https://www.codeproject.com/Articles/13686/Option-Pricing-using-the-Binomial-Tree-Model-in-C Another thing I was thinking of which seems like a dilemma when calculating the option price, is to know the implied volatility. But to compute the implied volatility one needs to know the option price for that strike which is the whole question from the beginning? I wonder if there is any historical data chart for the VXX to extract that value. But the implied volatility seems to be different for different option prices as well?