Python股市数据分析教程——学会它,或可以实现半“智能”炒股

区块链

580人已加入

描述


译者 | 阿里云 云栖社区

摘要: 在本篇文章中,我们讨论了均线交叉策略的设计、回溯检验、基准测试以及实践中可能出现的若干问题,并结合Python代码实现了一个基于均线交叉的交易策略系统。

以下为译文

本篇文章是”Python股市数据分析”内容基于我在犹他州立大学MATH 3900 (Data Mining)课程上的一次讲座,第一部分在这里。

在这些文章中,我将介绍一些关于金融数据分析的基础知识,例如,使用pandas获取雅虎财经上的数据,股票数据可视化,移动均线,开发一种均线交叉策略,回溯检验以及基准测试。而本篇文章中,我讨论的话题包括均线交叉策略的设计、回溯检验、基准测试以及实践中可能出现的若干问题,以供读者思考。

注意:本篇文章所涉及的看法、意见等一般性信息仅为作者个人观点。本文的任何内容都不应被视为金融投资方面的建议。此外,在此给出的所有代码均无法提供任何保证。选择使用这些代码的个人需自行承担风险。

交易策略


我们把在未来条件满足时将被终止的交易称为未平仓交易。多头仓位是指在交易过程中通过金融商品增值来获取利润,而空头仓位是指在交易过程中通过金融资产价值下跌来获取利润。

在直接交易股票时,所有的多头仓位看涨,所有的空头仓位看跌。这也就是说,持看涨态度并不需要伴随着一个多头仓位,而持看跌态度同样也不需要伴随着一个空头仓位(在交易股票期权时,更是如此)。

这里有一个例子。打算你买入了一只股票,计划在股价上涨时以更高的价格将股票抛出。这就是多头仓位:你持有一种金融资产,如果资产价值增长,你将从中获利。

你的潜在利润是无限的,而你的潜在损失受到股价的限制,因为股价永远不会低于0。另一方面,如果你预计一只股票的价格会下跌,你可以向经纪公司筹借股票并出售,以期在后续以较低的价格回购股票,从而获取利润。

这种做法称为做空股票,属于空头仓位,即通过股价下跌赚取收益。做空股票的潜在利润受到股价的限制(最好的做法是,使股票变得一文不值,这样你可以免费回购这些股票),而损失却是无限的,因为你可能需要花费任意多的钱来买回筹借的股票。

因此,在允许投资者做空股票前,经纪人需要确保投资者保持良好的财务状况。

任何交易员都必须有一套规则,决定她愿意在任何一笔交易上投入多少钱。例如,一名交易员可能认为在任何情况下,她在一笔交易中承受的风险都不能超过所有投资的10%。

另外,在任何交易中,交易员必须制定一个由一组条件构成的退出策略,决定她何时退出仓位,从而获利或止损。交易员可以设置一个目标,即促使她清空仓位的最少利润。

同样地,交易员也要明确自身能够承受的最大损失;如果潜在损失超过了这个金额,交易员将退出仓位,以避免任何进一步的损失(通常通过设置止损指令来实现,触发该指令以避免进一步损失)。

如果一个方案包括促成交易的交易信号、一套能在任何特定策略情况下明确承受多少投资风险的规则、以及一个适用于任何交易的退出策略,那么我们称这个方案为一个完整的交易策略。目前,我们关注的是如何设计和评价交易策略。

我们假设任何一笔交易的金额都是投资总资产的一个固定比例;10%看起来是一个不错的数字。我们决定,对于任何一笔交易,如果损失超过交易金额的20%,我们将结束交易。现在,我们需要一种方法来判断何时进入仓位以及何时退出仓位,进而获取利润。

在这里,我将介绍一种均线交叉策略。我们将使用两条移动均线:一条表示长期均线,另一条表示短期均线。采用的策略如下:

当短期均线越过长期均线时,交易金融资产。

当短期均线再一次越过长期均线时,结束交易。

当短期均线高于长期均线时,我们应进行多头交易,当短期均线再次越过(低于)长期均线时,结束此类交易。当短期均线低于长期均线时,我们应进行空头交易,当短期均线再次越过(高于)长期均线时,结束此类交易。

现在,我们有了一个完整的策略。但在我们决定使用它之前,我们首先应该尽可能地评估这个策略的效果。回溯检验是一种常用的方法,该方法基于历史数据对交易策略所能带来的利润多少进行评估。


买入和持有SPY指数基金的效果优于我们的交易系统,至少优于我们现在初期的系统,而且,我们甚至没有说明,考虑到费用我们这个更加复杂的策略有多么的昂贵。考虑到机会成本和与主动投资策略相关的费用,我们不应该采用这样的策略。


我们怎样才能提高我们系统的效果呢?对于初学者而言,我们可以尝试投资多样化。我们之前考虑的所有股票都属于科技公司,这意味着如果科技行业表现不佳,我们的投资项目也会反映出这种低迷的状况。

我们可以开发一个能够做空股票或看跌押注的系统,这样,我们就可以利用市场上各个行业领域的走向。

我们还可以寻找一种能够预测股价变化的方法。但是,无论我们做什么,都必须击败这个基准;否则,我们的交易系统中始终会存在着机会成本。

也存在着其他的基准测试策略,如果我们的交易系统击败了”买入和持有SPY基金”这个策略,那么我们可以与这些策略进行比较。这类的交易策略包括:

当每月收盘价高于十月均线时,买入SPY基金。

当十月均线的动量为正时,买入SPY基金。(动量是移动平均过程中的第一个差值,即MOtq = MAtq – MAt-1q。)

(我最早在这里知道了这些策略。)普遍的经验仍然成立:对于一个包含大量活跃交易的复杂交易系统,如果一个涉及指数基金且不进行频繁交易的简单策略击败了它,那么不要使用这个复杂系统。实际上,这个要求很难满足。

最后一点,假设你的交易系统确实在回溯检验中击败了所有的基准策略。回溯检验就能够预测系统在未来的表现了吗?不太可能。回溯检验存在着过拟合的可能,所以,仅仅是回溯检验预测的上涨并不意味着在未来会保持上涨的势头。

结论

虽然这篇教程以一个令人沮丧的观点收尾,但是请记住,有效市场假说有很多的反对者。我自己的看法是,随着交易变得越来越算法化,击败市场也将变得更加困难。

也就是说,击败市场仍然是有可能的,尽管互惠基金似乎还做不到(但是请记住,互惠基金表现得如此糟糕的部分原因,是因为交易所伴随的费用)。

这篇教程非常简短,只涉及一种策略类型:基于移动平均线的交易策略。在实践中也会应用许多其他的交易信号。此外,我们并没有深入讨论有关做空股票、货币交易或者股票期权的细节。

特别地,股票期权的形式非常丰富,能够提供许多不同的方式来押注股票的走势。你可以在《Python衍生分析:数据分析,模型,仿真,校准与对冲》一书中了解更多关于衍生品(包括股票期权和其他衍生品)的信息,(对于犹他州立大学的学生)这本书可以在犹他州立大学图书馆中找到。

另一个资源(也是我准备这篇教程时参考的文献)是O’Reilly出版的图书《Python金融分析》,也可在犹他州立大学图书馆中找到。

请记住,我们可能(甚至很常见)在股市中亏损。同样,我们也很难在其他领域获得像股市那样的回报,任何投资策略都应该认真对待投资。这篇教程旨在向大家介绍评估股票交易与投资的入门知识,我希望大家能够继续研究这些观点。

End.

微信回复文字,查看系列文章


回复 1大数据可视化 5篇系列文章回复 2推荐系统         5篇系列文章回复 3机器学习         5篇系列文章回复 4随机森林         5篇系列文章回复 5 数据科学家     5篇系列文章回复 6大数据面试题 5篇系列文章回复 7大数据工具     5篇系列文章回复 8大数据应用案例 5篇系列文回复 9新手入门大数据 5篇系列文36大数据36大数据成立于2013年5月,是中国访问量最大的大数据网站。
36大数据以独立第三方的角度,为大数据产业生态图谱上的需求商、应用商、服务商、技术解决商等相关公司及从业人员提供全球资讯、商机、案例、技术教程、项目对接、创业投资及专访报道等服务。投稿/合作联系:dashuju36@qq.com 
网址:
长按二维码发现惊喜

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分