Python金融数据分析(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-10 07:45:18

点击下载

作者:(新加坡)马伟明(James Ma Weiming)

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Python金融数据分析

Python金融数据分析试读:

前言

Python已广泛应用于银行业、投资管理、保险业、房地产行业等金融领域,用于开发金融模型、管理风险和自动完成交易。许多大型金融机构依赖Python来搭建职位管理、资产定价、风险管理和交易系统等基础设施。

本书将介绍核心的金融理论,并给出它们的数学概念,以帮助读者更好地理解它们在实际中的应用价值。你将了解如何应用Python求解经典的资产定价模型,解决金融中的线性和非线性问题,开发数值程序和利率模型,以及如何根据有限差分法定价来描绘含有期权的隐含波动率曲线等。

随着高级计算技术的出现,我们必须要考虑如何存储和处理大量数据。而Hadoop是目前处理大数据的流行工具。因此本书将介绍Hadoop的工作原理及其与Python的集成,以获得金融数据的分析方法;以及如何利用Python实现NoSQL在存储非结构化数据中的应用。

目前许多公司开始向客户提供API,以使用他们定制的交易软件进行交易。通过学习本书,你将了解如何连接到代理API,检索市场数据,生成交易信号并向交易所发送指令,以及平均回报和趋势跟踪等交易策略的实施。另外,本书还将介绍风险管理、头寸跟踪和回溯测试技术,以帮助你管理交易策略的实施效果。

金融行业中,使用Microsoft Excel处理债券交易和后台业务是一种普遍现象。本书将介绍如何在Python中创建数字定价组件对象模型(COM)服务器,使你的电子表格能够即时计算和更新模型值。本书的主要内容

第1章探讨了Python在金融领域的适用性,引入IPython作为可视化数据和执行科学计算的有效工具。

第2章介绍了使用Python求解线性方程组的方法,执行整数规划,以及将矩阵应用于投资组合分析的线性优化。

第3章讨论了使用Python构建金融非线性模型以及术根方法。

第4章探讨了如何使用三叉树模型、二叉树网格和有限差分法等进行期权估值。

第5章讨论了收益率曲线的引导过程,涵盖一些利用Python实现的衍生品利率的短期定价模型。

第6章讨论了波动率指数,对欧洲斯托克50指数波动率数据进行分析,并使用子指数的期权价格复制主要指数。

第7章介绍了Hadoop在大数据分析中的应用,如何使用Python执行MapReduce操作,以及如何使用NoSQL存储数据。

第8章探讨了逐步开发均值回归算法交易和趋势跟踪算法交易策略,以及交易系统风险管理等。

第9章讨论如何设计并实现一个事件驱动的回溯测试系统,帮助你把握模拟交易策略的性能。

第10章介绍了如何在Python中构建一个组件对象模型服务器和客户端界面与Excel融通,以及如何在Excel中即时计算期权价格。学习本书的软硬件支持

学习本书需要安装如下软件:

·操作系统:

·能使用Python2.7或更高版本的操作系统

·第10章需要Windows XP或更高版本的操作系统

·第7章需要有至少4GB RAM的64位主机操作系统

·本书将使用以下Python包的Python、SciPy、pandas、IPython和Matplotlib模块:

·Continuum Analytics的Anaconda2.1或更高版本:https://store.continuum.io/cshop/anaconda/

·Enthought的Canopy1.5或更高版本:https://store.enthought.com/downloads/

·其他必需的Python模块:

·Statsmodels,见http://statsmodels.sourceforge.net/

·PuLP(第2章),见https://github.com/coin-or/pulp

·lxml(第6章),见http://lxml.de/

·PyMongo2.7(第7章),见https://pypi.python.org/pypi/pymongo/

·IbPy(第8章),见https://github.com/blampe/IbPy

·oandapy(第8章),见https://github.com/oanda/oandapy

·python-requests(第8章),见https://pypi.python.org/pypi/requests/

·PyWin32(第10章),见http://sourceforge.net/projects/pywin32/files/

·可选Python模块:

·使用pip6.0自动安装Python包,见https://pypi.python.org/pypi/pip

·需要的软件:

·Mozilla Firefox,见https://www.mozilla.org/en-US/firefox/new/

·MongoDB2.6(第7章),见http://www.mongodb.org/downloads

·VirtualBox4.3(第7章),见https://www.virtualbox.org/wiki/Downloads

·Cloudera QuickStart VM with CDH(Cloudera Distribution Including Apache Hadoop)(第7章),见http://www.cloudera.com/content/cloudera/en/downloads/quickstart_vms.html

·Interactive Brokers(IB)Trader Workstation(TWS)(第8章),见https://www.interactivebrokers.com/en/index.php?f=1537

·使用Oracle Java7运行IB TWS和OANDA fxTrade平台(第8章)

·Microsoft Office Excel2010或更高版本,并使用宏(第10章)本书的读者对象

本书面向开发金融应用程序的学生和程序员,提供金融服务的顾问,金融分析师以及想要利用Python在数据可视化、交互式分析和科学计算方面的优势进行财务分析的人员。对此,你需要掌握一定的Python基础知识和金融概念,在学习每一章的技术内容之前,本书会为初学者介绍相关的背景资料。第1章Python在金融中的应用

本章将探讨Python作为金融编程语言的实用性。时至今日,Python已经在银行业、投资管理和保险业等金融领域取得广泛应用,甚至帮助房地产行业开发金融建模、风险管理和交易的程序。为了更好地体验Python的强大功能,本书推荐使用IPython Notebook,它能够更有效地实现数据可视化,将科学计算过程呈现给最终用户。

本章讨论以下主题:

·Python相较于其他金融编程语言的优势

·Python在金融应用中的功能

·Python的编程和实现范式:面向对象设计(object-oriented design)和函数式设计(functional design)

·IPython概述

·IPython和IPython Notebook入门

·创建与存储Notebook文档

·导出多种格式Notebook文档

·Notebook文档用户界面

·在Notebook文档中插入Markdown语言

·在Notebook文档中利用Python实现运算

·在Notebook文档中创建函数图

·在Notebook文档中显示数学方程式的多种方式

·在Notebook文档中插入图像和视频文件

·在Notebook文档中使用HTML和pandas DataFrame1.1Python适合我吗

当前,金融IT工程师能够通过多种计算机语言实现丰富的软件解决方案,如C、Java、R和MATLAB。但每种语言是为实现特定任务开发的,各语言内部工作原理、行为、句法规则和性能差异都会影响用户的使用结果。

本书将重点介绍Python在金融计量和分析中的应用。作为原用于科学运算的计算机语言,Python借助AQR资产管理开发的Pandas开源软件库,为金融数据管理和量化分析提供了高效平台。

大型金融机构也利用Python建立基础系统架构。比如美国银行“石英”项目通过Python实现头寸位管理、定价和风险管理功能;摩根大通利用Python的兼容性和灵活性,融合C++和Java,建立跨市场的风险管理和交易系统——“雅典娜”。

本书将介绍借助Python开发金融应用的基本内容,包括投资组合最优化、数值定价、交互式分析、利用Hadoop进行大数据投资决策等。

使用Python开发金融应用的优势体现在以下几个方面。1.1.1 免费+开源

Python许可证以及互联网在线Python社区、文档均可免费使用,任何人都能根据实际情况浏览并修改免费的开放源码。

Python可安装于所有主流操作系统,如Windows、UNIX、OS/2、Mac等。它的开放性创造了前所未有的新机遇,任何人都有机会增强现有模块或创建新模块。高级使用者可实现跨语言平台编程。借助适合的库,Python解释器可集成C、C++、Fortran、Lisp、PHP、Lua等不同编程语言。1.1.2 高级、强大、灵活的编程语言

用户借助Python这种高级通用的编程语言,可以快速开发原型程序,避免内存管理等低层次机制构造问题。

Python支持不同的编程和实现范式,如面向对象式、函数式和过程式编程。基于这种灵活性,它在运行包含多个可变参数的复杂数学模型时尤为实用。1.1.3 丰富的标准库

NumPy、SciPy、matplotlib、statsmodels和pandas是定量分析和数据管理经常使用的模块。

其他库可以拓展Python的功能,例如,gnuplot软件包能够将Python变为数据可视化工具,以可视化数学函数和数据交互;基于Tk的GUI工具(如Tkinter)可将Python脚本变为GUI程序。

IPython是目前广泛使用的Python图形界面,最初用于处理Python数据,以其高效的交互式计算工具提供并行与分布式计算。IPython Notebook是IPython的Web浏览器版本,可以共享代码、文本、数学表达式、图像和其他丰富的媒体资料。IPython设计的初衷是让科学家使用Python和数据。1.2面向对象编程与函数式编程

如果你是一名金融程序员,你编写的程序可能用来处理价值成千上万美元的交易,必须保证零出错。金融模型和软件系统越来越复杂,优秀的软件设计尤为重要。出于易读性的考虑,编写Python代码可以选择面向对象式或函数式方法。1.2.1 面向对象式方法

随着对程序清晰、快速和灵活性需求的增加,保持代码可读性、可管理性愈发重要。一种常见方法是面向对象式编程构建软件系统。如以下例子所示,将Greeting定义为一个类:

下载示例代码

凡在http://www.packtpub.com官网购买书籍的客户,可登录账号,自行下载书中配套代码文件。若在其他渠道购买本书,可访问http://www.packtpub.com/support并注册,我们将把代码文件直接发送到您邮箱。

定义一个叫Greeting的类,它的构造函数能接受输入参数。本例将问候语命名为“Hello”,调用say_hello函数,输入属性name的值,输出如下问候语:1.2.2 函数式方法

我们也可以使用函数方法实现Greeting函数。函数式编程是一种计算机程序结构可视为数学函数的编程范式,能避免更改状态数据,提高可重用性和简洁性。

将函数对象赋给一个变量,这个函数对象和其他变量一样可以作为参数传递,也可以作为返回值返回。如下代码可以输出与上例相同的结果:

定义一个名为greeting的函数,该函数包含两个参数。利用functools模块的partial函数,将函数greeting作为一个输入变量,Hello作为问候语赋给第二个变量。

将say_hello_to变量作为返回值,执行接受输入参数的函数,用变量输出问候语与三个不同名称。1.2.3 我该使用哪种方法

对于编程范式选择,尚无明确答案。Python既支持面向对象式也支持函数式方法,函数式方法处理海量内容时更简洁,相较于greeting.say_hello(),say_hello_to函数可读性更好。程序员可据实权衡哪种方式可读性更高、程序维护成本更低。

复杂软件系统将对象作为类,有助于团队成员之间的代码管理,工作范围和系统范围更容易通过面向对象式定义。涉及数学模型时,函数式编程方法更易实现代码中数学概念。1.3我该使用哪个版本的Python

本书实例代码和第三方Python模块在Python2.7及以上版本均可运行,部分模块尚未支持Python3,为实现最好的兼容性,建议你安装Python2.7,安装包可在Python官网https://www.python.org下载。

为了开发本书实例程序,建议你安装一个包含第三方Python模块(如NumPy、SciPy、pandas)的安装程序,可在以下网站下载:

·Continuum Analytics公司的Anaconda:https://store.continuum.io/cshop/anaconda

·Enthought公司的Canopy:https://store.enthought.com1.4IPython简介

IPython是用于并行与分布式计算的高性能图形界面。你可通过IPython Notebook共享代码、文本、数学表达式、图像和其他丰富的多媒体资料。

本节我们将学习IPython Notebook初步使用方法。1.4.1 安装IPython

你安装的Python可能已经包含IPython,请参考IPython官网http://ipython.org选取合适的安装方法。

可在https://github.com/ipython下载IPython安装包,解压至一个文件夹,在终端切换至该文件夹顶层源目录,运行如下命令:1.4.2 使用pip

作为Python软件包管理器,pip可以轻松实现自动安装Python软件包。例如,在未下载所有源文件情况下安装IPython,只要在终端运行以下命令:

为了在终端运行pip,必须安装一个Python模块,可访问https://pypi.python.org/pypi/pip获得下载和安装pip的更多信息。1.4.3 IPython Notebook

IPython Notebook是IPython基于Web交互式计算界面的Web浏览器版本,可用于开发、记录和执行代码。本节介绍IPython Notebook可用于开发金融应用的常用功能。

下面是IPython Notebook在Windows操作系统界面截图:

IPython Notebook可在浏览器完成代码编辑和执行,显示多种媒体信息,包括图像、视频和HTML组件;可通过Markdown语言提供富文本和注释代码;利用MathJax渲染的LaTeX插入数学符号;引入Python模块插入由matplotlib渲染的高质量图片。

1.Notebook文档

Notebook文档以“.ipynb”文件格式保存。每个文件都包含关于交互式会话全部相关信息,以JSON纯文本格式存储,借此实现软件版本控制和代码分享。

Notebook可以导出一系列静态格式,包括HTML、LaTeX、PDF和幻灯片;也可作为静态网页通过URL提供给使用nbviewer(IPython Notebook阅读器)的受众浏览而无须安装Python,并通过nbconvert转换。

2.运行IPython Notebook

输入以下命令启动IPython Notebook服务器:

默认情况下,该服务将自动打开你的默认Web浏览器,导航到登录页。手动访问请在浏览器输入URL地址http://localhost:8888。

默认情况下,Notebook在8888端口运行。要推断Notebook正确运行位置,需要检查终端日志输出。

Notebook的Web应用程序登录页面是仪表板(dashboard),显示目前笔记本目录所有可用文件。默认情况下,这个目录即Notebook服务器启动目录。

3.创建新的notebook文件

点击仪表板上的New Notebook创建新的notebook文件,也可以点击File,选择New创建:

现在你可以看见笔记本名称、菜单栏、工具栏和空代码单元。

菜单栏提供不同选项选择笔记本功能。

工具栏以图标形式提供常用操作的快捷方式。1.4.4 Notebook单元格

Notebook每一个逻辑部分称作一个单元格(cell)。单元格是接受纯文本的多行文本输入字段,每个单一的notebook文档至少包含一个单元格。

执行单元格内容时,点击菜单栏Cell→Run,或点击工具栏Play,或使用键盘快捷键

每个单元格都有不同类型,具体包括:Code(代码)、Markdown、Raw NBConvert(原始文本)和heading(标题)单元格。

1.代码单元格

默认情况下,每个单元格都是代码单元格,点击Run即可运行Python代码。灰色背景圆角矩形单元格可接受文本输入。所执行框的输出结果显示在文本输入下方的空白处。

2.Markdown单元格

Markdown单元格可通过Markdown语言将纯文本轻松转化为富文本(rich text),也接受任意HTML代码格式。

标准LaTeX和AMS-LaTeX(amsmath包)可显示数学符号,用$环绕LaTeX方程显示内联数学计算,用$在单独的块中显示方程。执行单元格时,MathJax可以渲染由LaTeX排版描述的数学方程。

3.原始文本单元格

原始文本单元格能够直接输出无格式文本。

4.标题单元格

每个单元格都可被定义为从一级(顶级)到六级(段),可用于构建文档概念结构或目录。1.4.5 IPython Notebook简单的练习

接下来创建一个新的notebook,插入不同类型对象演示不同任务。

1.建立包含标题和Markdown单元格的notebook

创建一个新的notebook文件,执行以下步骤:

1)点击仪表板New Notebook创建一个新的notebook文件。如果已打开一个notebook文件,则点击File→New。

2)在第一个单元格输入该notebook标题,在本例中输入Welcome to Hello World。

3)点击工具栏选项Cells→Cell Type,选择Heading1将刚刚输入的文本格式化为页面标题,该项改变不会立即发生。

4)点击工具栏选项Insert→Insert Cell Below,在当前单元格下创建另一个输入单元格。

5)输入下面这段包含Markdown代码的文本:

6)点击工具栏Markdown选项。

7)点击Cell→Run All运行代码,该命令将运行所有Python指令并按要求将单元格格式化。

当前单元格成功运行后,Notebook将切换至下一个单元格并等待你继续输入。如果没有可用单元格,notebook将自动生成一个新的单元格。

输出结果如下图所示:

2.保存notebook

在File中选择Save和Checkpoint,该notebook将保存为.ipynb文件。

3.单元格中的数学运算

在代码单元格输入数字3+5,将计算结果赋值给answer变量:

点击菜单栏Insert→Insert Cell Below选项添加一个新的代码单元格,在新单元格输入如下代码,输出计算结果:

点击Cell→Run All,答案将显示在当前单元格下方。

4.显示图形

matplotlib模块在Python中提供了一个类似于MATLAB的绘图框架。通过matplotlib.pyplot函数,图表可被绘制和渲染为可在Web浏览器中显示的图像。

下面在IPython Notebook展示简单绘图功能,为了使代码正常运行,IPython Notebook需要安装NumPy、math和matplotlib包。在新单元格粘贴以下代码:

该代码前三行包含所需的导入语句,下一个语句表示变量x代表x轴上从0到7的实数,下一句画出x的正弦函数,接下来以虚线画出x的余弦函数。代码最后两行分别输出标题和图例。

运行此单元格,输出结果如下:

5.插入方程

TeX是数学标记命令的行业标准文档标记语言(industry standard document markup language)。LaTeX是TeX的变体,可将文档结构与内容分离。

IPython Notebook可通过MathJax,在需渲染内容两端添加$$符号渲染LaTeX,将数学方程显示于Markdown解析器。

本例将展示标准正态累积分布函数:

点击工具栏Markdown选项并运行,将当前单元格转换至其方程结果:

除使用MathJax渲染,利用IPython显示模块的数学函数也可输出相同方程式,如下所示:

上述代码将显示相同方程,如下截图所示:

注意,此单元格是作为一个正常代码单元运行,输出方程会立即显示在该代码单元下面。

同样,也可以显示内联文本的方程。例如以下代码,用$引导一个LaTeX表达式:

以Markdown运行该单元格,将当前单元格转换为:

6.显示图像

若显示诸如JPEG和PNG等格式的图像,需使用IPython中display模块的Image类。运行如下代码显示示例图像:

运行单元格会显示以下结果:

7.插入YouTube视频

IPython包中lib.display模块含有YouTubeVideo函数,可将YouTube上的外部视频嵌入Notebook。例如,运行如下代码:

视频将显示在代码下方,如以下截图所示:

8.使用HTML

Notebook可以显示HTML,HTML常用于展示数据表。如下代码输出了一个带有标题行的两列三行的表:

HTML的功能将使HTML标签作为它的输入字符串参数。最终输出如下:

9.作为HTML表的pandas模块中DataFrame对象

在notebook中,pandas模块允许将DataFrame对象作为HTML表显示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载