笔者编著的《金融数量分析——基于MATLAB编程》自2009年上市到现在已经更新了4个版本。近十年,国内金融市场变革迅速,金融产品日新月异,在此期间Python由于其免费与便捷的特点已经开始在金融行业被广泛应用,为此笔者诚意邀请怀伟城、王玮珩两位Python专家将《金融数量分析——基于MATLAB编程》中的案例改写为用Python编写的案例。
也许大家是因为听说Python功能强大,并能解决许多问题才开始学习Python的。但我相信如果有一个更好的、更能说服自己的理由,大家也许能够更主动、积极地学习Python,并将Python用于金融数值计算,同时提高自己对于金融的理解。
1. 巨大的数据量
“大数据”时代,在金融方面我们需要处理的数据量越来越大。A 股股票数量早已超过3 000只,公募基金的数量也已经超过5 000只,备案私募基金的数量超过40 000只;中证指数有限公司、深证信息公司、中信标普等指数编制机构发布的各类指数也已数千,而且还在快速增长;开盘价、收盘价、PE、PB、ROE、ROA、夏普比率、波动率等各种指标数据不计其数。
2. 复杂的模型
随着投资标的品种(股指期货、股指期权、商品期权、可转债)的增加,我们所需掌握的定价模型越来越复杂,例如,期权定期、Beta对冲、浮动利息债券等;同时,随着程序化交易的快速发展,各种复杂的交易策略模型也在市场中被大量应用。这些复杂的模型都需要强大的数值计算平台的支持。
3. 避免主观臆断
人类大脑的思维具有局限性并且逻辑有时具有跳跃性,常常凭借直观感觉判断事物。例如,几年前大家常见的一个量化案例: 某策略赚3%止赢即获利平仓,亏损1%平仓止损,每一组止赢与止损交易可以获利2%。如果这个策略进行高频交易,将获利丰富啊! 但我们却忽略了一点,即赚3%与赔1%的概率并非一致,如果进一步思考就会发现我们忽略了交易成本。
再举一个我常常使用的问例: 两个[0,1]上的均匀分布的和是什么分布? 三个[0,1]上的均匀分布的和是什么分布? n 个呢? 有的读者会直接回答还是均匀分布,有的读者深思一下回答是正态分布。这两个答案或许都不正确,但如何验证呢? 我们可以通过编程的方式进行数值试验,对两个结论进行验证。如果做数值试验,那就需要编程实现。
4. 实现自动化办公
大多数人在日常工作中都会面对很多重复性的劳动与烦琐的计算。例如,某个报表每日(周、月)都要更新,且更新逻辑很明确:增加内容,统计市场数据,附加某些计算等;或者,在每天的工作中Excel或Word的重复工作占据了你大量的时间。如果有一种方法可以将你从中解脱出来,那么你就可以有更多的时间进行创造性的工作或享受生活了。
所谓重复劳动,大多都是规则明确化的,它包括脑力与体力两个方面。从人工智能角度发展,就是让机器代替人类执行重复计算或劳动的过程。比如自从有了计算机,大家的劳动相比之前高效了许多。但是,我们在计算机上还是会进行某些重复性的劳动与烦琐的计算,这又是为什么呢? 这是因为软件、硬件作为商品都是普遍适用的,基于利润或稳定性方面的考虑,它不会针对某件事或某个人设定,所以面对各自的工作问题,就需要自己或请人来解决。由于某些业务的复杂性(非技术上的),其中的逻辑只有自己最清楚,所以自己编程解决是一条非常有效的路径。例如,金融市场数据每日更新,通过Python,可以将自己从一定的重复劳动中解脱出来。
实现自动化办公需要自己编程,但你或许会问: 不会编程怎么办? 首先,必须说明的是,有些人适合编程而有些人不适合编程,适合不适合只有自己尝试过才知道。其次,还有一条途径——请别人帮你解决问题,如果你觉得贵就只有自己继续重复劳动了。假设你工作30年,每天有50%的时间在重复劳动,那么你的15年时间就在重复劳动中度过了。是否尝试一下由你自己决定! 在这里声明,重复并非不好,或许大多数工作的性质就是重复,每个人的生活态度不一样。笔者厌恶重复,有时为了生活也不得不重复,但在重复的过程中我总是思考如何能自动化,如何摆脱重复。
5. 量化交易“赚钱”
量化交易者的楷模是数学家西蒙斯,关于他的文艺复兴科技公司与大奖章基金介绍如下:华尔街赚钱机器文艺复兴科技公司,依靠公司的旗舰产品大奖章基金(Medallion Fund)20年的超群表现赢得无数赞誉。据《福布斯》杂志的统计,截至2012年9月,西蒙斯的身价已高达110亿美元,在福布斯全球富豪榜上位居第82位。数据显示,自1988年成立至2010年西蒙斯退休,大奖章基金年均回报率高达35%,不仅远远跑赢大市,还比索罗斯和巴菲特的操盘成绩高十余个百分点,这使得西蒙斯在人才济济的华尔街笑傲群雄。他被投资界称为“量化投资之王”。西蒙斯成功的秘诀主要有三:一是针对不同市场设计数量化的投资管理模型;二是以计算机运算为主导,排除人为因素干扰;三是在全球各种市场上进行短线交易。如果没有仔细阅读前面4点,直接看到“量化交易‘赚钱’”,或有图急功近利之嫌。作者想提醒读者先阅读前面4点,尤其是“避免主观臆断”与“实现自动化办公”,以“量化交易‘赚钱’”或许需要天赋与运气,但实现“避免主观臆断”与“实现自动化办公”只需要你用些时间去学习一下Python编程。
最后,希望本书能对各位读者有所帮助,并且再次感谢怀伟城、王玮珩两位Python专家,以及北京航空航天大学出版社的各位老师卓有成效的工作。
6. 其 他
书中所有程序的源代码可在北京航空航天大学出版社网站(http://www.buaapress.com.cn/mzs/welcome/index)“下载专区”免费下载。
由于作者水平有限,书中不当之处,敬请读者批评指正。本书网络支持:www.ariszheng.com,作者邮箱:ariszheng@gmail.com,编辑邮箱:shpchen2004@163.com。
郑志勇
2018年5月于北京