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

fixed tests

parent 1112f970
...@@ -67,7 +67,7 @@ class FDataPack(object): ...@@ -67,7 +67,7 @@ class FDataPack(object):
risk_exp: Optional[np.ndarray]=None, risk_exp: Optional[np.ndarray]=None,
risk_names: List[str]=None): risk_names: List[str]=None):
self.raw_factor = raw_factor self.raw_factor = raw_factor.reshape((-1, 1))
self.d1returns = d1returns.flatten() self.d1returns = d1returns.flatten()
if factor_name: if factor_name:
self.factor_name = factor_name self.factor_name = factor_name
...@@ -145,14 +145,14 @@ class FDataPack(object): ...@@ -145,14 +145,14 @@ class FDataPack(object):
index=self.codes) index=self.codes)
def factor_analysis(factor_values, def factor_analysis(factors: pd.Series,
industry, industry: np.ndarray,
d1returns, d1returns: np.ndarray,
detail_analysis=True, detail_analysis=True,
benchmark: Optional[np.ndarray]=None, benchmark: Optional[np.ndarray]=None,
risk_exp: Optional[np.ndarray]=None) -> Tuple[np.ndarray, Optional[pd.DataFrame]]: risk_exp: Optional[np.ndarray]=None) -> Tuple[pd.Series, Optional[pd.DataFrame]]:
data_pack = FDataPack(raw_factor=factor_values, data_pack = FDataPack(raw_factor=factors.values,
d1returns=d1returns, d1returns=d1returns,
groups=industry, groups=industry,
benchmark=benchmark, benchmark=benchmark,
...@@ -187,28 +187,7 @@ def factor_analysis(factor_values, ...@@ -187,28 +187,7 @@ def factor_analysis(factor_values,
analysis = data_pack.settle(weights) analysis = data_pack.settle(weights)
else: else:
analysis = None analysis = None
return weights, analysis return pd.Series(weights, index=factors.index), analysis
if __name__ == '__main__':
raw_factor = np.random.randn(1000, 1)
d1returns = np.random.randn(1000, 1)
groups = np.random.randint(30, size=1000)
benchmark = np.random.randn(1000, 1)
risk_exp = np.random.randn(1000, 3)
codes = list(range(1, 1001))
data_pack = FDataPack(raw_factor,
d1returns,
'cfinc1',
codes=codes,
groups=groups,
benchmark=benchmark,
risk_exp=risk_exp,
risk_names=['market', 'size', 'growth'])
weights = np.random.randn(1000)
print(data_pack.settle(weights))
...@@ -8,6 +8,7 @@ Created on 2017-5-25 ...@@ -8,6 +8,7 @@ Created on 2017-5-25
import unittest import unittest
import numpy as np import numpy as np
import pandas as pd
from alphamind.data.winsorize import winsorize_normal from alphamind.data.winsorize import winsorize_normal
from alphamind.data.standardize import standardize from alphamind.data.standardize import standardize
from alphamind.data.neutralize import neutralize from alphamind.data.neutralize import neutralize
...@@ -42,7 +43,10 @@ class TestFactorAnalysis(unittest.TestCase): ...@@ -42,7 +43,10 @@ class TestFactorAnalysis(unittest.TestCase):
benchmark = np.random.randint(50, size=1000) benchmark = np.random.randint(50, size=1000)
benchmark = benchmark / benchmark.sum() benchmark = benchmark / benchmark.sum()
industry = np.random.randint(30, size=1000) industry = np.random.randint(30, size=1000)
weight, analysis_table = factor_analysis(self.raw_factor,
factor_series = pd.Series(self.raw_factor.flatten(), index=range(len(self.raw_factor)))
weight, analysis_table = factor_analysis(factor_series,
d1returns=self.d1returns, d1returns=self.d1returns,
industry=industry, industry=industry,
benchmark=benchmark, benchmark=benchmark,
......
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