IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 金融过程的模拟(一):CIR 过程的模拟 -> 正文阅读

[数据结构与算法]金融过程的模拟(一):CIR 过程的模拟

????????CIR过程(平方根扩散过程)是一类均值回归过程,它由Cox、Ingersoll和Ross(1985)提出,在金融中常用于建立短期利率或者波动性过程的模型。它的SDE公式如下:

dx_t=k(\theta-x_t)dt+\sigma\sqrt{x_t}dB_t

????????其中,x_t代表t时刻的短期利率水平,k代表均值回归的速度( the speed of mean reversion), \theta代表了长期均值水平(long-term mean),\sigma恒定波动率(volatility)。

????????CIR过程相比于OU过程的一个好处是利率能保持非负(满足一定条件下,严格大于零)。

????????本文大致分为以下三个部分: 1. CIR过程的精确格式模拟;2. CIR的近似格式模拟;3.两种格式的比较。

1. CIR过程的精确模拟

????????CIR过程中的x_t的转移概率服从非中心化的卡方过程,所以CIR的精确离散化公式如下:

x_t=\frac{\sigma^2(1-e^{-k\Delta t})}{4k}\chi^2(\frac{4ke^{-k\Delta t}}{\sigma^2(1-e^{-k\Delta t})}x_{t-1})

? ? ? ? python代码如下:

def CIR_simulation_exact():
    x = np.zeros((M+1,I))
    x[0] = x0
    for t in range(1, M+1):
        df = 4 * theta * kappa / sigma ** 2
        c = (sigma**2 * (1 - np.exp(-kappa*dt))) / (4 * kappa)
        nc = np.exp(-kappa * dt) / c * x[t-1]
        x[t] = c * npr.noncentral_chisquare(df, nc, size = I)
    return x

????????我们设置k=3,theta=0.02,sigma=0.1,X_0=0.04,T=1.0,dt=T/1000,产生了10000条模拟路径(后面实验的参数都一样),则在t=T时的直方图如下:

?????????选取前10条路径如下:

????????综上,可以看出CIR呈现负的漂移(因为初值X_0=0.04>theta=0.02),并均值复归于0.02。 ?

2. CIR过程的近似模拟

????????我们采用欧拉离散化格式即

x_t=x_{t-1}+k(\theta-x_{t-1})\Delta t+\sigma\sqrt{x_{t-1}}\sqrt{\Delta t}\epsilon_t

????????其中\epsilon_t服从相互独立的标准正态分布,且为保证x_t非负,我们取x_t=max\{0,x_t\}

? ? ? ? python代码如下:

def CIR_simulation_euler():
    xh = np.zeros((M+1,I))
    x = np.zeros_like(xh)
    xh[0] = x0
    x[0] = x0
    for t in range(1, M+1):
        xh[t] = (xh[t-1] + 
                 kappa*(theta - np.maximum(xh[t-1],0))*dt + 
                 sigma * np.sqrt(np.maximum(xh[t-1],0)) * math.sqrt(dt) * npr.standard_normal(I))
    x = np.maximum(xh,0)
    return x

? ? ? ? 与1中相同,产生10000条模拟路径,结果如下:

?

? ? ? ? ?从图上可以看出,近似模拟基本和精确模拟一致,生成的路径都是负漂移且收敛于0.02。

3.?精确模拟和近似模拟的比较

? ? ? ? 上面已经从直观上说明近似模拟能产生和精确模拟相似的结果,下面定量地比较两种模拟方式。

  • 从主要地统计特征来看

? ? ? ? 比较两次产生地模拟路径在t=T时地主要统计量结果如下:

STATISTICEXACTEULER
size10000.00010000.000
min0.0040.004
max0.0540.060
mean0.0210.021
std0.0060.006
skew0.5610.579
kurtosis0.4510.458

? ? ? ? 可以看出,近似地欧拉格式的模拟方法表现出了很好的统计属性。

  • 从模拟地执行速度或时间来看

? ? ? ? 我们生成了100000条模拟路径,比较两种方法的执行速度,结果如下:

EXACTEULAR
time6.66 s

3.38 s

????????可以看出,精确模拟的时间几乎时近似模拟的两倍,这主要是由于精确模拟中的非中心卡方分布采样的计算要求高于标准正态分布的采样。

? ? ? ? 综上,精确模拟需要花费近似模拟大概两倍的时间,而实际结果几乎一样。

参考教材

Simulation and Inference for Stochastic Differential Equations?With R Examples.

Python for Finance,Second Edition.

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 17:01:12  更:2021-12-02 17:01:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 14:31:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码