1#![warn(missing_docs)]
19
20pub mod correlation;
21pub mod credit;
22pub mod market;
23pub mod messages;
24pub mod ring_messages;
25pub mod stress;
26pub mod types;
27
28pub mod prelude {
30 pub use crate::correlation::*;
31 pub use crate::credit::*;
32 pub use crate::market::*;
33 pub use crate::messages::*;
34 pub use crate::ring_messages::*;
35 pub use crate::stress::*;
36 pub use crate::types::*;
37}
38
39pub use correlation::RealTimeCorrelation;
41pub use credit::CreditRiskScoring;
42pub use market::{MonteCarloVaR, PortfolioRiskAggregation};
43pub use stress::StressTesting;
44
45pub use types::{
47 CreditExposure, CreditFactors, CreditRiskResult, Portfolio, PortfolioRiskResult, RiskFactor,
48 RiskFactorType, Sensitivity, StressScenario, StressTestResult, VaRParams, VaRResult,
49};
50
51pub fn register_all(
53 registry: &rustkernel_core::registry::KernelRegistry,
54) -> rustkernel_core::error::Result<()> {
55 use rustkernel_core::traits::GpuKernel;
56
57 tracing::info!("Registering risk analytics kernels");
58
59 registry.register_metadata(credit::CreditRiskScoring::new().metadata().clone())?;
61
62 registry.register_metadata(market::MonteCarloVaR::new().metadata().clone())?;
64 registry.register_metadata(market::PortfolioRiskAggregation::new().metadata().clone())?;
65 registry.register_metadata(correlation::RealTimeCorrelation::new().metadata().clone())?;
66
67 registry.register_metadata(stress::StressTesting::new().metadata().clone())?;
69
70 tracing::info!("Registered 5 risk analytics kernels");
71 Ok(())
72}
73
74#[cfg(test)]
75mod tests {
76 use super::*;
77 use rustkernel_core::registry::KernelRegistry;
78
79 #[test]
80 fn test_register_all() {
81 let registry = KernelRegistry::new();
82 register_all(®istry).expect("Failed to register risk kernels");
83 assert_eq!(registry.total_count(), 5);
84 }
85}