First of all, please excuse the potential naivety of my questions. I am new to financial modeling, for sure. Nonetheless, I hope my questions are well structured enough to result in good answers.
I am tasked with calculating the real time theoretical price of various options on futures in the energy commodity market (Oil, Natural Gas, etc). A description of the types of options I need to price follows:
A. Brent Crude American-style Option Contract is based on the underlying Brent Crude Futures Contract (B) and if exercised will result in a corresponding futures position.
B. Crude European-style Cash Settled Options which is based on the underlying Bullet and Crude Average Price Options, which are based on the underlying Brent 1st Line Swap.
C. Options based on underlying spread commodities (like WTI vs. Brent Crude).
I have a variety of questions surround this.
Of the various subclasses of AnalyticOptionModel, I believe the BlackScholesMertonModel is the most widely used model. Will this model work for all of the cases above? The doc seems to suggest setting b=0 (cost of carry == 0), the model becomes a Black future option model, where I assume ‘future option’ corresponds to the type I need?
Some reading I’ve done indicates a different, more sophisticated option pricing model needs to be used when operating on spread commodities (WTI vs. Brent), or when operating on Average Price Options. Is this true, and if so, which OpenGamma model(s) should I use for these cases?
Will I gain any benefit (i.e. better accuracy) from using another subclass of AnalyticOptionModel, like Hull White, for example?
What are the performance differences between the European and American style calculations? Are the European calculations so much faster that it makes sense to always use a European calculation for performance, giving up some accuracy when pricing true American style options?
I have access to the real time underlying price (spot price) and time to expiration, but I’m not sure where/how to obtain or calculate the Interest Rate Curve and Volatility Surface that appear to be necessary for the calculation. Do I simply use a HistoricalVolatilityCalculator by passing in known historical data? If so, how far back do I need to go (30 days, 1 year, etc)? Or is there an open facility where I can download these values from the Internet on demand? The same question goes for the Interest Rate Curve. I’m not sure where to get that data; and is it safe to assume the Interest Rate curve affects the calculation only slightly, such that this value can be hard-coded once a quarter? Is this essentially the current risk free interest rate?
That’s about it. For now, at least. I’m sure I’ll have more questions as time goes on. Thank you in advance.