FinancialMonteCarlo.AmericanOptionType

Struct for Standard American Option

	amOption=AmericanOption(T::num1,K::num2,isCall::Bool=true) where {num1 <: Number,num2 <: Number}

Where:

	T	    = Time to maturity of the Option.
	K	    = Strike Price of the Option.
	isCall  = true for CALL, false for PUT.
FinancialMonteCarlo.AsianFixedStrikeOptionType

Struct for Asian Fixed Strike Option

	asOption=AsianFixedStrikeOption(T::num1,K::num2,isCall::Bool=true) where {num1 <: Number,num2 <: Number}

Where:

	T	    = Time to maturity of the Option.
	K	    = Strike Price of the Option.
	isCall  = true for CALL, false for PUT.
FinancialMonteCarlo.AsianFloatingStrikeOptionType

Struct for Asian Floating Strike Option

	asOption=AsianFloatingStrikeOption(T::num1,isCall::Bool=true) where {num1 <: Number}

Where:

	T	    = Time to maturity of the Option.
	isCall  = true for CALL, false for PUT.
FinancialMonteCarlo.BarrierOptionDownInType

Struct for Barrier Down and In Option

	barOption=BarrierOptionDownIn(T::num1,K::num2,barrier::num3,isCall::Bool=true) where {num1 <: Number,num2 <: Number,num3 <: Number}

Where:

	T	    = Time to maturity of the Option.
	K	    = Strike Price of the Option.
	barrier	= Down Barrier of the Option.
	isCall  = true for CALL, false for PUT.
FinancialMonteCarlo.BarrierOptionDownOutType

Struct for Barrier Down and Out Option

	barOption=BarrierOptionDownOut(T::num1,K::num2,barrier::num3,isCall::Bool=true) where {num1 <: Number,num2 <: Number,num3 <: Number}

Where:

	T	    = Time to maturity of the Option.
	K	    = Strike Price of the Option.
	barrier	= Down Barrier of the Option.
	isCall  = true for CALL, false for PUT.
FinancialMonteCarlo.BarrierOptionUpInType

Struct for Barrier Up and In Option

	barOption=BarrierOptionUpIn(T::num1,K::num2,barrier::num3,isCall::Bool=true) where {num1 <: Number,num2 <: Number,num3 <: Number}

Where:

	T	    = Time to maturity of the Option.
	K	    = Strike Price of the Option.
	barrier	= Up Barrier of the Option.
	isCall  = true for CALL, false for PUT.
FinancialMonteCarlo.BarrierOptionUpOutType

Struct for Barrier Up and Out Option

	barOption=BarrierOptionUpOut(T::num1,K::num2,barrier::num3,isCall::Bool=true) where {num1 <: Number,num2 <: Number,num3 <: Number}

Where:

	T	    = Time to maturity of the Option.
	K	    = Strike Price of the Option.
	barrier	= Up Barrier of the Option.
	isCall  = true for CALL, false for PUT.
FinancialMonteCarlo.BermudanOptionType

Struct for Standard Bermudan Option

	bmOption=BermudanOption(T::AbstractArray{num1},K::num2,isCall::Bool=true) where {num1 <: Number,num2 <: Number}

Where:

	T	    = Time to maturity of the Option.
	K	    = Strike Price of the Option.
	isCall  = true for CALL, false for PUT.
FinancialMonteCarlo.BinaryAmericanOptionType

Struct for Binary American Option

	binAmOption=BinaryAmericanOption(T::num1,K::num2,isCall::Bool=true) where {num1 <: Number,num2 <: Number}

Where:

	T	    = Time to maturity of the Option.
	K	    = Strike Price of the Option.
	isCall  = true for CALL, false for PUT.
FinancialMonteCarlo.BinaryEuropeanOptionType

Struct for Binary European Option

	binOption=BinaryEuropeanOption(T::num1,K::num2,isCall::Bool=true) where {num1 <: Number,num2 <: Number}

Where:

	T	    = Time to maturity of the Option.
	K	    = Strike Price of the Option.
	isCall  = true for CALL, false for PUT.
FinancialMonteCarlo.BrownianMotionType

Struct for Brownian Motion

	bmProcess=BrownianMotion(σ::num1,μ::num2) where {num1,num2 <: Number}

Where:

	σ	=	volatility of the process.
	μ	=	drift of the process.
FinancialMonteCarlo.BrownianMotionVecType

Struct for Brownian Motion

	bmProcess=BrownianMotionVec(σ::num1,μ::num2) where {num1,num2 <: Number}

Where:

	σ	=	volatility of the process.
	μ	=	drift of the process.
FinancialMonteCarlo.DoubleBarrierOptionType

Struct for Double Barrier Option

	dbOption=DoubleBarrierOption(T::num1,K::num2,D::num3,U::num4,isCall::Bool=true) where {num1 <: Number,num2 <: Number,num3 <: Number,num4 <: Number}

Where:

	T	    = Time to maturity of the Option.
	K	    = Strike Price of the Option.
	D	    = Low Barrier of the Option.
	U	    = Up Barrier of the Option.
	isCall  = true for CALL, false for PUT.
FinancialMonteCarlo.EuropeanOptionType

Struct for European Option

	euOption=EuropeanOption(T::num1,K::num2,isCall::Bool=true) where {num1 <: Number,num2 <: Number}

Where:

	T	    = Time to maturity of the Option.
	K	    = Strike Price of the Option.
	isCall  = true for CALL, false for PUT.
FinancialMonteCarlo.EuropeanOptionNDType

Struct for European Option

	euOption=EuropeanOptionND(T::num1,K::num2,isCall::Bool=true) where {num1 <: Number,num2 <: Number}

Where:

	T	    = Time to maturity of the Option.
	K	    = Strike Price of the Option.
	isCall  = true for CALL, false for PUT.
FinancialMonteCarlo.ForwardType

Class for Dispatching Forward Payoff

	forward=Forward(T::num) where {num <: Number}

Where:

	T	=	Time to maturity of the Forward.
FinancialMonteCarlo.GaussianCopulaNVariateLogProcessType

Struct for MultiVariate (log moneyness x-> S0*exp(x) ) Copula Process

	gaussianCopulaNVariateLogProcess=GaussianCopulaNVariateLogProcess(models::num1,λ::num2,p::num3,λ₊::num4,λ₋::num5) where {num1,num2,num3,num4,num5 <: Number}

Where:

	models  = the processes.
	rho     = correlation matrix.
FinancialMonteCarlo.GaussianCopulaNVariateProcessType

Struct for MultiVariate Copula Process

	gaussianCopulaNVariateProcess=GaussianCopulaNVariateProcess(models::num1,λ::num2,p::num3,λ₊::num4,λ₋::num5) where {num1,num2,num3,num4,num5 <: Number}

Where:

	models  = the processes.
	rho     = correlation matrix.
FinancialMonteCarlo.GeometricBrownianMotionType

Struct for Geometric Brownian Motion

	gbmProcess=GeometricBrownianMotion(σ::num1,μ::num2) where {num1,num2 <: Number}

Where:

	σ	=	volatility of the process.
	μ	=	drift of the process.
	x0	=	initial value.
FinancialMonteCarlo.GeometricBrownianMotionVecType

Struct for Geometric Brownian Motion

	gbmProcess=GeometricBrownianMotionVec(σ::num1,μ::num2) where {num1,num2 <: Number}

Where:

	σ	=	volatility of the process.
	μ	=	drift of the process.
FinancialMonteCarlo.HestonProcessType

Struct for Heston Process

	hstProcess=HestonProcess(σ::num1,σ₀::num2,λ::num3,κ::num4,ρ::num5,θ::num6) where {num1,num2,num3,num4,num5,num6 <: Number}

Where:

	σ	=	volatility of volatility of the process.
	σ₀	=   initial volatility of the process.
	λ	=	shift value of the process.
	κ	=	mean reversion of the process.
	ρ	=	correlation between brownian motions.
	θ	=	long value of square of volatility of the process.
FinancialMonteCarlo.KouProcessType

Struct for Kou Process

	kouProcess=KouProcess(σ::num1,λ::num2,p::num3,λ₊::num4,λ₋::num5) where {num1,num2,num3,num4,num5 <: Number}

Where:

	σ  =	volatility of the process.
	λ  = 	jumps intensity.
	p  =	prob. of having positive jump.
	λ₊ =	positive jump size.
	λ₋ =	negative jump size.
FinancialMonteCarlo.LogNormalMixtureType

Struct for LogNormalMixture

	lnmModel=LogNormalMixture(η::Array{num1},λ::Array{num2}) where {num1,num2<: Number}

Where:

	η  = Array of volatilities.
	λ  = Array of weights.
FinancialMonteCarlo.MertonProcessType

Struct for Merton Process

	mertonProcess=MertonProcess(σ::num1,λ::num2,μ_jump::num3,σ_jump::num4) where {num1,num2,num3,num4<: Number}

Where:

	σ  =	volatility of the process.
	λ  = 	jumps intensity.
	μ_jump =	jumps mean.
	σ_jump =	jumps variance.
FinancialMonteCarlo.NormalInverseGaussianProcessType

Struct for NIG Process

	nigProcess=NormalInverseGaussianProcess(σ::num1,θ::num2,κ::num3) where {num1,num2,num3<: Number}

Where:

	σ =	volatility of the process.
	θ = variance of volatility.
	κ =	skewness of volatility.
FinancialMonteCarlo.ShiftedLogNormalMixtureType

Struct for ShiftedLogNormalMixture

	lnmModel=ShiftedLogNormalMixture(η::Array{num1},λ::Array{num2},num3) where {num1,num2,num3<: Number}

Where:

	η  =	Array of volatilities.
	λ  = 	Array of weights.
	α  = 	shift.
FinancialMonteCarlo.SubordinatedBrownianMotionType

Struct for SubordinatedBrownianMotion

	subordinatedBrownianMotion=SubordinatedBrownianMotion(sigma::num,drift::num1,underlying::abstrUnderlying)

Where:

	sigma       =	Volatility.
	drift       = 	drift.
	underlying  = 	underlying.
FinancialMonteCarlo.VarianceGammaProcessType

Struct for VG Process

	vgProcess=VarianceGammaProcess(σ::num1,θ::num2,κ::num3) where {num1,num2,num3<: Number}

Where:

	σ =	volatility of the process.
	θ = variance of volatility.
	κ =	skewness of volatility.
FinancialMonteCarlo.confinterFunction

General Interface for Computation of confidence interval of price

	IC=confinter(mcProcess,rfCurve,mcConfig,abstractPayoff,alpha)

Where:

	mcProcess      = Process to be simulated.
	rfCurve        = Zero Rate Data.
	mcConfig       = Basic properties of MonteCarlo simulation
	abstractPayoff = Payoff(s) to be priced
	alpha          = confidence level [Optional, default to 99%]

	Price          = Price of the derivative
FinancialMonteCarlo.deltaFunction

General Interface for Delta

	Delta=delta(mcProcess,rfCurve,mcConfig,abstractPayoff,dS0)

Where:

	mcProcess      = Process to be simulated.
	rfCurve        = Zero Rate Data.
	mcConfig       = Basic properties of MonteCarlo simulation
	abstractPayoff = Payoff(s) to be priced
	dS0            = increment [optional, default to 1e-7]
	
	Delta          = Delta of the derivative
FinancialMonteCarlo.distributionMethod

General Interface for distribution

	S=distribution(mcProcess,rfCurve,mcConfig,payoff_)

Where:

	mcProcess = Process to be simulated.
	rfCurve   = Zero Rate Data.
	mcConfig  = Basic properties of MonteCarlo simulation
	T         = Time of simulation

	S         = distribution
FinancialMonteCarlo.payoffFunction

General Interface for Payoff computation from MonteCarlo paths

	Payoff=payoff(S,optionData,rfCurve,T1=optionData.T)

Where:

	S           = Paths of the Underlying.
	optionData  = Datas of the Option.
	rfCurve     = Datas of the Risk Free Curve.
	T1          =Final Time of Spot Simulation (default equals Time to Maturity of the option)[Optional, default to optionData.T]

	Payoff      = payoff of the Option.
FinancialMonteCarlo.pricerMethod

Low Level Interface for Pricing

	Price=pricer(mcProcess,rfCurve,mcConfig,abstractPayoff)

Where:

	mcProcess      = Process to be simulated.
	rfCurve        = Zero Rate Data.
	mcConfig       = Basic properties of MonteCarlo simulation
	abstractPayoff = Payoff(s) to be priced

	Price          = Price of the derivative
FinancialMonteCarlo.rhoFunction

General Interface for Rho computation

	Rho=rho(mcProcess,rfCurve,mcConfig,abstractPayoff,dr)

Where:

	mcProcess      = Process to be simulated.
	rfCurve        = Zero Rate Data.
	mcConfig       = Basic properties of MonteCarlo simulation
	abstractPayoff = Payoff(s) to be priced
	dr             = increment [optional, default to 1e-7]

	Rho            = Rho of the derivative
FinancialMonteCarlo.simulateMethod

General Interface for Stochastic Engine simulation

	S=simulate(mcProcess,mcBaseData,T)

Where:

	mcProcess  = Process to be simulated.
	mcBaseData = Basic properties of MonteCarlo simulation
	T          = Final time of the process

	S          = Matrix with path of underlying.
FinancialMonteCarlo.simulateMethod

General Interface for Stochastic Process simulation

	S=simulate(mcProcess,zeroCurve,mcBaseData,T)

Where:

	mcProcess   = Process to be simulated.
	zeroCurve   = Datas of the Zero Rate Curve.
	mcBaseData  = Basic properties of MonteCarlo simulation
	T           = Final time of the process

	S           = Matrix with path of underlying.
FinancialMonteCarlo.varianceMethod

General Interface for Computation of variance interval of price

	variance_=variance(mcProcess,rfCurve,mcConfig,abstractPayoff)

Where:

	mcProcess      = Process to be simulated.
	rfCurve        = Zero Rate Data.
	mcConfig       = Basic properties of MonteCarlo simulation
	abstractPayoff = Payoff(s) to be priced

	variance_      = variance of the payoff of the derivative