pub(super) const MATRIX: [[(i32, f64, f64, f64); 12]; 3] = [
[
(90, 35.0, 15.431040844905644, 0.0021830715301121018),
(90, 40.0, 10.554690304370828, 0.06456713479879284),
(90, 45.0, 5.962092917136372, 0.41070435136783345),
(90, 50.0, 2.328046464730164, 1.7153925027651127),
(90, 55.0, 0.5406824963524928, 4.86676313819094),
(90, 60.0, 0.08336414792584855, 9.34817939356779),
(180, 35.0, 15.895153938943379, 0.04269322047186108),
(180, 40.0, 11.215495881576947, 0.24125506046664213),
(180, 45.0, 6.909990281867267, 0.8139693581181717),
(180, 50.0, 3.478349778932519, 2.2605487525446364),
(180, 55.0, 1.37657748901291, 5.03699635998624),
(180, 60.0, 0.4352148752178468, 8.973853643552388),
],
[
(90, 35.0, 15.453986174617617, 0.025128401242085374),
(90, 40.0, 10.691240023599372, 0.20111685402733315),
(90, 45.0, 6.2368261484066085, 0.6854375826380661),
(90, 50.0, 2.6825307437814323, 2.069876781816383),
(90, 55.0, 0.7818091894804816, 5.1078898313189285),
(90, 60.0, 0.17350679853829146, 9.438322044180232),
(180, 35.0, 16.04974686519113, 0.19728614671960543),
(180, 40.0, 11.525522080867944, 0.5512812597576371),
(180, 45.0, 7.3109760027180215, 1.2149550789689272),
(180, 50.0, 3.903707729898533, 2.6859067035106534),
(180, 55.0, 1.7255023012192303, 5.38592117219256),
(180, 60.0, 0.6547581498238052, 9.19339691815835),
],
[
(90, 35.0, 15.78358723238972, 0.3547294590141874),
(90, 40.0, 11.258534771284525, 0.7684116017124865),
(90, 45.0, 7.025860841126486, 1.4744722753579467),
(90, 50.0, 3.6684902181093433, 3.055836256144289),
(90, 55.0, 1.581593949644232, 5.9076745914826745),
(90, 60.0, 0.5895393798704623, 9.8543546255124),
(180, 35.0, 16.780904476053323, 0.9284437575818032),
(180, 40.0, 12.186917556218477, 1.2126767351081682),
(180, 45.0, 7.932706541478142, 1.8366856177290458),
(180, 50.0, 4.549127359763925, 3.3313263333760403),
(180, 55.0, 2.2757542076827963, 5.936173078656125),
(180, 60.0, 1.0059758850936353, 9.544614653428177),
],
];
pub(super) struct Case {
pub name: &'static str,
pub days: i32,
pub parameters: [f64; 7],
pub rates: [f64; 2],
pub call: f64,
pub put: f64,
}
pub(super) const CASES: [Case; 12] = [
Case {
name: "base",
days: 30,
parameters: [2e-06, 0.04, 0.88, 0.08, -0.4, 0.00015873015873015873, 252.0],
rates: [0.03, 0.01],
call: 1.9716700045188926,
put: 1.8074214786494167,
},
Case {
name: "ninety",
days: 90,
parameters: [2e-06, 0.04, 0.88, 0.08, -0.4, 0.00015873015873015873, 252.0],
rates: [0.03, 0.01],
call: 2.8789192933036944,
put: 2.386982599940012,
},
Case {
name: "one_eighty",
days: 180,
parameters: [2e-06, 0.04, 0.88, 0.08, -0.4, 0.00015873015873015873, 252.0],
rates: [0.03, 0.01],
call: 3.778638631218509,
put: 2.797185261593924,
},
Case {
name: "one_year",
days: 365,
parameters: [2e-06, 0.04, 0.88, 0.08, -0.4, 0.00015873015873015873, 252.0],
rates: [0.03, 0.01],
call: 5.316599738704635,
put: 3.336467069380163,
},
Case {
name: "positive_lambda",
days: 90,
parameters: [2e-06, 0.04, 0.88, 0.08, 0.3, 0.00015873015873015873, 252.0],
rates: [0.03, 0.01],
call: 3.2531807492449336,
put: 2.7612440558812494,
},
Case {
name: "zero_lambda",
days: 90,
parameters: [2e-06, 0.04, 0.88, 0.08, 0.0, 0.00015873015873015873, 252.0],
rates: [0.03, 0.01],
call: 3.0821210743197587,
put: 2.5901843809560745,
},
Case {
name: "negative_gamma",
days: 90,
parameters: [2e-06, 0.04, 0.88, -0.02, 0.3, 0.00015873015873015873, 252.0],
rates: [0.03, 0.01],
call: 2.362430076938076,
put: 1.8704933835743986,
},
Case {
name: "noninteger_days",
days: 91,
parameters: [2e-06, 0.04, 0.88, 0.08, -0.4, 0.00015873015873015873, 252.5],
rates: [0.03, 0.01],
call: 2.8948908321546556,
put: 2.3975017915521875,
},
Case {
name: "negative_rate",
days: 30,
parameters: [2e-06, 0.04, 0.88, 0.08, -0.4, 0.00015873015873015873, 252.0],
rates: [-0.01, 0.01],
call: 1.8076321583378827,
put: 1.9721509038215999,
},
Case {
name: "high_dividend",
days: 90,
parameters: [2e-06, 0.04, 0.88, 0.08, -0.4, 0.00015873015873015873, 252.0],
rates: [0.03, 0.08],
call: 2.0741656446504115,
put: 3.3146736109890327,
},
Case {
name: "nonstationary",
days: 30,
parameters: [2e-06, 0.04, 0.99, 0.08, -0.4, 0.00015873015873015873, 252.0],
rates: [0.03, 0.01],
call: 3.271736288583927,
put: 3.1074877627144417,
},
Case {
name: "one_day",
days: 1,
parameters: [2e-06, 0.04, 0.88, 0.08, -0.4, 0.00015873015873015873, 252.0],
rates: [0.03, 0.01],
call: 0.5065798144041416,
put: 0.5011005124685681,
},
];