Python 进阶视频课 - 6. SciPy 下

这是 Python 进阶课的第六节 - SciPy 下,进阶课的目录如下:

  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

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


付费用户(付 1 赠 1)可以获得:

  • 观看课程视频 (85 分钟)

  • Python 代码 (Jupyter Notebook)

  • 偏微分方程有限差分 PDF

Jupyter Notebook

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值