Python量化交易学习——Part6:多因子选股策略实战(1)

作者 : admin 本文共1783个字,预计阅读时间需要5分钟 发布时间: 2024-06-10 共6人阅读

在上一节中,我们学习了基于IC值的多因子计算方法,说白了就是先选择我们认为与股票收益率影响大的因子(如市盈率、净资产收益率、净利润增长率等),之后计算各个因子与股票收益率之间的相关系数,选择相关系数大的因子进行加权得到新的因子,之后求得新因子与收益率之间的相关系数,如果相关系数变大,这说明新因子的预测准确率更高,我们可以用新的因子作为我们预测的标的。
为了简化,我们先假设所有因子的相关系数都相同,相当于对所有因子进行等权重相加,看一下最终效果如何。

实战:基于成长因子的模型测试

成长模型是一种以公司未来成长为基础的选股模型。详细可以参加Philip A.Fisher(费雪)的著作《怎样选择成长股》。在实际操作中,成长型投资通常是在对经济周期和行业景气分析的基础上,结合股票基本面情况,包括收益率和增长率等属性分析,来评估和选择成长型股票。
在量化形式上,成长型投资主要是通过ROE(净资产收益率=资产净利率×权益乘数)、ROA(资产回报率= 税后净利润/总资产)、ROIC(资本回报率= (净收入 – 税收) / (股东权益+有息负债))、营业收入增长率、主营业务利润率等参数来挖掘成长性相对更高的股票。

模型说明

以资本回报率-净利润增长率两个指标来构建成长模型。根据我们对各项指标的梳理,现在将资本回报率列为质量指标,另外构建如下成长因子指标的组合因子。

成长因子stk_get_finance_deriv_pt()函数中对应字段名
息税前利润增长率息税前收益增长率=(本期息税前利润 – 上期息税前利润) / 上期息税前利润 (ebit_ps:每股息税前利润)
净利润同比增长率net_prof_yoy
营业利润同比增长率oper_prof_yoy
总资产同比增长率ttl_asset_yoy
经营活动产生的现金流量净额同比增长率net_cf_oper_yoy
净资产同比增长率net_asset_yoy
基本每股收益同比增长率eps_bas_yoy
净资产收益率同比增长率(摊薄)roe_yoy
利润总额同比增长率ttl_prof_yoy
import numpy as np
import pandas as pd
import gm.api as gm
import datetime
from dateutil.relativedelta import relativedelta
from sklearn.preprocessing import MinMaxScaler


gm.set_token("自己的token码")  #输入自己的token
# 获取沪深300成分股的代码,存储到HS300_symbol_list中(list格式)
index = "SHSE.000300"
HS300_array = gm.stk_get_index_constituents(index='SHSE.000300') #获取沪深300成分股数据
"""
按照股票代码从大到小进行排序,注意下面这句非常重要,因为在实际使用过程中我发现,gm.stk_get_finance_deriv()和参数symbols=HS300_symbol_list中的顺序
并不一样,这回导致我们采用for循环中得到的参数数据和采用gm.stk_get_finance_deriv()顺序完全不同,所以我们先对股票代码进行排序,以控制for循环中返回的参数数据
之后我们再把gm.stk_get_finance_deriv()中得到的顺序同样进行从大到小排序,才能保持两组数据完全一致。
"""
HS300_array = HS300_array.sort_values(["symbol"],ascending=False)  # 按照股票代码从大到小排序
HS300_symbol_array = HS300_array['symbol'].values
HS300_symbol_list = list(HS300_symbol_array) # 转换为list类型才能进行后续处理


# 采用pd.DataFrame建立二维数据表,初始化数据表,后续可以将数据存储到表中
factor_matrix = pd.DataFrame([])
factor_matrix["symbol"] = HS300_symbol_list
# factor_matrix["earnings before interest and tax"] = -999    # 息税前收
本站无任何商业行为
个人在线分享 » Python量化交易学习——Part6:多因子选股策略实战(1)
E-->