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

commit model training new example

parent 6d06e29d
...@@ -31,15 +31,16 @@ training - every 4 week ...@@ -31,15 +31,16 @@ training - every 4 week
engine = SqlEngine('postgresql+psycopg2://postgres:A12345678!@10.63.6.220/alpha') engine = SqlEngine('postgresql+psycopg2://postgres:A12345678!@10.63.6.220/alpha')
universe = Universe('zz500', ['zz500']) universe = Universe('zz500', ['zz500'])
neutralize_risk = ['SIZE'] + industry_styles neutralize_risk = industry_styles
alpha_factors = ['RVOL', 'EPS', 'CFinc1', 'BDTO', 'VAL', 'GREV', alpha_factors = ['RVOL', 'EPS', 'CFinc1', 'BDTO', 'VAL', 'CHV', 'GREV', 'ROEDiluted'] # ['BDTO', 'RVOL', 'CHV', 'VAL', 'CFinc1'] # risk_styles
'ROEDiluted'] # ['BDTO', 'RVOL', 'CHV', 'VAL', 'CFinc1'] # risk_styles
benchmark = 905 benchmark = 905
n_bins = 5 n_bins = 5
frequency = '1w' frequency = '1w'
batch = 4 batch = 4
start_date = '2011-01-05' start_date = '2012-01-01'
end_date = '2017-08-31' end_date = '2017-08-31'
method = 'rank'
use_rank = 100
''' '''
fetch data from target data base and do the corresponding data processing fetch data from target data base and do the corresponding data processing
...@@ -143,16 +144,23 @@ for i, predict_date in enumerate(dates): ...@@ -143,16 +144,23 @@ for i, predict_date in enumerate(dates):
constraints=cons, constraints=cons,
detail_analysis=True, detail_analysis=True,
benchmark=benchmark_w, benchmark=benchmark_w,
is_tradable=is_tradable) is_tradable=is_tradable,
method=method,
use_rank=use_rank)
model_res = pd.DataFrame({'weight': model.coef_[0],
'factor': np.array(data_package['x_names'])})
# model_res.to_csv(r'\\10.63.6.71\sharespace\personal\licheng\portfolio\zz500_model\{0}.csv'.format(predict_date.strftime('%Y-%m-%d')))
final_res[i] = analysis['er']['total'] / benchmark_w.sum() final_res[i] = analysis['er']['total'] / benchmark_w.sum()
print('trade_date: {0} predicting finished'.format(train_date)) print('trade_date: {0} predicting finished'.format(predict_date))
last_date = advanceDateByCalendar('china.sse', dates[-1], frequency) last_date = advanceDateByCalendar('china.sse', dates[-1], frequency)
df = pd.Series(final_res, index=dates[1:] + [last_date]) df = pd.Series(final_res, index=dates[1:] + [last_date])
df.sort_index(inplace=True) df.sort_index(inplace=True)
df.cumsum().plot() df.cumsum().plot()
plt.title('Risk style factors model training with Linear Regression from 2012 - 2017') plt.title('Prod factors model Linear Regression (neutralized Industries rank 100)')
plt.show() plt.show()
...@@ -180,6 +180,7 @@ def fetch_data_package(engine: SqlEngine, ...@@ -180,6 +180,7 @@ def fetch_data_package(engine: SqlEngine,
alpha_logger.info("Data processing is finished") alpha_logger.info("Data processing is finished")
ret = dict() ret = dict()
ret['x_names'] = transformer.names
ret['settlement'] = return_df ret['settlement'] = return_df
ret['train'] = {'x': train_x_buckets, 'y': train_y_buckets} ret['train'] = {'x': train_x_buckets, 'y': train_y_buckets}
ret['predict'] = {'x': predict_x_buckets} ret['predict'] = {'x': predict_x_buckets}
......
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