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

在上一节中,我们学习了基于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    # 息税前收

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-09 06:56:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-09 06:56:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-09 06:56:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-09 06:56:04       18 阅读

热门阅读

  1. 从0~1开发财务软件

    2024-06-09 06:56:04       10 阅读
  2. python打印一颗桃花树

    2024-06-09 06:56:04       11 阅读
  3. 【深度学习基础】模型文件介绍

    2024-06-09 06:56:04       9 阅读
  4. 用旧安卓手机当 linux 开发机

    2024-06-09 06:56:04       13 阅读
  5. LeetCode题练习与总结:三角形最小路径和--120

    2024-06-09 06:56:04       9 阅读