Skip to content

2-Factor Black Non-smiled Montecarlo #5

@katsuwaka

Description

@katsuwaka

Create montecarlo model with 2 x underlyings

Assumption

  • 2 x Black underlyings with continuous dividends (eg FX, index)
  • Volatility as function of time, no smie
  • Correlation between -1 and +1
  • Both underlying quoted on same currency unit

Input

  • Spot : S1, S2
  • Risk-free rate : rate(t)
  • Dividend yield: div1(t), div2(t)
  • Repo yield: repo1(t), repo2(t)
  • Volatility : vol1(t), vol2(t)
  • Correlation : rho or rho(t)
  • Cash flow: Map[t:Double, f:(Double, Double) => Double]

Required function

  • price(cashflow):Map[Double, Double]
    where result is mapping payment date => price

Example

val r = t => 0.01 + 0.002 * t
val rho = 0.75

val S1 = 100.0
val div1 = t => 0.03 + 0.003 * t
val repo1 = t => 0.0
val vol1 = t => 0.25 + 0.01 * t

val S2 = 150.0
val div2 = t => 0.05 + 0.003 * t
val repo2 = t => 0.0
val vol2 = t => 0.20 + 0.01 * t

val cashflow = Map[
0.5 -> (x:Double, y:Double) => math.max(0.0, math.min(x - 100.0, y - 150.0)),
1.0 -> (x:Double, y:Double) => math.max(0.0, math.min(x - 100.0, y - 150.0)),
1.5 -> (x:Double, y:Double) => math.max(0.0, math.min(x - 100.0, y - 150.0)),
2.0 -> (x:Double, y:Double) => math.max(0.0, math.min(x - 100.0, y - 150.0)),
]

price(cashflow) = Map[
0.5 -> 4.225, 
1.0 -> 4.10, 
1.5 -> 3.85, 
2.0 -> 3.555, 
] (or something like this, numbers are complete random)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions