Commit 2c46b551 authored by Dr.李's avatar Dr.李

update example

parent 741b2f62
...@@ -292,8 +292,9 @@ class Strategy(object): ...@@ -292,8 +292,9 @@ class Strategy(object):
if __name__ == '__main__': if __name__ == '__main__':
from matplotlib import pyplot as plt from matplotlib import pyplot as plt
from PyFin.api import *
from dask.distributed import Client from dask.distributed import Client
from PyFin.api import CSQuantiles
from PyFin.api import LAST
from alphamind.api import Universe from alphamind.api import Universe
from alphamind.api import ConstLinearModel from alphamind.api import ConstLinearModel
from alphamind.api import XGBTrainer from alphamind.api import XGBTrainer
...@@ -302,14 +303,20 @@ if __name__ == '__main__': ...@@ -302,14 +303,20 @@ if __name__ == '__main__':
from alphamind.api import winsorize_normal from alphamind.api import winsorize_normal
from alphamind.api import standardize from alphamind.api import standardize
start_date = '2018-01-01' from matplotlib import pyplot as plt
end_date = '2018-05-04' from matplotlib.pylab import mpl
freq = '20b' plt.style.use('seaborn-whitegrid')
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
start_date = '2010-01-01'
end_date = '2018-05-14'
freq = '10b'
neutralized_risk = None neutralized_risk = None
universe = Universe("custom", ['zz800']) universe = Universe("custom", ['zz800'])
dask_client = Client('10.63.6.176:8786') dask_client = Client('10.63.6.176:8786')
factor = CSQuantiles(LAST('ILLIQUIDITY') * LAST('NegMktValue'), factor = CSQuantiles(LAST('ILLIQUIDITY'),
groups='sw1_adj') groups='sw1_adj')
alpha_factors = { alpha_factors = {
str(factor): factor, str(factor): factor,
...@@ -327,25 +334,24 @@ if __name__ == '__main__': ...@@ -327,25 +334,24 @@ if __name__ == '__main__':
data_meta = DataMeta(freq=freq, data_meta = DataMeta(freq=freq,
universe=universe, universe=universe,
batch=32, batch=1,
neutralized_risk=None, # industry_styles, neutralized_risk=None, # industry_styles,
pre_process=None, # [winsorize_normal, standardize], pre_process=None, # [winsorize_normal, standardize],
post_process=None, post_process=None,
warm_start=12) # [standardize]) warm_start=1) # [standardize])
industries = industry_list('sw_adj', 1) industries = industry_list('sw_adj', 1)
total_risk_names = ['total'] total_risk_names = ['total'] + industries
b_type = [] b_type = []
l_val = [] l_val = []
u_val = [] u_val = []
for name in total_risk_names: for name in total_risk_names:
if name == 'total': b_type.append(BoundaryType.ABSOLUTE)
b_type.append(BoundaryType.ABSOLUTE) l_val.append(.0)
l_val.append(.0) u_val.append(.0)
u_val.append(.0)
bounds = create_box_bounds(total_risk_names, b_type, l_val, u_val) bounds = create_box_bounds(total_risk_names, b_type, l_val, u_val)
...@@ -357,11 +363,12 @@ if __name__ == '__main__': ...@@ -357,11 +363,12 @@ if __name__ == '__main__':
weights_bandwidth=0.01, weights_bandwidth=0.01,
rebalance_method='tv', rebalance_method='tv',
bounds=bounds, bounds=bounds,
target_vol=0.045, target_vol=0.05,
turn_over_target=0.4) turn_over_target=0.4)
strategy = Strategy(alpha_model, data_meta, running_setting, dask_client=dask_client) strategy = Strategy(alpha_model, data_meta, running_setting, dask_client=dask_client)
ret_df, positions = strategy.run() ret_df, positions = strategy.run()
ret_df[['excess_return', 'turn_over']].cumsum().plot(secondary_y='turn_over') ret_df.rename(columns={'excess_return': '超额收益', 'turn_over': '换手率'}, inplace=True)
plt.title(f"{str(factor)[20:60]}") ret_df[['超额收益', '换手率']].cumsum().plot(secondary_y='换手率', figsize=(14, 7))
plt.title("原始ILLIQUIDITY因子")
plt.show() plt.show()
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