1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//! # rBergomi Calibration
//!
//! rBergomi dynamics under the risk-neutral measure:
//! $$
//! dS_t=rS_t\,dt+S_t\sqrt{V_t}\left(\rho\,dW_t+\sqrt{1-\rho^2}\,dW_t^\perp\right),
//! $$
//! $$
//! V_t=\xi_0(t)\exp\left(\eta I_t-\frac{\eta^2}{2}t^{2H}\right),\quad
//! I_t=\sqrt{2H}\int_0^t (t-s)^{H-\frac12}\,dW_s.
//! $$
//!
//! Calibration objective (distribution matching):
//! $$
//! L(\theta)=\frac1M\sum_{j=1}^M W_1\left(S_{T_j}(\theta),S_{T_j}^{\mathrm{MKT}}\right).
//! $$
//!
//! Empirical Wasserstein-1 in 1D:
//! $$
//! W_1\approx\frac1m\sum_{i=1}^m\left|X_{(i)}-Y_{(i)}\right|.
//! $$
//!
//! Source:
//! - Rough Bergomi model: https://arxiv.org/abs/1609.02108
//! - Wasserstein calibration and mSOE-style simulation formulas.
pub const H_MIN: f64 = 1e-3;
pub const H_MAX: f64 = 0.499;
pub const RHO_BOUND: f64 = 0.999;
pub const ETA_MIN: f64 = 1e-8;
pub const XI0_MIN: f64 = 1e-8;
pub use RBergomiCalibrator;
pub use bid_ask_tolerance;
pub use empirical_wasserstein_1;
pub use RBergomiCalibrationConfig;
pub use RBergomiCalibrationHistory;
pub use RBergomiMarketSlice;
pub use RBergomiParams;
pub use RBergomiXi0;
pub use RBergomiCalibrationResult;
pub use simulate_rbergomi_terminal_samples;