double EuropeanOptionBlack76::getVegaNumeric(double absoluteChangeVolatility) { double sd = standardDeviation; double sqrtdt = sqrt(yearsToExpiry); double originalVol = standardDeviation / sqrtdt; double dSD = (originalVol + absoluteChangeVolatility) * sqrtdt; setStandardDeviation(dSD); double price1 = getPremium(); setStandardDeviation(sd); double price = getPremium(); return price1 - price; }
NormalDistribution::NormalDistribution(double mean, double standardDeviation) : UncertaintyDescription(boost::shared_ptr<detail::UncertaintyDescription_Impl>( new detail::UncertaintyDescription_Impl(NormalDistribution::type()))) { setMean(mean); setStandardDeviation(standardDeviation); }
void Gaussian::configure(const std::string& parameters) { if (parameters.empty()) return; std::vector<std::string> values = Op::split(parameters, " "); std::size_t required = 2; if (values.size() < required) { std::ostringstream ex; ex << "[configuration error] term <" << className() << ">" << " requires <" << required << "> parameters"; throw fl::Exception(ex.str(), FL_AT); } setMean(Op::toScalar(values.at(0))); setStandardDeviation(Op::toScalar(values.at(1))); if (values.size() > required) setHeight(Op::toScalar(values.at(required))); }
BlackScholesGreeks EuropeanOptionBlack76::getOptionPriceAndGreeksNumeric(double dF, double dV, double dY, double dR) { double F = forward; double sd = standardDeviation; double df = discountFactor; double yte = yearsToExpiry; double yts = yearsToSettlement; double X = strike; double sqrtdt = sqrt(yte); double price = getPremium(); // Delta setForward(F + dF); double deltaPremium = getPremium(); double delta = deltaPremium - price; // Gamma setForward(F - dF); double gammaPremium = getPremium(); double gamma = (deltaPremium - 2 * price + gammaPremium); setForward(F); // Vega double originalVol = sd / sqrtdt; double sd1 = (originalVol + dV) * sqrtdt; setStandardDeviation(sd1); double priceVega = getPremium(); double vega = priceVega - price; // setStandardDeviation(sd1); will do a setParamters in Theta // Theta sd1 = (sd / sqrt(yte)) * sqrt(yte - dY); double df1 = exp(log(df) / yts * (yts - dY)); setParameters(F, X, yte - dY, yts - dY, sd1, df1); double priceTheta = getPremium(); double theta = priceTheta - price; setParameters(F, X, yte, yts, sd, df); // Rho df1 = exp((log(df) / yts - dR) * yts); setDiscountFactor(df1); double priceRho = getPremium(); double rho = priceRho - price; setParameters(F, X, yte, yts, sd, df); return BlackScholesGreeks(price, delta, gamma, theta, vega, rho); }
RSSIProcessed::RSSIProcessed(AccessPoint accessPoint, int s, int d){ setAP(accessPoint); setAverageStrength(s); setStandardDeviation(d); }