2026-04-02 16:30:33 +02:00
|
|
|
|
/**
|
|
|
|
|
|
* @file BlackScholesProcess.cpp
|
|
|
|
|
|
* @brief Black–Scholes GBM drift, diffusion, and step.
|
|
|
|
|
|
*/
|
2026-03-08 10:15:23 +01:00
|
|
|
|
|
|
|
|
|
|
#include "BlackScholesProcess.hpp"
|
|
|
|
|
|
|
|
|
|
|
|
double BlackScholesProcess::drift(double t, double s) {
|
|
|
|
|
|
double r = this->data().yield_curve().zeroRate(t);
|
|
|
|
|
|
return r * s;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
double BlackScholesProcess::diffusion(double t, double s) {
|
|
|
|
|
|
double sigma = this->data().volatility_surface().sigma(s,t);
|
|
|
|
|
|
return sigma*s;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
double BlackScholesProcess::step(double t, double s, double dt, double dW) {
|
|
|
|
|
|
double r = this->data().yield_curve().zeroRate(t);
|
|
|
|
|
|
double sigma = this->data().volatility_surface().sigma(s,t);
|
|
|
|
|
|
return s*exp((r-0.5*sigma*sigma)*dt + sigma*sqrt(dt)*dW);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|