Python金融大数据分析(第2版)_【德】伊夫·希尔皮斯科_AZW3_MOBI_EPUB_PDF_电子书(无页码)_【德】伊夫·希尔皮斯科

内容节选

第10章高性能的Python 不要降低预期去屈就性能,而要提升性能满足预期。 ——拉尔夫·马斯顿 有一种长期存在的偏见,认为Python本身是一种相对低效的编程语言,不适合用来处理金融业务的计算任务。除了Python是一种解释型语言之外,出现这种偏见的推理方式通常是:Python处理循环时很慢,金融算法的实现往往需要循环,因此,Python对于金融算法的实现来说太慢了。另一种推理方式是:其他(编译型)语言(如C或者C++)可以快速执行循环,金融算法常常需要循环,因此,这些(编译型)编程语言适合于金融业和金融算法。 必须承认,即便写出合适的Python代码,也有可能执行得很慢——可能对于许多应用领域太慢。本章介绍的是加速金融环境下常见典型任务及算法的方法。本章将介绍,如何明智地使用数据结构、选择合适的实现方法及范型,以及使用正确的高性能软件包。Python甚至可以与编译型编程语言匹敌,这是因为它本身也是编译后执行的。 为此,本章将介绍让代码加速的不同方法。 向量化 利用Python的向量化功能,是前几章已经广泛使用的方法。 动态编译 Numba软件包可以让我们使用LLVM技术来动态地编译纯Python代码。 静态编译 Cython不仅是一个Python软件包,还是一种组合了Python和C的混合语言。例如,它可以使用静态类型声明,静态编译经过调整的代码。 多进程 Python的multiprocessing模块可以简便地实现代码并行执行。 本章介绍如下内容。 循环 本节介绍Python循环及其加速方法。 算法 本节讲解的是常用作性能基准的标准数学算法,例如斐波那契数列的生成。 二叉树 二项式期权定价模型是广泛使用的金融模型,可作为更复杂金融算法的一个案例分析。 蒙特卡洛模拟 类似地,蒙特卡洛模拟在金融实践中广泛用于定价和风险管理。这种算法对计算的要求很高,长期被视为C或者C++语言的“领地”。 pandas递归算法 本节介绍基于金融时间序列数据的递归算法的加速。特别地,它还介绍了计算指数加权移动平均数(EWMA)的不同实现方法。 10.1 循环 本节解决Python的循环问题。任务相当简单:编写一个函数提取“大量”随机数,然后返回平均值。我们感兴趣的是执行时间,这可以用神奇的%time和%timeit函数估算。 10.1.1Python 让我们“慢慢”地开始——原谅我的双关语。在纯Python中,这样的函数可能像下面的average_py():In [1]: import randomIn [2]: def average_py(n): s = 0 ❶ for i in range(n): s += random.random() ❷ return s / n ❸ In [3]: n = 10000000 ❹ In [4]: %time average_py(n) ❺ CPU times: user 1.82 s, sys: 10.4 ms, total: 1.83 s Wall time: 1.93 s Out[4]: 0.5000590124747943 In [5]: %timeit average_py(n) ❻ 1.31 s ± 159 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) In [6]: %time sum([random.random() for _ in range(n)]) / n ❼ CPU times: user 1.55 s, sys: 188 ms, total: 1.74 s Wall time: 1.74 s Out[6]: 0.49987031710661173 ❶ 初始化变量s的值。 ❷ 在s中添加区间(0,1)的均匀分布随机值。 ❸ 返回平均值。 ❹ 定义循环次数。 ❺ 测定函数执行一次的时间。 ❻ 多次测定函数执行时间,得到更可靠的估算。 ❼ 使用列表推导代替函数。 这为以后的其他方法设置了基准。 10.1.2 NumPyNumPy也可以使用专用的数学库,如Intel数学核心库。——原注 NumPy的优势在于其向量化能力。从形式上看,Python级别的循环消失了;循环在更深的一级上,由NumPy提供的优化和预编译例程执行 。average_np()函数利用了这种方法:In [7]: import numpy as npIn [8]: def average_np(n): s = np.random.random(n) ❶ return s.mean() ❷ In [9]: %time average_np(n) CPU times: user 180 ms, sys: 43.2 ms, total: 223 ms Wall......

  1. 信息
  2. 内容提要
  3. O’Reilly Media, Inc.介绍
  4. 前言
  5. 资源与支持
  6. 第1部分 Python与金融
  7. 第1章 为什么将Python用于金融
  8. 第2章 Python基础架构
  9. 第2部分 掌握基础知识
  10. 第3章 数据类型与结构
  11. 第4章 用NumPy进行数值计算
  12. 第5章 pandas数据分析
  13. 第6章 面向对象编程
  14. 第3部分 金融数据科学
  15. 第7章 数据可视化
  16. 第8章 金融时间序列
  17. 第9章 输入/输出操作
  18. 第10章 高性能的Python
  19. 第11章 数学工具
  20. 第12章 推断统计学
  21. 第13章 统计学
  22. 第4部分 算法交易
  23. 第14章 FXCM交易平台
  24. 第15章 交易策略
  25. 第16章 自动化交易
  26. 第5部分 衍生品分析
  27. 第17章 估值框架
  28. 第18章 金融模型的模拟
  29. 第19章 衍生品估值
  30. 第20章 投资组合估值
  31. 第21章 基于市场的估值
  32. 作者介绍
  33. 封面说明
  34. 附录A 日期与时间
  35. 附录B BSM期权类