Commit 95f000e7 authored by Dr.李's avatar Dr.李

update examples

parent bd3c56b0
......@@ -26,7 +26,7 @@ strategies = {
}
engine = SqlEngine("mssql+pymssql://licheng:A12345678!@10.63.6.220/alpha")
engine = SqlEngine('postgresql+psycopg2://postgres:A12345678!@10.63.6.220/alpha')
universe = Universe('custom', ['zz500'])
benchmark_code = 905
neutralize_risk = industry_styles
......@@ -53,17 +53,17 @@ for strategy in strategies:
all_data = engine.fetch_data_range(universe, factors, dates=dates, benchmark=905)
factor_all_data = all_data['factor']
factor_groups = factor_all_data.groupby('Date')
factor_groups = factor_all_data.groupby('trade_date')
rets = []
for i, value in enumerate(factor_groups):
date = value[0]
data = value[1]
codes = data.Code.tolist()
codes = data.code.tolist()
ref_date = date.strftime('%Y-%m-%d')
returns = engine.fetch_dx_return(ref_date, codes, horizon=horizon)
total_data = pd.merge(data, returns, on=['Code']).dropna()
total_data = pd.merge(data, returns, on=['code']).dropna()
print(date, ': ', len(total_data))
risk_exp = total_data[neutralize_risk].values.astype(float)
industry = total_data.industry_code.values
......
......@@ -13,19 +13,19 @@ from matplotlib import pyplot as plt
# defind your alpha formula here
base_factors = ['EPS', 'ROEDiluted', 'VAL', 'CFinc1']
base_factors = ['EPS', 'ROEDiluted', 'BTOP']#, 'ROEDiluted', 'VAL', 'CFinc1']
expression = 0.
for name in base_factors:
expression = expression + RSI(10, name)
expression = expression + LAST(name)
alpha_factor_name = 'alpha_factor'
alpha_factor = {alpha_factor_name: expression}
# end of formula definition
engine = SqlEngine("mssql+pymssql://licheng:A12345678!@10.63.6.220/alpha")
engine = SqlEngine('postgresql+psycopg2://postgres:A12345678!@10.63.6.220/alpha')
universe = Universe('custom', ['zz500'])
benchmark_code = 905
neutralize_risk = ['SIZE'] + industry_styles
......@@ -39,8 +39,8 @@ elif freq == '1w':
elif freq == '1d':
horizon = 0
dates = makeSchedule('2017-01-01',
'2017-08-18',
dates = makeSchedule('2012-01-01',
'2012-08-01',
tenor=freq,
calendar='china.sse')
......@@ -48,18 +48,20 @@ factor_all_data = engine.fetch_data_range(universe,
alpha_factor,
dates=dates,
benchmark=905)['factor']
return_all_data = engine.fetch_dx_return_range(universe, dates=dates, horizon=horizon)
factor_groups = factor_all_data.groupby('Date')
factor_groups = factor_all_data.groupby('trade_date')
return_groups = return_all_data.groupby('trade_date')
final_res = np.zeros((len(dates), n_bins))
for i, value in enumerate(factor_groups):
date = value[0]
data = value[1][['Code', alpha_factor_name, 'isOpen', 'weight'] + neutralize_risk]
codes = data.Code.tolist()
data = value[1][['code', alpha_factor_name, 'isOpen', 'weight'] + neutralize_risk]
codes = data.code.tolist()
ref_date = value[0].strftime('%Y-%m-%d')
returns = engine.fetch_dx_return(date, codes, horizon=horizon)
returns = return_groups.get_group(date)
total_data = pd.merge(data, returns, on=['Code']).dropna()
total_data = pd.merge(data, returns, on=['code']).dropna()
risk_exp = total_data[neutralize_risk].values.astype(float)
dx_return = total_data.dx.values
benchmark = total_data.weight.values
......
......@@ -14,7 +14,7 @@ from matplotlib import pyplot as plt
start = dt.datetime.now()
engine = SqlEngine("mssql+pymssql://licheng:A12345678!@10.63.6.220/alpha")
engine = SqlEngine('postgresql+psycopg2://postgres:A12345678!@10.63.6.220/alpha')
universe = Universe('custom', ['zz500'])
neutralize_risk = ['SIZE'] + industry_styles
n_bins = 5
......@@ -30,8 +30,8 @@ elif freq == '1w':
elif freq == '1d':
horizon = 0
start_date = '2017-01-01'
end_date = '2017-08-22'
start_date = '2012-01-01'
end_date = '2012-08-01'
dates = makeSchedule(start_date,
end_date,
......@@ -39,9 +39,10 @@ dates = makeSchedule(start_date,
calendar='china.sse',
dateRule=BizDayConventions.Following)
prod_factors = ['CHV']
prod_factors = ['EPS']
all_data = engine.fetch_data_range(universe, prod_factors, dates=dates, benchmark=905)
return_all_data = engine.fetch_dx_return_range(universe, dates=dates, horizon=horizon)
factor_all_data = all_data['factor']
total_df = pd.DataFrame()
......@@ -51,15 +52,16 @@ for factor in prod_factors:
factors = [factor]
final_res = np.zeros((len(dates), n_bins))
factor_groups = factor_all_data.groupby('Date')
factor_groups = factor_all_data.groupby('trade_date')
return_groups = return_all_data.groupby('trade_date')
for i, value in enumerate(factor_groups):
date = value[0]
data = value[1][['Code', factor, 'isOpen', 'weight'] + neutralize_risk]
codes = data.Code.tolist()
data = value[1][['code', factor, 'isOpen', 'weight'] + neutralize_risk]
codes = data.code.tolist()
ref_date = value[0].strftime('%Y-%m-%d')
returns = engine.fetch_dx_return(date, codes, horizon=horizon)
returns = return_groups.get_group(date)
total_data = pd.merge(data, returns, on=['Code']).dropna()
total_data = pd.merge(data, returns, on=['code']).dropna()
print('{0}: {1}'.format(date, len(data)))
risk_exp = total_data[neutralize_risk].values.astype(float)
dx_return = total_data.dx.values
......
......@@ -13,7 +13,7 @@ from alphamind.data.dbmodel.models import Uqer
from alphamind.data.dbmodel.models import Tiny
from alphamind.data.dbmodel.models import LegacyFactor
engine = SqlEngine('postgresql+psycopg2://postgres:we083826@localhost/alpha')
engine = SqlEngine('postgresql+psycopg2://postgres:A12345678!@10.63.6.220/alpha')
universe = Universe('custom', ['zz500'])
neutralize_risk = ['SIZE'] + industry_styles
n_bins = 24
......@@ -45,7 +45,7 @@ for t in factor_tables:
for c in t.__table__.columns:
col_names.add(c.name)
col_names = col_names.difference(set(['Date', 'Code']))
col_names = col_names.difference(set(['trade_date', 'code']))
prod_factors = list(col_names)
......@@ -54,20 +54,20 @@ return_all_data = engine.fetch_dx_return_range(universe, dates=dates, horizon=ho
factor_all_data = all_data['factor']
total_df = pd.DataFrame()
factor_groups = factor_all_data.groupby('Date')
return_groups = return_all_data.groupby('Date')
factor_groups = factor_all_data.groupby('trade_date')
return_groups = return_all_data.groupby('trade_date')
for date, factor_data in factor_groups:
ref_date = date.strftime('%Y-%m-%d')
returns = return_groups.get_group(date)
final_res = np.zeros((len(prod_factors), n_bins))
this_date_data = factor_data[['Code', 'isOpen', 'weight'] + prod_factors + neutralize_risk]
this_date_data = pd.merge(this_date_data, returns, on=['Code'])
codes = this_date_data.Code.tolist()
this_date_data = factor_data[['code', 'isOpen', 'weight'] + prod_factors + neutralize_risk]
this_date_data = pd.merge(this_date_data, returns, on=['code'])
codes = this_date_data.code.tolist()
for i, factor in enumerate(prod_factors):
factors = [factor]
total_data = this_date_data[['Code', 'isOpen', 'weight', 'dx'] + factors + neutralize_risk].dropna()
total_data = this_date_data[['code', 'isOpen', 'weight', 'dx'] + factors + neutralize_risk].dropna()
risk_exp = total_data[neutralize_risk].values.astype(float)
dx_return = total_data.dx.values
benchmark = total_data.weight.values
......@@ -87,7 +87,7 @@ for date, factor_data in factor_groups:
df = pd.DataFrame(final_res, index=prod_factors)
df.sort_index(inplace=True)
df['Date'] = date
df['trade_date'] = date
total_df = total_df.append(df)
print('{0} is finished'.format(date))
......
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