1.1 Python简介
人类在多年前已经进入信息化时代。事实上,我们如今是淹没在信息的海洋之中,时时刻刻都有大量的电子邮件需要阅读或太多的网页亟待浏览。互联网提供了大量关于任何事物的信息,从重要的事件到如何学习Python。我们可以借助互联网搜索任何一家上市公司的信息。如果想收集与国际商业机器(IBM)相关的财务信息,可以使用雅虎财经网站、谷歌财经网站、美国证券交易委员会(SEC)网站公布的公司报表和该公司的网页,等等。在这样的背景下,投资者、专业人士和研究人员需要一个强有力的工具来处理如此大量的公开信息。同时,我们的社会趋向于更加开放和透明。在金融领域,开源金融的概念应运而生。Dane和Masters(2009)提出了开源金融的3个组成部分:开源软件、公开的数据和开放的代码。作为开源金融的第一个组成部分,Python是开源软件的最好选择之一。另一同样流行的开源软件是R。下面总结学习和运用Python于金融领域的一些优点。
首先,Python是免费的开源软件。免费带来许多好处。我们可以设想一个简单的实验。假设一个读者没有学习过期权理论,对Python也一无所知。你觉得他/她需要多长时间能够用Python来计算看涨期权的价格(Black-Scholes-Merton模型)。我们的答案是:2小时之内!首先,下载和安装Python,这不会超过10分钟。再花10分钟学习如何启动并退出Python,并试运行几个简单例子,然后在4.1节,找到著名的Black-Scholes- Merton看涨期权模型的代码,总共只有13行代码。读者可以在接下来的40分钟输入代码,调试纠错。2小时之内,他/她应该能够自如地运行Python程序给看涨期权定价了。当然,当公司采用一种新的计算机语言时,应考虑多方面的成本:如软件的年费、维护成本、可调用的软件包和技术支持等。换言之,软件是否开源只是一个因素。
再看另外一个涉及美国证券交易委员会的例子。2010年,美国证券交易委员会提议,所有的金融机构在提交申请发售新的资产支持证券时,需要提供一个能够计算和演示该证券的合同现金流量的软件程序(www.sec.gov/rules/proposed/2010/33-9117.pdf),并建议使用Python作为编写该程序的计算机语言。考虑Python的重要原因之一是其开源性。因为任何投资者都可以免费地学习和使用它。
Roger Ehrenberg(2007)建议对债券或信用风险的分析引进开源金融的概念。是否要求机构投资者一定按照债券评级来决定买卖并不重要,重要的是知晓金融机构是如何裁定可投资债券风险的级别。试想一下,如果很多金融机构把自身的债务评级模型公之于众,并由众人加以改进,这对债券或信用风险的分析有多么大的推进作用啊!为了促进这方面的发展,Python(或R)是用作计算工具的理想选择之一。
其次,Python功能强大、灵活,并且简单易学。它能够帮助解决几乎所有与金融和经济相关的计量问题。Python适用于所有主要的操作系统,包括Windows、Linux/Unix、OS/2、Mac和Amiga,等等。
第三,Python适合大数据的应用。Dasgupta(2013)认为R和Python是两个最受欢迎的用于数据分析的开源编程语言。与R相比较,Python是一个更好的广泛式语言,尤其是考虑它与面向对象编程功能的融合。与SciPy/NumPy、Matplotlib和Statsmodel相组合,它提供了一个强有力的数据分析工具。本书还会讨论一个称为Pandas的处理财务数据的模块。
第四,类似于MATLAB的工具箱和R的软件包,Python拥有许多非常有用的模块。每个模块都完成一些特定的功能。在本书中,我们将学习十几个模块。其中,将特别关注5个对金融最有用的模块:NumPy、SciPy、Matplotlib、Statsmodels和Pandas。前两个模块与统计分析、公式计算、矩阵及其操作、数据结构和数据操作有关。Matplotlib是图形模块。第8章将使用这个模块深入讲解如何用图形呈现各种交易策略的收益函数和利润/损失函数。Statsmodels是与计量经济学相关的模块,该模块包括T-检验、F-检验和GA RCH模型等。Pandas是用于金融数据分析的模块。
当然我们应该指出Python的一些缺点。由于它是免费的,最主要的缺点是缺乏客户支持。一些专家认为,Python社区需要进一步成长,应该包括更多的统计学家和数学家。