rustkernel_clearing/
lib.rs

1//! # RustKernel Clearing
2//!
3//! GPU-accelerated clearing and settlement kernels.
4//!
5//! ## Kernels
6//! - `ClearingValidation` - Trade validation for clearing eligibility
7//! - `DVPMatching` - Delivery vs payment matching
8//! - `NettingCalculation` - Multilateral netting calculation
9//! - `SettlementExecution` - Settlement instruction execution
10//! - `ZeroBalanceFrequency` - Settlement efficiency metrics
11//!
12//! ## Features
13//! - Trade validation with counterparty/security eligibility checks
14//! - DVP instruction matching with tolerance-based scoring
15//! - Multilateral netting to reduce gross obligations
16//! - Settlement execution with priority and partial settlement support
17//! - Zero balance frequency and efficiency metrics
18
19#![warn(missing_docs)]
20
21pub mod dvp;
22pub mod efficiency;
23pub mod netting;
24pub mod settlement;
25pub mod types;
26pub mod validation;
27
28/// Prelude for convenient imports.
29pub mod prelude {
30    pub use crate::dvp::*;
31    pub use crate::efficiency::*;
32    pub use crate::netting::*;
33    pub use crate::settlement::*;
34    pub use crate::types::*;
35    pub use crate::validation::*;
36}
37
38// Re-export main kernels
39pub use dvp::DVPMatching;
40pub use efficiency::ZeroBalanceFrequency;
41pub use netting::NettingCalculation;
42pub use settlement::SettlementExecution;
43pub use validation::ClearingValidation;
44
45// Re-export key types
46pub use types::{
47    DVPInstruction, DVPMatchResult, DVPStatus, ErrorSeverity, InstructionType, NetPosition,
48    NettingConfig, NettingResult, SettlementEfficiency, SettlementExecutionResult,
49    SettlementInstruction, SettlementStatus, Trade, TradeStatus, TradeType, ValidationConfig,
50    ValidationError, ValidationResult, ZeroBalanceMetrics,
51};
52
53/// Register all clearing kernels with a registry.
54pub fn register_all(
55    registry: &rustkernel_core::registry::KernelRegistry,
56) -> rustkernel_core::error::Result<()> {
57    use rustkernel_core::traits::GpuKernel;
58
59    tracing::info!("Registering clearing kernels");
60
61    // Validation kernel (1)
62    registry.register_metadata(validation::ClearingValidation::new().metadata().clone())?;
63
64    // DVP kernel (1)
65    registry.register_metadata(dvp::DVPMatching::new().metadata().clone())?;
66
67    // Netting kernel (1)
68    registry.register_metadata(netting::NettingCalculation::new().metadata().clone())?;
69
70    // Settlement kernel (1)
71    registry.register_metadata(settlement::SettlementExecution::new().metadata().clone())?;
72
73    // Efficiency kernel (1)
74    registry.register_metadata(efficiency::ZeroBalanceFrequency::new().metadata().clone())?;
75
76    tracing::info!("Registered 5 clearing kernels");
77    Ok(())
78}
79
80#[cfg(test)]
81mod tests {
82    use super::*;
83    use rustkernel_core::registry::KernelRegistry;
84
85    #[test]
86    fn test_register_all() {
87        let registry = KernelRegistry::new();
88        register_all(&registry).expect("Failed to register clearing kernels");
89        assert_eq!(registry.total_count(), 5);
90    }
91}