Module Algostream_domain_pairs.Pair
type pair_relationship = | Cointegrated of {half_life : Base.float;hedge_ratio : Base.float;adf_statistic : Base.float;p_value : Base.float;
}| Correlated of {correlation : Base.float;rolling_window : Base.int;significance_level : Base.float;
}
type pair_state = | Normal| Diverged of {z_score : Base.float;entry_time : Timestamp.t;
}| Converging of {z_score : Base.float;entry_time : Timestamp.t;
}| Position_open of {long_symbol : Base.string;short_symbol : Base.string;entry_spread : Base.float;entry_time : Timestamp.t;
}
type trading_pair = {symbol_a : Base.string;symbol_b : Base.string;relationship : pair_relationship;current_state : pair_state;spread_series : Base.float Base.list;z_score_series : Base.float Base.list;entry_threshold : Base.float;exit_threshold : Base.float;stop_loss_threshold : Base.float;lookback_window : Base.int;created_at : Timestamp.t;updated_at : Timestamp.t;
}val create_pair :
symbol_a:Base.string ->
symbol_b:Base.string ->
relationship:pair_relationship ->
entry_threshold:Base.float ->
exit_threshold:Base.float ->
stop_loss_threshold:Base.float ->
lookback_window:Base.int ->
trading_pairval calculate_spread :
trading_pair ->
price_a:Base__Float.t ->
price_b:Base__Float.t ->
Base__Float.tval calculate_z_score : Base__Float.t Base.List.t -> Base__Float.tval get_trade_signal :
trading_pair ->
([> `Long of Base.string | `Short of Base.string ]
* [> `Long of Base.string | `Short of Base.string ])
option