Skip to main content

ledge_core/
lib.rs

1//! Numerical kernel for Ledge.
2//!
3//! Ledge solves convex QPs whose Hessian is a factor covariance plus a
4//! diagonal. Its ADMM x-update uses the Sherman-Morrison-Woodbury identity, so
5//! it factors a system sized by factors plus explicit linear constraints
6//! rather than by the number of assets.
7
8#![forbid(unsafe_code)]
9
10mod batch;
11mod benchmark;
12mod certificate;
13mod generator;
14mod kkt;
15mod linalg;
16mod matrix;
17mod polish;
18mod portfolio;
19mod problem;
20mod scaling;
21mod sequence;
22#[cfg(feature = "serde")]
23mod serde_support;
24mod solver;
25mod workspace;
26
27pub use batch::{solve_batch, AccountResult, BatchAccount};
28pub use benchmark::{BenchmarkRecord, BenchmarkRunner, ComparisonSolver};
29pub use certificate::{
30    check_dual_certificate, check_primal_certificate, Certificate, DualCertificate,
31    DualCertificateResiduals, PrimalCertificate, PrimalCertificateResiduals,
32};
33pub use generator::{generate_synthetic, GeneratedInstance, GeneratorError, SyntheticConfig};
34pub use kkt::{check_kkt, DualVariables, KktError, KktResiduals};
35pub use matrix::{Matrix, MatrixError};
36pub use portfolio::{solve_mean_variance_factor, PortfolioError, PortfolioProblem};
37pub use problem::{
38    FactorCovariance, FactorQuad, L1Term, LinearConstraints, ProblemError, QpProblem,
39};
40pub use sequence::{solve_sequence, PortfolioSequence, RebalanceStep};
41#[cfg(feature = "bench-internals")]
42pub use solver::bench_internals;
43pub use solver::{
44    ConvergenceDiagnostics, Solution, SolveStatus, Solver, SolverError, SolverSettings, WarmStart,
45};
46pub use workspace::Workspace;