资讯专栏INFORMATION COLUMN

用python做投资--多因子策略

zilu / 994人阅读

摘要:如果我们把这三个因子都加进去会怎样呢收益率为倍,没有刚才那么好了,还是刚才的和净利润环比增长率这两个因子比较好,那就保留两个吧。因此,我们可以考虑使用排名的方法,对这些因子进行排名。

导语:每一位宽客都相信,影响股票涨跌的因素不胜枚举,而这些“因素”就是因子!本文作为一篇合格的入门教程,提供代码当做框架,各路宽客可以自己测试,查看收益率,亦可利用聚宽python平台自行构建代码。

规范源码已更新!请大家克隆研究。
本文由JoinQuant量化课堂推出 。难度标签为进阶上,理解深度标签:level-0

JoinQuant免费提供数据获取、研究环境、策略回测、实盘连接、发送交易信号,学习交流等功能.

作者: 导数君
编辑: 宏观经济算命师
因子

因子是什么?通俗来讲。选股择时,我们得有一个标准对不对?这些标准就叫做因子。比如,我认为营收增长率高的公司就是好公司!那我就把营收增长率大于30%的股票拉出来纳入石榴裙下好了。这个营收增长率大于30%就是因子,完毕。

因子有选股的因子(股票好不好),有择时的因子(好股票什么时候买)。由于择时往往跟技术指标关系紧密,本篇中就介绍基本面类的因子吧,偏财务向。

选取因子

最简单的方法,先物色一些自己喜欢的因子,比如增长率啦,市值啦,ROE啦,等等。然后一个个往里面加,看看效果如何,效果好了留下,效果差了删除,反复重复这个过程就能找到心仪的因子啦。

举个例子,小编先选两个因子,ROA和净利润/营业总收入(%)。ROA和利润率比较高的一般都是表现良好的公司,所以小编决定选取ROA和净利润/营业总收入前20名的股票买入,回测结果如下图所示:

表现比大盘略好一点,11年的收益有3.98倍。那换个因子试试?小编把净利润/营业总收入换成净利润环比增长率(%),回测结果如下图所示:

然后发现收益率好了一点点,过去11年的收益有7.54倍。嗯,比刚才高了一些。如果我们把这三个因子都加进去会怎样呢?

收益率为5.34倍,没有刚才那么好了,还是刚才的ROA和净利润环比增长率(%)这两个因子比较好,那就保留两个吧。小编听说小市值股票收益好,如果把市值这个因子也加进去会怎么样呢?回测了一下,发现:

收益居然有28倍!真的是太不可思议了。

所以话说回来,虽然这种试错法选因子是一种比较基础的选因子方式,但其实还挺有用。经过反复试错,小编发现小市值和ROE高的股票收益比较高,回测结果显示,收益可以达到42倍之多!

是不是很惊艳!你可以直接编程构建代码,也可以用我们的代码当做框架。总之,可以自己测试一下,看看收益会不会爆表。
作为一篇合格的教程,我们接下来看看代码是如何实现的:

编写代码的一些问题

首先,财务面的数据有个问题,就是有些数据是不可获得的,这样的话对排序的影响比较大,因此涉及到一个清洗数据的步骤。一个很简单的办法就是用均值来填充,这个在Python的pandas库里面有个现成的函数,大家可以尝试使用里面的均值填充法。小编自己也写了一个填充均值的函数,大家也可以参考一下源码。

不过随着深入的研究,可能会发现用均值填充并不是一个完美的方法。这里小编再提供一个思路,大家感兴趣可以自己实现:如果某只股票这一期的某个财务数据空缺,但是上一期没有,我们可以根据该股票这个数据与上一期的平均值比例来确定。用公式说可能更清晰点:
空缺数值=本期该字段平均值*上期该字段数值/上期该字段平均值。

其次,我们对因子的单位要做一个统一。因为有的因子绝对值好几十亿(比如市值),有的可能只有十几(收益率)甚至是负的,因此因子和因子之间很难直接赋予权重进行计算。因此,我们可以考虑使用排名的方法,对这些因子进行排名。
Python自带有一个sort函数,不过为了练手起见,小编自己写了一个。用的是最简单的冒泡排序算法,高手也可以试一下堆排序或者归并排序以加快回测的速度。

最后,我们将上述功能汇总成一个函数,集中取数据-清洗数据。

有了以上的几个子函数,写主函数就很方便了,各位宽粉们赶紧尝试吧!

小结

我们这篇文章主要介绍了如何通过财务数据来构建一个多因子的策略。由于是入门向,我们构建多因子的方法比较简单,选取的因子依据是主观分析+排名。
如果想定量的分析,主流的方法是做回归分析,或者对各个因子进行打分,这些将会在进阶的量化课堂中有所介绍。如果还有其他的方法,当然也欢迎尝试。

本文由JoinQuant量化课堂推出,版权归JoinQuant所有,商业转载请联系我们获得授权,非商业转载请注明出处。

文章更迭记录:
v2.1,2016-07-25,修正文字,感谢 liuzehong 指出
v2.0,2016-07-16,更新为规范源码,添加“函数说明书”
v1.1,2016-07-04,添加“导语”
v1.0,2016-05-21,文章上线

策略代码与回测结果见:原文

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38138.html

相关文章

  • Python进阶量化交易场外篇3——最大回撤评价策略风险

    摘要:我们知道投资是有风险的,那么如何去衡量这个风险呢最大回撤率就是一种直观的将风险切实量化的指标。最大回撤率计算公式当日收盘价当日之前最高价最高价最低价最高价。显而易见,最大回撤率越小越好,因为回撤与风险成正比,回撤越大,风险也就越高。 新年伊始,很荣幸笔者的《教你用 Python 进阶量化交易》专栏在慕课专栏板块上线了,欢迎大家订阅!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外...

    lcodecorex 评论0 收藏0
  • 金融套利策略:理解统计套利的工作原理

    摘要:后一种方法被称之为多因子统计套利模型。套利套利可以被称为交叉资产套利的一种形式,它可以识别的价值与其相关资产之间的差异。目前,统计套利策略已经成为了对冲基金和投资银行的主要力量。 作者:chen_h微信号 & QQ:862251340微信公众号:coderpai简书地址:https://www.jianshu.com/p/ea2... 1. 什么是定量交易 定量交易是通过统计技术(或...

    whataa 评论0 收藏0
  • 动态再平衡投资策略历史数据回测

    摘要:再平衡策略基本就是以固定收益为标准,围绕其做波动,而波动的影响就是股市的涨跌。 赚钱是个俗气的话题,但又是人人都绕不开的事情。我今天来 科学 地触碰下这个话题。 谈赚钱,就会谈到理财、投资,谈到炒股。有这样一个笑话: 问:如何成为百万富翁? 答:带一千万进入股市。 那么你有没有炒过股?有没有亏过钱? 股市虽然是个充满造富神话的地方,但对于大部分参与者来说,风险都是极高的,所谓 七...

    Vultr 评论0 收藏0
  • 人工智能在财富领域的应与探索

    摘要:财富管理专场上,蚂蚁金服财富事业群资深技术专家康宇麟做了主题为人工智能在财富领域的应用与探索的精彩分享。使用人工智能技术可以帮助蚂蚁金服决定给客户理赔的金额,这大大提升了运营的效率。 摘要: 以数字金融新原力(The New Force of Digital Finance)为主题,蚂蚁金服ATEC城市峰会于2019年1月4日上海如期举办。财富管理专场上,蚂蚁金服财富事业群资深技术专家...

    n7then 评论0 收藏0
  • python使web3py与以太坊智能合约交互

    摘要:合约规定了公共职能部门,以创造新的投资和撤资,这将成为对冲基金的主要职能。对冲基金的用户通过其以太坊地址来识别,该地址相当于公钥。我发现与其他程序如程序的以太坊智能合约进行交互的最简单方法是使用他们的。 在以太坊和其他区块链中,仍有很多被证明的概念正在实施,开发人员在尝试如何应对这些新概念。作为dInvest 系列文章一部分,我也在研究以太坊并尝试在区块链中实施对冲基金。在上一篇文章中...

    Joyven 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<