17 using MathNet.Numerics.Distributions;
41 : base(name, option, riskFreeRateModel, dividendYieldModel, mirrorOption, optionModel, ivModel)
56 : this($
"Theta({option},{mirrorOption},{optionModel})", option, riskFreeRateModel, dividendYieldModel, mirrorOption, optionModel, ivModel)
70 public Theta(
string name,
Symbol option, PyObject riskFreeRateModel, PyObject dividendYieldModel,
Symbol mirrorOption =
null,
72 : base(name, option, riskFreeRateModel, dividendYieldModel, mirrorOption, optionModel, ivModel)
85 public Theta(
Symbol option, PyObject riskFreeRateModel, PyObject dividendYieldModel,
Symbol mirrorOption =
null,
87 : this($
"Theta({option},{mirrorOption},{optionModel})", option, riskFreeRateModel, dividendYieldModel, mirrorOption, optionModel, ivModel)
103 : base(name, option, riskFreeRateModel, dividendYield, mirrorOption, optionModel, ivModel)
118 : this($
"Theta({option},{mirrorOption},{optionModel})", option, riskFreeRateModel, dividendYield, mirrorOption, optionModel, ivModel)
132 public Theta(
string name,
Symbol option, PyObject riskFreeRateModel, decimal dividendYield = 0.0m,
Symbol mirrorOption =
null,
134 : base(name, option, riskFreeRateModel, dividendYield, mirrorOption, optionModel, ivModel)
147 public Theta(
Symbol option, PyObject riskFreeRateModel, decimal dividendYield = 0.0m,
Symbol mirrorOption =
null,
149 : this($
"Theta({option},{mirrorOption},{optionModel})", option, riskFreeRateModel, dividendYield, mirrorOption, optionModel, ivModel)
163 public Theta(
string name,
Symbol option, decimal riskFreeRate = 0.05m, decimal dividendYield = 0.0m,
Symbol mirrorOption =
null,
165 : base(name, option, riskFreeRate, dividendYield, mirrorOption, optionModel, ivModel)
178 public Theta(
Symbol option, decimal riskFreeRate = 0.05m, decimal dividendYield = 0.0m,
Symbol mirrorOption =
null,
180 : this($
"Theta({option},{mirrorOption},{optionModel})", option, riskFreeRate, dividendYield, mirrorOption, optionModel, ivModel)
185 protected override decimal CalculateGreek(decimal timeTillExpiry)
195 var forwardPrice = 0m;
204 forwardPrice = OptionGreekIndicatorsHelper.ForwardTreeTheoreticalPrice(
ImpliedVolatility,
UnderlyingPrice,
Strike, timeTillExpiry - 2 * deltaTime,
RiskFreeRate,
DividendYield,
Right); price = OptionGreekIndicatorsHelper.ForwardTreeTheoreticalPrice(
ImpliedVolatility,
UnderlyingPrice,
Strike, timeTillExpiry,
RiskFreeRate,
DividendYield,
Right);
208 return (forwardPrice - price) * 0.5m / deltaTime / 365m;
212 var norm =
new Normal();
214 var d2 = OptionGreekIndicatorsHelper.CalculateD2(d1,
ImpliedVolatility, timeTillExpiry);
215 var discount = math(Math.Exp, -
RiskFreeRate * timeTillExpiry);
216 var adjustment = math(Math.Exp, -
DividendYield * timeTillExpiry);
223 d1 = math(norm.CumulativeDistribution, d1);
224 d2 = -math(norm.CumulativeDistribution, d2);
228 d1 = -math(norm.CumulativeDistribution, -d1);
229 d2 = math(norm.CumulativeDistribution, -d2);