#![warn(missing_docs)]
pub mod correlation;
pub mod credit;
pub mod market;
pub mod messages;
pub mod ring_messages;
pub mod stress;
pub mod types;
pub mod prelude {
pub use crate::correlation::*;
pub use crate::credit::*;
pub use crate::market::*;
pub use crate::messages::*;
pub use crate::ring_messages::*;
pub use crate::stress::*;
pub use crate::types::*;
}
pub use correlation::RealTimeCorrelation;
pub use credit::CreditRiskScoring;
pub use market::{MonteCarloVaR, PortfolioRiskAggregation};
pub use stress::StressTesting;
pub use types::{
CreditExposure, CreditFactors, CreditRiskResult, Portfolio, PortfolioRiskResult, RiskFactor,
RiskFactorType, Sensitivity, StressScenario, StressTestResult, VaRParams, VaRResult,
};
pub fn register_all(
registry: &rustkernel_core::registry::KernelRegistry,
) -> rustkernel_core::error::Result<()> {
tracing::info!("Registering risk analytics kernels");
registry.register_ring_metadata_from(credit::CreditRiskScoring::new)?;
registry.register_ring_metadata_from(market::MonteCarloVaR::new)?;
registry.register_ring_metadata_from(market::PortfolioRiskAggregation::new)?;
registry.register_ring_metadata_from(correlation::RealTimeCorrelation::new)?;
registry.register_batch_typed::<StressTesting, messages::StressTestingInput, messages::StressTestingOutput>(stress::StressTesting::new)?;
tracing::info!("Registered 5 risk analytics kernels");
Ok(())
}
#[cfg(test)]
mod tests {
use super::*;
use rustkernel_core::registry::KernelRegistry;
#[test]
fn test_register_all() {
let registry = KernelRegistry::new();
register_all(®istry).expect("Failed to register risk kernels");
assert_eq!(registry.total_count(), 5);
}
}