代码拉取完成,页面将自动刷新
同步操作将从 frankygtd/alphasickle 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
# -*- coding: utf-8 -*-
"""
阿尔法收割者
Project: alphasickle
Author: Moses
E-mail: 8342537@qq.com
"""
import os
import warnings
warnings.filterwarnings('ignore') #将运行中的警告信息设置为“忽略”,从而不在控制台显示
from index_enhance import *
#工作目录,存放代码
work_dir = os.path.dirname(os.path.dirname(__file__))
def main(method):
if method == 's': #分层抽样法
method_name = 'stratified_sample'
elif method == 'l': #线性规划法
method_name = 'linear_programming'
#要进行大类因子合成的因子
factors_to_concat = {
'mom': ['exp_wgt_return_1m', 'exp_wgt_return_3m', 'exp_wgt_return_6m', 'exp_wgt_return_12m'],
'liq_barra': ['STOA_barra', 'STOM_barra', 'STOQ_barra'],
'vol': ['std_1m', 'std_3m', 'std_6m', 'std_12m'],
'growth': ['Profit_G_q', 'Sales_G_q', 'ROE_G_q', 'OCF_G_q'],
#'lev': ['BLEV_barra', 'DTOA_barra', 'MLEV_barra'],
}
#要进行正交的因子
factors_ortho = {
'vol_con_equal':['mom_con_equal', 'liq_barra_con_equal'],
#'ROE_q': ['EP'],
}
methods = {
'linear_programming':
{'factors': ['BP', 'mom_con_equal_ortho', 'liq_barra_con_equal_ortho', 'growth_con_equal'], #阿尔法因子
'risk_factors': ['LNCAP_barra'], #风险因子
'window': 24,
'half_life': 1},
'stratified_sample':
{'factors': ['BP', 'mom_con_equal_ortho', 'liq_barra_con_equal_ortho'],
'risk_factors': None,
'window': 24,
'half_life': 1},
}
start_date = '2014-01-30'
end_date = '2019-12-31'
benchmark = '000300.SH'
factors = methods[method_name]['factors']
risk_factors = methods[method_name]['risk_factors']
print('开始运行模型...')
print('*'*80)
pctchgnm = get_factor(['PCT_CHG_NM'])['PCT_CHG_NM']
index_wt = get_stock_wt_in_index(benchmark)
mut_codes = index_wt.index.intersection(pctchgnm.index)
print('开始进行因子合成与正交处理...')
factor_process(method, factors_to_concat, factors_ortho, index_wt, mut_codes, factors, risk_factors)
print('因子处理完成!')
print('*'*80)
print('开始运行指数增强模型...')
index_enhance_model(method, benchmark, start_date, end_date, methods)
if __name__ == '__main__':
method = input("请选择指数增强模型方法('l'-线性规划; 's'-分层抽样): ")
if method not in ('l', 's'):
raise TypeError(f"暂不支持的方法:{method}, 请重新运行并输入")
main(method)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。