前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python 进阶视频课 - 6. SciPy 下

Python 进阶视频课 - 6. SciPy 下

作者头像
用户5753894
发布2020-12-18 17:15:20
发布2020-12-18 17:15:20
7290
举报
文章被收录于专栏:王的机器王的机器

  1. NumPy 上
  2. NumPy 下
  3. Pandas 上
  4. Pandas 下
  5. SciPy 上

之前基础版的 11 节的目录如下:

  1. 编程概览
  2. 元素型数据
  3. 容器型数据
  4. 流程控制:条件-循环-异常处理
  5. 函数上:低阶函数
  6. 函数下:高阶函数
  7. 类和对象:封装-继承-多态-组合
  8. 字符串专场:格式化和正则化
  9. 解析表达式:简约也简单
  10. 生成器和迭代器:简约不简单
  11. 装饰器:高端不简单

上节主要从插值、数值积分和优化三大功能介绍 scipy,下节从有限差分和线性回归两大功能来介绍 scipy。

偏微分方程有限差分 (finite difference, FD) 算是金融工程中比较难学的,但我会讲里面所有难懂的概念可视化出来。下图可是我用 matplotlib 写代码画出 (敢问谁会这么用心来这么做) 用 FD 求解 PDE 所了解的核心元素:

  • 网格:空间维度的 S (对应标的资产价格),时间维度的 t (对应衍生品到期日)
  • 终止条件:任何金融产品都是支付函数,可设为 PDE 的终止条件
  • 边界条件:很多金融产品的支付在标的很大或很小时会确定比如看涨期权
    • 在标的为零时支付为零
    • 在标的很大时近似为一个远期。
  • 求解格式完全显式 (explicit)、完全隐式 (implicit) 和克莱克尼克尔森 (Crank-Nicolson)

在求解 PDE 时,我只说五句话,配着下面的图 (也是用 matpplotlib 写代码画的)。

  1. 水平面上的灰点是网格
  2. 红线是终值条件 (产品在到期日支付函数)
  3. 两条深青线是边界条件 (产品在标的上下界时的支付)
  4. 蓝点是期权值 (产品在 0 时点的值)
  5. 从 T4 到 T0 一步步解的 (从后往前解)

以上步骤弄明白了,要得到更精确的值,需要把 S 和 t 轴上的点打的更密就完事了,你看,其他书讲的很难懂的 PDE FD 我用几张简图可视化一下就好懂多了吧。

FD 对于定价标的少于 4 个的金融衍生品是个很好的方法:

  • 高效:和蒙特卡洛方法比快很多
  • 稳定:和蒙特卡洛方法比稳很多
  • 普适:对于不同产品整个求解过程几乎一样,不同的就是设定不同的上下界、终止条件和边界条件。

在 PDE FD 中用到了稀疏矩阵 (sparse matrix),这个算是 SciPy 中最有内容的知识点之一。和稠密矩阵相比,稀疏矩阵的最大好处就是节省大量的内存空间来储存零。稀疏矩阵本质上还是矩阵,只不过多数位置是空的,那么存储所有的 0 非常浪费。稀疏矩阵的存储机制有很多种 (列出常用的五种):

  • COO (Coordinate List Format):座标格式,容易创建但是不便于矩阵计算,用 coo_matrix
  • CSR (Compressed Sparse Row): 压缩行格式,不容易创建但便于矩阵计算,用 csr_matri
  • CSC (Compressed Sparse Column): 压缩列格式,不容易创建但便于矩阵计算,用 csc_matrix
  • LIL (List of List): 内嵌列表格式,支持切片但也不便于矩阵计算,用 lil_matrix
  • DIA (Diagnoal):对角线格式,适合矩阵计算,用 dia_matrix

五种稀疏矩阵的动图如下:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 王的机器 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档