如何快速上手使用Python进行python金融数据分析析

Python在金融,数据分析,和人工智能中的应用 - 推酷
Python在金融,数据分析,和人工智能中的应用
Python最近取得这样的成功,而且未来似乎还会继续下去,这有许多原因。其中包括它的语法、Python开发人员可用的科学生态系统和数据分析库、易于和几乎所有其它技术集成,以及其开源地位。——来自Yves Hilpisch的Python金融大数据分析(姚军译)。
自从1991它出现在编程场景中,比于其他编程语言,Python取得了少有的地位。面向对象,容易学习,使用语法,以及由此产生的低维护成本,是Python持续获得好评的一部分原因。开源是一个很明显的优势,跨平台的有效性,多目标,垃圾回收(自动的),代码的简洁性,以及整齐的缩进是Python其他的显著的特点。
Python在金融中的应用
技术创新对金融衍生品市场的效率提高做出了很大的贡献。。。这些强大的改进只有在衍生品交易所和清算公司提供持续的高额的信息技术投资时才有可能。——德国证券交易所集团,2008
在过去的十年里,随着自动化技术的出现,科技最终成为杰出的金融机构,银行,保险和投资公司,股票交易公司,对冲基金,券商等公司的一部分。根据2013年的Crosman 报告,与2013年相比,银行和金融公司2014年在科技上的花费要高出4.2%。预计在2020年,一年的金融服务的技术成本将达到5亿美元。正值系统需要维护和不断升级的时候,一些著名的银行雇佣一些开发者是很正常的事情。那么Python用在哪里呢?
Python的语法很容易实现那些金融算法和数学计算,每个数学语句都能转变成一行Python代码,每行允许超过十万的计算量。
没有其他语言能像Python这样适用于数学,Python精通于计算,以及数学和科学中的排列组合问题。Python的第二个特性是表示数字,序列和算法。比如SciPy库,很适合用来做技术领域和科学领域的计算,SicPy库被很多工程师,科学家和分析人员使用。NumPy,也是Python的一个扩展,它可以很好地处理数学函数,数组和矩阵。同时,Python也支持严格的编码模式,因此,使它成为一个平衡的选择,或者说方法。
使用更少的人达到相同的结果以及实现其他编程语言不能实现的事,是Python首要的优点。Python语法的精确和简洁,以及它大量宝贵的第三方工具使它成为处理金融行业的错综复杂的事务的唯一可靠的选择。
Cititec(英格兰伦敦的职业介绍所)的技术招聘经理Stephen Grant说:跨市场风险管理和交易系统都在使用Python(有时会混合使用c++),很多银行从建立银行的前端到资产风险系统都会选择使用Python。使用Python的金融公司包括荷兰银行,德国证券交易所集团,Bellco信用社,摩根大通以及阿尔蒂斯投资管理。
Python用于分析学
近年来分析学在数据、网络、金融等领域获得了突出的地位。应用各种软件组合起来进行数据收集,数据管理,以及数据分析,得出的结论用作商业决策,业务需求分析等等。分析学用于研究一个产品的市场效应,银行的贷款决定,这些都只是分析学的冰山一角。它在大数据,安全,数字和软件分析等领域有很深远的影响,下面是Python在分析学中的主要作用的一个延续:
在这个信息过载的世界,只有那些可以利用解析数据的优势来得出见解的人会获益。Python对于大数据的解释和分析具有很重要的作用。分析公司开发的很多工具都是基于Python来约束大数据块。分析师们会发现Python并不难学,它是一个强有力的数据管理和业务支持的媒介。
使用单一的语言来处理数据有它的好处。如果你以前曾经使用过C++或者Java,那么对你来说,Python应该很简单。数据分析可以使用Python实现,有足够的Python库来支持数据分析。 Pandas是一个很好的数据分析工具,因为它的工具和结构很容易被用户掌握。对于大数据来说它无疑是一个最合适的选择。即使是在数据科学领域,Python也因为它的“开发人员友好性”而使其他语言相形见绌。一个数据科学家熟悉Python的可能性要比熟悉其他语言的可能性高得多。
除了Python在数据分析中那些很明显的优点(易学,大量的在线社区等等)之外,在数据科学中的广泛使用,以及我们今天看到的大多数基于网络的分析,是Python在数据分析领域得以广泛传播的主要原因。
不论是金融衍生品还时大数据分析,Python都发挥了重要的作用。就前者而言,Python能够很好地和其它系统,软件工具以及数据流结合在一起,当然也包括R。用Python来对大数据做图表效果更好,它在速度和帮助方面也一样可靠。有些公司使用Python进行预测分析和统计分析。据福布斯日的一篇文章报道,与历年相比,2014年与Python相关的大数据招聘需求同比上涨96.9%。
Python在人工智能领域的应用
Python和其它好的技术一样,在你的开发团队像病毒一样快速传播,然后找到把它应用到各种应用和工具中的方式。换句话说,Python在开始时像一个黑客,而代码任务像钉子一样。——Mustafa Thamer,Firaxis 游戏
而人工智能是当今的“东西”,Python在这个领域也取得了显著的成绩,在商业智能领域,Python也证明了它的实用性。回到AI这个话题,Python已经成为一些AI算法的一部分,从简单的双人游戏到复杂的数据工程任务。Python的AI库在当今的软件中扮演重要的角色,包括NLYK,PyBrain,OpenCV,和AIMA。对于一些AI软件功能,短短的一个代码块就足够了。从人脸识别技术,会话接口再到其他领域,Python正在不断地覆盖新领域。
当谈到AI时,Python是一种现代化的选择。为什么呢,除了一般的原因,Python使原型设计变得更加快捷,同时具有更加稳定的架构。举个例子,比如Scikit-learn(一个机器学习库)。
在Python中调试是一个很快的过程。它还提供了对其他语言的应用程序设计接口(API)。Python的大量的库很有帮助,但是你必须精通Python,才能很好地利用它。
Python将用于BI,它在网络情报中也是一种力量。自动化的司法调查,安全检查,网页分析都可能使用Python来实现。对于BI来说,有一大堆Python能够使用的工具来使你的工作更加简单,该语言对算法,数学方程有一个自然的倾向,使它成为一个多用途的媒介。
Python在数学中的应用
Python和Matlab对比:Python也在威胁着数值计算的专家级语言Matlab,很多在使用Matlab的人都在考虑转去使用Python。Matlab的使用成本太高了,它要检查代码的可移植性,你不能在另一台电脑上运行你的代码。它使用专有的算法,这意味你所使用的大多数算法你是没有办法查看的,而只能相信它们已经正确的实现了。
同时,Matlab是科学界的支持,是很多大学的一部分,尽管因为费用原因,有一部分你可能支付不起。而Python需要一个综合开发环境(IDE)和额外的程序包。
Python作为开源程序,专门为了简单方便并且系统的使用。因为有第三方库和数据类型,使得使用Python整理数据变成一件很容易的事。因为不是专有的,有了它的类和可以自定义的函数,在程序的任何地方,你都可以根据你的需求很容易的移植Python代码。用户图形界面(GUI)工具包(比如Qt),对于创建一个令人印象深刻的前端很有帮助。最后,Python提供了全方位的编程包。
Python因为它的可靠性和高效性,而不断地使世界各地的程序员和软件开发人员印象深刻。它已经侵入新的领域和重要的日常软件功能。直到继承者的进入,Python将作为一个全方位的编程语言继续流行。
英文原文:/blog/python-in-finance-analytics-artificial-intelligence/译者:yaoyujia123
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致您浏览的页面不存在
我的图书馆
信息提示:
您要浏览的文章不存在,5秒后将自动跳转到“360doc个人图书馆”的首页,您可以继续浏览其它好文章,也可以&
&当前页面。苹果/安卓/wp
学科带头人
学科带头人
积分 4348, 距离下一级还需 1477 积分
权限: 自定义头衔, 签名中使用图片, 隐身, 设置帖子权限, 设置回复可见
道具: 彩虹炫, 涂鸦板, 雷达卡, 热点灯, 金钱卡, 显身卡, 匿名卡, 抢沙发, 提升卡, 沉默卡, 千斤顶下一级可获得
道具: 变色卡
购买后可立即获得
权限: 隐身
道具: 金钱卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
开心签到天数: 119 天连续签到: 1 天[LV.6]常住居民II
本系列帖子“量化小讲堂”,通过实际的案例让大家知道如何使用Python、pandas进行金融数据处理。帖子主要面向来自金融领域的入门学习者,大神请轻拍。希望能对大家有帮助。
之前的系列文章:
注:之前文章中用到的数据可在此下载,这里可以下载到所有股票、从上市日起的交易数据,财务数据。
交流Q群:,欢迎加入。
【量化小讲堂- Python、pandas技巧系列】如何快速上手使用Python进行金融数据分析
根据之前几篇系列帖子以及交流QQ群()中的反馈,让我觉的很有必要写一篇如何快速上手使用Pyhton进行系列分析的帖子。本文主要以此为主题,介绍下我学习量化投资、Python的个人经验。
第一步:好奇心
不要为了学习而去学习一门编程语言,或者任何工具。一定要心里首先有一个问题,抱着解决问题的心态,去了解并学习这个工具是如何解决问题的。驱动你去学习量化投资的,应该是你的好奇心。你认为你有一个炒股独家的窍门,你认为你发现了某个规律,你非常好奇的想用历史数据去验证你的想法。
比如我在大二的时候接触量化投资,就是因为我的好奇心。当时我看到一些入门的技术分析书上推荐KDJ这个技术指标,说KDJ低位金叉之后股票会涨,是个很好的买入信号,并且书上会配一些图,证明这个指标的有效性。我当时就很好奇,书上说的是不是真的?这几个配图是刻意挑选的还是有代表性的?是不是可以写个程序找出历史上所有的kdj金叉,看看之后涨的概率有多大?
这就是引领我入门的最初的好奇心。当时我不会编程,一开始用excel来试着验证,发现KDJ从大概率上来讲是不行的。好奇心继续升级:我调整一下KDJ默认的参数,效果会不会好一点?再配合一下其他的指标,效果会不会好一点?再加上点财务数据,效果会不会好一点......
慢慢的想测试的想法越来越多,excel渐渐的不够用,开始学习编程。我学习编程的目的性很强,就是解决我眼前的问题。对于解决我问题没有帮助的,我就先不学。一开始用的是SAS,自己找书看,论坛上发帖子问。后来觉得SAS太重,不灵活,慢慢的迁移到Python。
我是金融专业的,但是学校并不教量化投资,一切都是自己学。可想而知,若没有好奇心一直引导我去探索,这么长的一段时间我怎么可能坚持下来呢?
第二步:为什么Python
我推荐刚入门的量化投资研究者使用Python。主要理由如下:
Python配合各类第三方的package(例如下面要降到的pandas),是非常适合用来处理金融数据的
相比于c,c#等语言,Python容易太多了。让你可以更快,更方便的对自己的想法进行测试。life is short, use Python。
Matlab是另外一个金融分析领域的统治级语言,以上讲的两点适用性、简单性matlab都是具备的,在业界的使用范围应该是比Python要高的。
而Python相比于matlab的一大优势,那就是全能。matlab基本只能用于金融数据分析。但是Python除了拥有不亚于matlab的矩阵计算、科学计算能力之外,其他几乎任何事情都可以做。比如数据的清理、整理,比如从网页上抓取数据,比如进行文本信息的挖掘,比如做一个网站......现在学习一门语言,将来在任何地方都能用到。
第三步:如何入门Python
如果你有其他语言的编写经验(比如上过一个学期的编程课),有一定的编程基础。以下三步可以让你入门Python:
1. 随便找一本Pyhton入门书。这些教程网上有很多很多,论坛里面也有很多,随便搜索一下就是。我稍微整理了下,放在附件中,回复可见。
2. 挑一本Python入门书,不要花超过半天的时间,快速翻阅这本书。这个步骤不求记住什么东西,只要大概的知道这本书讲了什么,什么知识在这本书的哪一章写了就行,以便将来查阅。
3. 结合自己的好奇心,给自己寻找一个问题,简单的复杂的都可以,找一点数据,直接开始实战。遇到问题,第一步是去翻书,第二步是去google(别去百度),第三步是论坛发帖求助。若你没有什么思路或者问题,可以加群<font color="#8143420,我可以给你提供思路。
如果你没有任何编程的基础,那么想要入门Python,也是以上三个步骤。但是第2步,就不是仅仅花半天的时间浏览书了,而是要细细的看书。对着书上的例子,实际的操作下,大概花一个星期的时间的业余时间也就够了吧。
第四步:如何入门pandas
使用Python做金融数据分析,一定要用pandas。pandas是Python的一个第三方库,简直是金融数据分析的神器,第一次遇到它的时候让我泪流满面。了解pandas最好的途径就是他的官方文档:,当然也可以看我之前写的系列文章。
之后会讲的内容:
【量化小讲堂 - python & pandas技巧系列】如何根据逐笔数据计算资金流入流出数据
【量化小讲堂 - python & pandas技巧系列】如何测试海龟交易法则
【量化小讲堂 - python & pandas技巧系列】详细介绍复权价格如何计算
更多的内容还没想好,大家要是有什么想知道可以留言,也可也加入群讨论:
附件中是Python入门的相关书籍,回复可见:
本帖隐藏的内容
(293 Bytes)
22:20:54 上传
支持楼主:、
购买后,论坛将奖励 10 元论坛资金给楼主,以表示您对TA发好贴的支持
载入中......
Python比C++容易上手
首先感谢楼主的好帖和分享精神,其次 我这两天搜寻基础python教程,对比发现,国内老齐的教程最适合新手,网址是: /qiwsir/StarterLearningPython
这个是网页格式,代码都可以直接复制。 当然,如果你一定崇尚老外教材,那么推荐的有(入门级):/s/os417 其实我觉得老齐的版本和老外的版本大内容差不多,但是老齐显然写的更好点。
我直接给了下载网址了,附件格式对没币的屌丝太 ...
总评分:&经验 + 585&
论坛币 + 170&
学术水平 + 14&
热心指数 + 18&
信用等级 + 13&
本帖被以下文库推荐
& |主题: 603, 订阅: 35
& |主题: 4817, 订阅: 201
& |主题: 46, 订阅: 8
& |主题: 1297, 订阅: 586
& |主题: 93, 订阅: 68
& |主题: 106, 订阅: 32
& |主题: 1038, 订阅: 144
不管去哪里 只要在路上
take a look
本帖最后由 fantuanxiaot 于
00:17 编辑
首先感谢楼主的好帖和分享精神,其次 我这两天搜寻基础python教程,对比发现,国内老齐的教程最适合新手,网址是: & &&&这个是网页格式,代码都可以直接复制。 当然,如果你一定崇尚老外教材,那么推荐的有(入门级):/s/os417 其实我觉得老齐的版本和老外的版本大内容差不多,但是老齐显然写的更好点。
我直接给了下载网址了,附件格式对没币的屌丝太郁闷了。&&有币的水友们打点赏吧 俺都不能下载其他人的资料了
总评分:&经验 + 130&
论坛币 + 82&
学术水平 + 12&
热心指数 + 13&
信用等级 + 11&
总评分:&学术水平 + 1&
热心指数 + 1&
信用等级 + 1&
& &有个错别字,“降”---&“讲& 。 :-)
本帖最后由 fantuanxiaot 于
00:18 编辑
Python比C++容易上手
总评分:&论坛币 + 20&
学术水平 + 1&
热心指数 + 1&
信用等级 + 1&
邢不行 发表于
本系列帖子“量化小讲堂”,通过实际的案例让大家知道如何使用Python、pandas进行金融数据处理。帖 ...希望这个栏目能一直办下去 谢谢楼主
[handshake][handshake]
无限扩大经管职场人脉圈!每天抽选10位免费名额,现在就扫& 论坛VIP& 贵宾会员& 可免费加入
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
京ICP证090565号
论坛法律顾问:王进律师译者 | 阿里云云栖社区
摘要: 在本篇文章中,我们讨论了均线交叉策略的设计、回溯检验、基准测试以及实践中可能出现的若干问题,并结合Python代码实现了一个基于均线交叉的交易策略系统。
以下为译文
本篇文章是&#8221;Python股市数据分析&#8221;内容基于我在犹他州立大学MATH 3900 (Data Mining)课程上的一次讲座,第一部分在这里。在这些文章中,我将介绍一些关于金融数据分析的基础知识,例如,使用pandas获取雅虎财经上的数据,股票数据可视化,移动均线,开发一种均线交叉策略,回溯检验以及基准测试。而本篇文章中,我讨论的话题包括均线交叉策略的设计、回溯检验、基准测试以及实践中可能出现的若干问题,以供读者思考。
注意:本篇文章所涉及的看法、意见等一般性信息仅为作者个人观点。本文的任何内容都不应被视为金融投资方面的建议。此外,在此给出的所有代码均无法提供任何保证。选择使用这些代码的个人需自行承担风险。
我们把在未来条件满足时将被终止的交易称为未平仓交易。多头仓位是指在交易过程中通过金融商品增值来获取利润,而空头仓位是指在交易过程中通过金融资产价值下跌来获取利润。在直接交易股票时,所有的多头仓位看涨,所有的空头仓位看跌。这也就是说,持看涨态度并不需要伴随着一个多头仓位,而持看跌态度同样也不需要伴随着一个空头仓位(在交易股票期权时,更是如此)。
这里有一个例子。打算你买入了一只股票,计划在股价上涨时以更高的价格将股票抛出。这就是多头仓位:你持有一种金融资产,如果资产价值增长,你将从中获利。你的潜在利润是无限的,而你的潜在损失受到股价的限制,因为股价永远不会低于0。另一方面,如果你预计一只股票的价格会下跌,你可以向经纪公司筹借股票并出售,以期在后续以较低的价格回购股票,从而获取利润。
这种做法称为做空股票,属于空头仓位,即通过股价下跌赚取收益。做空股票的潜在利润受到股价的限制(最好的做法是,使股票变得一文不值,这样你可以免费回购这些股票),而损失却是无限的,因为你可能需要花费任意多的钱来买回筹借的股票。因此,在允许投资者做空股票前,经纪人需要确保投资者保持良好的财务状况。
任何交易员都必须有一套规则,决定她愿意在任何一笔交易上投入多少钱。例如,一名交易员可能认为在任何情况下,她在一笔交易中承受的风险都不能超过所有投资的10%。另外,在任何交易中,交易员必须制定一个由一组条件构成的退出策略,决定她何时退出仓位,从而获利或止损。交易员可以设置一个目标,即促使她清空仓位的最少利润。同样地,交易员也要明确自身能够承受的最大损失;如果潜在损失超过了这个金额,交易员将退出仓位,以避免任何进一步的损失(通常通过设置止损指令来实现,触发该指令以避免进一步损失)。
如果一个方案包括促成交易的交易信号、一套能在任何特定策略情况下明确承受多少投资风险的规则、以及一个适用于任何交易的退出策略,那么我们称这个方案为一个完整的交易策略。目前,我们关注的是如何设计和评价交易策略。
我们假设任何一笔交易的金额都是投资总资产的一个固定比例;10%看起来是一个不错的数字。我们决定,对于任何一笔交易,如果损失超过交易金额的20%,我们将结束交易。现在,我们需要一种方法来判断何时进入仓位以及何时退出仓位,进而获取利润。
在这里,我将介绍一种均线交叉策略。我们将使用两条移动均线:一条表示长期均线,另一条表示短期均线。采用的策略如下:
当短期均线越过长期均线时,交易金融资产。
当短期均线再一次越过长期均线时,结束交易。
当短期均线高于长期均线时,我们应进行多头交易,当短期均线再次越过(低于)长期均线时,结束此类交易。当短期均线低于长期均线时,我们应进行空头交易,当短期均线再次越过(高于)长期均线时,结束此类交易。
现在,我们有了一个完整的策略。但在我们决定使用它之前,我们首先应该尽可能地评估这个策略的效果。回溯检验是一种常用的方法,该方法基于历史数据对交易策略所能带来的利润多少进行评估。例如,看看上方图表中Apple股票的表现,如果20天均线表示短期均线,50天均线表示长期均线,这个交易策略似乎并不能产生多少利润,至少不如你一直持有多头仓位更有利可图。
让我们看看我们是否可以自动进行回溯检验任务。我们首先确定20天均线什么时候低于50天均线,以及相反的情况。
我们把这种差异的标志称为行情。也就是说,如果短期均线高于长期均线,那么这是一个牛市行情(牛市规则),如果短期均线低于长期均线,则目前为熊市行情(熊市规则)。我使用以下代码判断当前的股市行情。
上面的最后一行表明,Apple股票在股市中的行情,有1005天为熊市,有600天为牛市,而有54天股市行情较为平稳。
行情变化时会出现交易信号。当牛市开始时,买入信号会被触发,而当牛市结束时,抛出信号会被触发。同样地,当熊市开始时,抛出信号会被触发,而当熊市结束时,买入信号会被触发(只有当你要做空股票,或使用一些股票期权等衍生品做空市场时,才会对这些感兴趣)。
我们很容易就可以获取交易信号。令rt表示t时刻的股市行情,st表示t时刻的交易信号,则有:
st = sing(rt &#8211; rt-1)
st ∈ {-1, 0, 1},其中-1表示&#8221;抛出&#8221;,1表示&#8221;买入&#8221;,0表示不采取任何措施,我们可以这样获取信号:
我们会买入Apple股票23次,并抛出Apple股票23次。如果我们仅持有多头仓位,在6年期间只会进行23笔交易,然而,如果我们在每次多头仓位终止后,由多头仓位转为空头仓位,我们一共会进行23笔交易。(请记住,更加频繁的交易并不一定就是好的,交易从来不是免费的。)
你可能会注意到,目前的系统并不是很健全,即使是一个短期均线超过长期均线的短暂瞬间,交易也会被触发,并导致交易立即结束(这样并不好,不仅仅是因为每一笔实际交易都伴随着一笔费用,已获得的收益会因此被迅速稀释)。此外,每个牛市行情都会立即转换到熊市行情,如果你在构建一个允许看涨押注和看跌押注的交易系统,这会导致在一笔交易结束时,立即触发另一笔在股市中反向押注的交易,这看起来又有些挑剔了。一个更好的系统应该根据更多的证据来判断股市正朝着发展的特定方向,但我们现在不会关心这些细节。
现在,让我们尝试着确定每次买入和抛出股票时的价格。
从上面我们可以看到,在日,Apple股票的价格大幅下跌,我们的交易系统似乎不能很好地处理这种状况。但是,这次股价下跌并不是因为Apple公司受到了巨大的冲击,而是由于股票拆分。尽管派付股息不如股票拆分那样明显,但是这些因素仍可能影响到我们交易系统的效果。
我们不希望我们的交易系统因为股票拆分和派付股息而表现得很糟糕。我们应该如何处理这种情况?一种方法是获取股票拆分和派付股息的历史数据,并设计一个处理这类数据的交易系统。这或许是最好的解决方案,能够最为真实地反映股票的行为,但是它过于复杂。另一种解决方案是根据股票拆分和派付股息的情况调整股票价格。
雅虎财经只提供调整后的股票收盘价,但是对于我们来说,要得到调整后的开盘价、最高价、最低价,这样就足够了。已调整收盘价计算方式如下:
pricetadj = mt x pricet
其中,mt是用来调整股价的系数。只需进行一次除法就可以求出mt的值,因此,我们可以使用收盘价和已调整收盘价来调整股票的其他所有价格。
让我们回到前面,调整Apple的股价,并用这些调整后的数据重新评估我们的交易系统。
你可以看到,根据股票拆分和派付股息情况调整后的股票价格有明显的不同。从现在开始,我们将使用这些数据。
现在,让我们创建一个价值100万美元的虚拟投资项目,根据我们建立的规则,看看它会如何表现。规则包括:
在任何交易中,仅投资所有投资总额的10%。
如果损失超过交易金额的20%,则退出仓位。
在模拟的过程中,牢记以下几点:
股票交易以100股为单位。
我们的止损规则包含在股价下跌至一定程度时将股票抛出的指令。因此,我们需要检查这一期间的低价是否已经足够得低,以至于触发止损指令。实际上,除非我们买入了看跌期权,否则我们无法保证以设置的止损价格抛出股票,但为简单起见,我们将这个价格作为抛出价。
每一笔交易都需要向经纪人支付一笔佣金,这部分费用应该计算在内。但在这里我们不这样做。
回溯检验按如下方式进行:
我们的投资项目总值在六年间增长了10%。考虑到任何一笔交易仅涉及所有投资总额的10%,这样的表现并不差。
请注意,这个交易策略并不会触发我们的止损指令。难道这意味着我们不需要止损指令吗?要回答这个问题并不简单。毕竟,如果我们选择了另一个不同的股价来判断是否抛出股票,止损指令可能真的会被触发。
止损指令会被自动触发,且不会询问指令被触发的原因。这意味着股价的真实变化与短暂波动都有可能触发止损指令,而后者我们更为关心,因为你不仅要为订单支付费用,而且还无法保证以指定的价格抛出股票,这可能会使你的损失更大。与此同时,你交易股票的走势仍在继续,如果止损指令不被触发,你甚至可以从中获利。也就是说,止损指令能够帮助你保持自己的情绪,继续持有股票,即使它已经失去了自己的价值。如果你无法监控或快速访问自己的投资项目,例如在度假,它们也能发挥作用。
我曾介绍过一些关于赞成和不赞成止损指令的观点,但从现在起,我不会要求我们的回溯检验系统考虑止损指令。虽然不太现实(我确实相信在工业中实际应用的系统能够考虑止损规则),但这简化了回溯检验任务。
更为真实的投资项目不会将投资总额的10%押注在一只股票上。更现实的做法是考虑在多只股票上分散投资。涉及多家公司的多笔交易可能会在任何时刻进行,并且大多数投资项目会选择股票交易,而不是现金。既然我们将在多只股票上投资,只有当移动均线交叉(不是因为止损)时才退出仓位,那么我们需要改变进行回溯检验的方式。例如,我们将使用pandas中的DataFrame来记录所有考察股票的买入、抛出订单,前面的循环代码也需要记录更多的信息。
我实现了为多只股票创建订单数据的代码,以及一个执行回溯检验的函数。
这个虚拟的投资项目投资了十二只(科技)股票,最终的资产增长达到了100%左右。这很好吗?虽然表面上看起来不错,但我们会看到我们可以做得更好。
回溯检验只是评估交易策略有效性过程的一部分。我们会对策略进行基准测试,或者与其他的可行(通常是众所周知的)策略进行比较,以确定我们所能达到的效果。
当你评估一个交易系统时,有一个策略你一定要与它比较,除了少数互惠基金与投资管理人,这个策略的效果是最好的:买入并持有SPY指数基金。有效市场假说声称,任何人都无法击败市场。因此,投资者应该一直购买反映市场结构的指数基金。SPY指数基金是一种交易所买卖基金(一种在市场上交易的类似股票的互惠基金),其价值实际上地代表着标准普尔500指数中股票的价值。通过买入并持有SPY指数基金,我们实际上可以尝试将回报与市场匹配,而不是试着去击败市场。
我通过以下方式获取关于SPY的数据,并根据收益简单地买入和持有SPY指数基金。
买入和持有SPY指数基金的效果优于我们的交易系统,至少优于我们现在初期的系统,而且,我们甚至没有说明,考虑到费用我们这个更加复杂的策略有多么的昂贵。考虑到机会成本和与主动投资策略相关的费用,我们不应该采用这样的策略。
我们怎样才能提高我们系统的效果呢?对于初学者而言,我们可以尝试投资多样化。我们之前考虑的所有股票都属于科技公司,这意味着如果科技行业表现不佳,我们的投资项目也会反映出这种低迷的状况。我们可以开发一个能够做空股票或看跌押注的系统,这样,我们就可以利用市场上各个行业领域的走向。我们还可以寻找一种能够预测股价变化的方法。但是,无论我们做什么,都必须击败这个基准;否则,我们的交易系统中始终会存在着机会成本。
也存在着其他的基准测试策略,如果我们的交易系统击败了&#8221;买入和持有SPY基金&#8221;这个策略,那么我们可以与这些策略进行比较。这类的交易策略包括:
当每月收盘价高于十月均线时,买入SPY基金。
当十月均线的动量为正时,买入SPY基金。(动量是移动平均过程中的第一个差值,即MOtq = MAtq &#8211; MAt-1q。)
(我最早在这里知道了这些策略。)普遍的经验仍然成立:对于一个包含大量活跃交易的复杂交易系统,如果一个涉及指数基金且不进行频繁交易的简单策略击败了它,那么不要使用这个复杂系统。实际上,这个要求很难满足。
最后一点,假设你的交易系统确实在回溯检验中击败了所有的基准策略。回溯检验就能够预测系统在未来的表现了吗?不太可能。回溯检验存在着过拟合的可能,所以,仅仅是回溯检验预测的上涨并不意味着在未来会保持上涨的势头。
虽然这篇教程以一个令人沮丧的观点收尾,但是请记住,有效市场假说有很多的反对者。我自己的看法是,随着交易变得越来越算法化,击败市场也将变得更加困难。也就是说,击败市场仍然是有可能的,尽管互惠基金似乎还做不到(但是请记住,互惠基金表现得如此糟糕的部分原因,是因为交易所伴随的费用)。
这篇教程非常简短,只涉及一种策略类型:基于移动平均线的交易策略。在实践中也会应用许多其他的交易信号。此外,我们并没有深入讨论有关做空股票、货币交易或者股票期权的细节。特别地,股票期权的形式非常丰富,能够提供许多不同的方式来押注股票的走势。你可以在《Python衍生分析:数据分析,模型,仿真,校准与对冲》一书中了解更多关于衍生品(包括股票期权和其他衍生品)的信息,(对于犹他州立大学的学生)这本书可以在犹他州立大学图书馆中找到。
另一个资源(也是我准备这篇教程时参考的文献)是O&#8217;Reilly出版的图书《Python金融分析》,也可在犹他州立大学图书馆中找到。
请记住,我们可能(甚至很常见)在股市中亏损。同样,我们也很难在其他领域获得像股市那样的回报,任何投资策略都应该认真对待投资。这篇教程旨在向大家介绍评估股票交易与投资的入门知识,我希望大家能够继续研究这些观点。
转载请注明来自36大数据(): &
除非特别注明,本站所有文章均不代表本站观点。报道中出现的商标属于其合法持有人。请遵守理性,宽容,换位思考的原则。

我要回帖

更多关于 python 金融分析 pdf 的文章

 

随机推荐