Commit c9c2c89c authored by Dr.李's avatar Dr.李

added general build portfolio interface

parent 1d36527e
......@@ -9,11 +9,15 @@ import numpy as np
from typing import Optional
from typing import List
from alphamind.data.neutralize import neutralize
from alphamind.portfolio.longshortbulder import long_short_build
from alphamind.portfolio.rankbuilder import rank_build
from alphamind.portfolio.percentbuilder import percent_build
from alphamind.portfolio.linearbuilder import linear_build
def factor_processing(raw_factor: np.ndarray,
pre_process: Optional[List]=None,
risk_factors: Optional[np.ndarray]=None):
risk_factors: Optional[np.ndarray]=None) -> np.ndarray:
new_factor = raw_factor
......@@ -27,6 +31,26 @@ def factor_processing(raw_factor: np.ndarray,
return new_factor
def build_portfolio(er: np.ndarray,
builder: Optional[str]='long_short',
**kwargs) -> np.ndarray:
builder = builder.lower()
if builder == 'long_short':
return long_short_build(er, **kwargs)
elif builder == 'rank':
return rank_build(er, **kwargs)
elif builder == 'percent_build':
return percent_build(er, **kwargs)
elif builder == 'linear_prog':
status, _, weight = linear_build(er, **kwargs)
if status != 'optimal':
raise ValueError('linear programming optimizer in status: {0}'.format(status))
else:
return weight
if __name__ == '__main__':
from alphamind.data.standardize import standardize
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment