社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python 进阶视频课 - 6. SciPy 下

王的机器 • 4 年前 • 1014 次点击  

这是 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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/100011
 
1014 次点击