R/mod_eq_analytical.R

Defines functions GBS BS B76 BSM GK GBS_all BS_all B76_all BSM_all GK_all

GBS <- function(S, X, T, v, r, b,phi=1) {
    # phi=1 call, phi=-1 put
    # b=r BS, b=r-q Merton (cont div)
    # b=0 black76 formula
    # b=r-rf ccy Garman KohlHagen opt formula
    # b,r=0 asay 1982 margined futures option model
    # b=rf-q-corr(FX,s)*v*volFX   ,   FX=(nr dom x 1 foreign)
    d1<- (log(S/X)+(b+v^2/2)*T)/(v*sqrt(T))
    d2<- d1-v*sqrt(T)
    phi*S*exp((b-r)*T)*pnorm(phi*d1)-phi*X*exp(-r*T)*pnorm(phi*d2)
}

# TODO: FARE TEST
BS  <- function(S,X,T,v,rd,rf=0,qcor=0,fxvol=0, phi=1) {GBS(S,X,T,v,rd,rd-qcor*v*fxvol,phi)}
B76 <- function(S,X,T,v,rd,rf=0,qcor=0,fxvol=0, phi=1) {GBS(S,X,T,v,rd,-qcor*v*fxvol,phi)}
BSM <- function(S,X,T,v,rd,rf=0,d,qcor=0,fxvol=0, phi=1) {GBS(S,X,T,v,rd,rf-d-qcor*v*fxvol,phi)}
GK  <- function(S,X,T,v,rd,rf=0,qcor=0,fxvol=0, phi=1) {GBS(S,X,T,v,rd,r-rf-qcor*v*fxvol,phi)}


# ESEMPI
# BSM(S=60,X=65,T=3/12,v=0.3,r=0.08,d=.01,phi=-1)
# BSM(S=60,X=65,T=3/12,v=0.3,r=0.08,d=.01,phi=1)
# BSM(S=100,X=95,T=0.5,v=0.2,r=0.1,d=0.05,phi=-1)
# TROVARE METODO ELEGANTE PER PASSARLE AI VARI SOTTOMODELLI BS76 ETC
# GBS_all(S=60,X=65,T=3/12,v=0.3,r=0.08,d=.01,phi=1)

GBS_all<-function(S, X, T, v, r, b,phi=1){
    d1<- (log(S/X)+(b+v^2/2)*T)/(v*sqrt(T))
    d2<- d1-v*sqrt(T)
    value<-phi*S*exp((b-r)*T)*pnorm(phi*d1)-phi*X*exp(-r*T)*pnorm(phi*d2)
    delta<-phi*exp((b-r)*T)*pnorm(phi*d1)
    elast<-delta*S/value
    gamma<-pnorm(d1)*exp((b-r)*T) / (S*v*sqrt(T))
    vega<-S*exp((b-r)*T)*pnorm(d1)*sqrt(T)
    #theta<-
    #rho<-
    list(v=value,d=delta,g=gamma,e=elast)
}


# TODO: FARE TEST
BS_all  <- function(S,X,T,v,rd,rf=0,qcor=0,fxvol=0, phi=1) {GBS_all(S,X,T,v,rd,rd-qcor*v*fxvol,phi)}
B76_all <- function(S,X,T,v,rd,rf=0,qcor=0,fxvol=0, phi=1) {GBS_all(S,X,T,v,rd,-qcor*v*fxvol,phi)}
BSM_all <- function(S,X,T,v,rd,rf=0,d,qcor=0,fxvol=0, phi=1) {GBS_all(S,X,T,v,rd,rf-d-qcor*v*fxvol,phi)}
GK_all  <- function(S,X,T,v,rd,rf=0,qcor=0,fxvol=0, phi=1) {GBS_all(S,X,T,v,rd,r-rf-qcor*v*fxvol,phi)}
lampoverde/Der documentation built on May 23, 2019, 7:33 a.m.