Coverage for cvx/risk/model.py: 100%

14 statements  

« prev     ^ index     » next       coverage.py v7.6.8, created at 2025-01-09 10:59 +0000

1# Copyright 2023 Stanford University Convex Optimization Group 

2# 

3# Licensed under the Apache License, Version 2.0 (the "License"); 

4# you may not use this file except in compliance with the License. 

5# You may obtain a copy of the License at 

6# 

7# http://www.apache.org/licenses/LICENSE-2.0 

8# 

9# Unless required by applicable law or agreed to in writing, software 

10# distributed under the License is distributed on an "AS IS" BASIS, 

11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

12# See the License for the specific language governing permissions and 

13# limitations under the License. 

14"""Abstract risk model""" 

15 

16from __future__ import annotations 

17 

18from abc import ABC, abstractmethod 

19from dataclasses import dataclass, field 

20 

21import cvxpy as cp 

22 

23 

24@dataclass 

25class Model(ABC): 

26 """Abstract risk model""" 

27 

28 parameter: dict[str, cp.Parameter] = field(default_factory=dict) 

29 """parameter for the riskmodel""" 

30 

31 @abstractmethod 

32 def estimate(self, weights, **kwargs): 

33 """ 

34 Estimate the variance given the portfolio weights 

35 """ 

36 

37 @abstractmethod 

38 def update(self, **kwargs): 

39 """ 

40 Update the data in the risk model 

41 """ 

42 

43 @abstractmethod 

44 def constraints(self, weights, **kwargs): 

45 """ 

46 Return the constraints for the risk model 

47 """