-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathderivatives.h
45 lines (40 loc) · 1.6 KB
/
derivatives.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "mathutils.hpp"
#ifndef DERIVATIVES
#define DERIVATIVES
class BlackScholes{
public:
BlackScholes(double rr, double ssigma, double TT, double EE, double DD=0.);
BlackScholes(double rr, double ssigma, double TT, double EE, std::string ppayofftype, double DD=0.);
BlackScholes(double rr, double ssigma, double TT, double EEhigh, double EElow, double DD=0.);
double Kernel(double S, double Sprime, double t);
double operator()(double S, double t);
double Calc(double S, double t, int flag=0);
double Value(double S, double t);
double Delta(double S, double t);
double Gamma(double S, double t);
double Theta(double S, double t);
double Speed(double S, double t);
double Vega(double S, double t);
double Rho(double S, double t);
double ImpliedVol(double V, double S, double t);
private:
bool expired;
int payoffid, kernelid;
double r; //risk-free rate of return
double sigma; //volatility
double T; //maturity-time
double D; //continuous dividend yield or foreign currency interest rate
double E; //strike price
double Ehigh, Elow; //boundaries for double barrier options
double d1,d2,tau; //helper values, combination of parameters
double alpha,beta; //parameters used if BS equation is substituted
std::string payofftype, kerneltype; //type of option
void set_payoffid();
void set_kernelid();
//routines for specific options:
double Eurocall(double S, int flag=0);
double Europut(double S, int flag=0);
double Bincall(double S, int flag=0);
double Binput(double S, int flag=0);
};
#endif