Coverage for src/cvx/risk/factor/__init__.py: 100%
1 statements
« prev ^ index » next coverage.py v7.14.1, created at 2026-07-22 10:34 +0000
« prev ^ index » next coverage.py v7.14.1, created at 2026-07-22 10:34 +0000
1"""Factor risk models for portfolio optimization.
3This subpackage provides factor-based risk models for portfolio optimization.
4Factor models decompose portfolio risk into systematic (factor) risk and
5idiosyncratic (residual) risk.
7Example:
8 >>> import numpy as np
9 >>> from cvx.risk.factor import FactorModel
10 >>> # Create factor model with 5 assets and 2 factors
11 >>> model = FactorModel(assets=5, k=2)
12 >>> np.random.seed(42)
13 >>> model.update(
14 ... exposure=np.random.randn(2, 5),
15 ... cov=np.eye(2),
16 ... idiosyncratic_risk=np.abs(np.random.randn(5)),
17 ... lower_assets=np.zeros(5),
18 ... upper_assets=np.ones(5),
19 ... lower_factors=-np.ones(2),
20 ... upper_factors=np.ones(2)
21 ... )
22 >>> w = np.array([0.2, 0.2, 0.2, 0.2, 0.2])
23 >>> risk = model.estimate(w)
24 >>> isinstance(risk, float)
25 True
27"""
29# Copyright (c) 2025 Jebel Quant Research
30#
31# Licensed under the MIT License. See the LICENSE file in the project root
32# for the full license text.
33from .factor import FactorModel as FactorModel