Skip to content

Commit

Permalink
resolves #2
Browse files Browse the repository at this point in the history
  • Loading branch information
yveshauser committed Feb 26, 2024
1 parent 2fe6275 commit 7656cb3
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 16 deletions.
3 changes: 3 additions & 0 deletions lib/github.com/monoid-gmbh/kid-annexes/base.fut
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ let market_risk_measure (v:f64): i64 =
type moments = (f64,f64,f64,f64,f64,f64,f64)
type scenario = [4]f64

-- | Empty scenario array
let empty: scenario = [f64.nan,f64.nan,f64.nan,f64.nan]

-- | Log Returns (Annex II, 22a)
let returns [n] (v: [n]f64): [n-1]f64 =
map2 (/) (tail v) (init v) |> map f64.log
Expand Down
29 changes: 13 additions & 16 deletions lib/github.com/monoid-gmbh/kid-annexes/category3.fut
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ let var_equivalent_volatility (p: f64) (t: f64) =
(f64.sqrt(3.842-2*f64.log(p))-1.96)/(f64.sqrt t)

-- | Category 3 simulations for MRM (Annex II)
let category3 [n] [l] (g: rng) (t: i64) (p: [n][t]f64 -> f64) (v: [n][l]f64): (rng,f64,f64,i64,[]scenario) =
let category3 [n] [l] (g: rng) (t: i64) (p: [n][t]f64 -> f64) (v: [n][l]f64): (rng,f64,f64,i64,[3]scenario) =

-- Initial values
let s0: [n]f64 = transpose v |> head
Expand Down Expand Up @@ -104,18 +104,15 @@ let category3 [n] [l] (g: rng) (t: i64) (p: [n][t]f64 -> f64) (v: [n][l]f64): (r
, payoff path_scen |> traverse xs[3] |> percentile 90 ]
in (join_rng h1, scenarios_ihp)

in -- FIXME: introduction of size types broke intermediate holding periods
--
-- if (y > 1) then
-- if (y > 3) then
-- let g1 = split_rng 2 g0
-- let (g2, scenarios_ihps) = unzip
-- [ intermediate_holding_period g1[0] (f64.to_i64 days) -- 1 year
-- , intermediate_holding_period g1[1] (f64.ceil y/2 |> f64.to_i64) ] -- half rhp
-- in (join_rng g2,var,vev,mrm,[scenarios_rhp] ++ scenarios_ihps)

-- else let (g1, scenarios_ihps) = intermediate_holding_period g0 (f64.to_i64 days) -- 1 year
-- in (g1,var,vev,mrm,[scenarios_rhp] ++ [scenarios_ihps])

-- else
(g0,var,vev,mrm,[scenarios_rhp])
in if (y > 1) then
if (y > 3) then
let g1 = split_rng 2 g0
let (g2, scenarios_ihps) = unzip
[ intermediate_holding_period g1[0] (f64.to_i64 days) -- 1 year
, intermediate_holding_period g1[1] (f64.ceil y/2 |> f64.to_i64) ] -- half rhp
in (join_rng g2,var,vev,mrm,[scenarios_rhp] ++ scenarios_ihps :> [3]scenario)

else let (g1, scenarios_ihp) = intermediate_holding_period g0 (f64.to_i64 days) -- 1 year
in (g1,var,vev,mrm,[scenarios_rhp] ++ [scenarios_ihp] ++ [empty] :> [3]scenario)

else (g0,var,vev,mrm,[scenarios_rhp] ++ [empty] ++ [empty] :> [3]scenario)

0 comments on commit 7656cb3

Please sign in to comment.