Python金融大数据分析-BSM、Term Struc、Ho-Lee 与Vasicek模型路径仿真
来源:互联网 发布:linux查看集群 硬盘 编辑:程序博客网 时间:2024/06/04 19:39
这一篇的代码是之前蒙特卡洛仿真改过来的,大家都知道,用MC绘制路径是一件很好玩的事情。在学习FRM的过程中,遇到了几种利率模型,Term Structure、Ho-Lee与Vasicek。
这里我们不讨论BSM,只是作为程序的一部分而已,后面仿真也并不用到。
第一个模型,Term structure model with no drift,也就是,没有趋势的利率波动模型,笔者不知道这里是错误的省略了dt后面的单位正态分布函数,还是故意就是这样的,反正笔者是加上去了,以后如果觉得应该是没有的,那么再来修正吧。
第二个模型就是带趋势的了,但是趋势是恒定的,如果趋势是不恒定的,那么就是Ho-Lee模型。
最后是大名鼎鼎的Vasicek模型,其实就是一种均值回归模型。
整个代码如下:
# -*- coding: utf-8 -*-import numpy as np import pandas as pd import matplotlib.pyplot as plt import scipy.stats as scs '''#initial parameters and introductionscreated by luyixiao 2016/12/29S0 = 100#initial stock price or other value r = 0.05#risk-free ratesigma = 0.25#standard devitaion T = 2.0#simulation timeI = 10#the number of path you wanna simluateM = 50#the step you wanna simulate'''def modelSimulation(modelType,S0 = 100,r = 0.05,sigma = 0.25,T = 2.0,I = 10,M = 50,lamda = 0.05,k = 0.1,theta = 102): dt = T/M S = np.zeros((M + 1,I)) S[0] = S0 print S[0] if modelType == 'BSM': for t in range(1,M+1): S[t] = S[t-1]*np.exp((r-0.5*sigma**2)*dt+sigma*np.sqrt(dt)*np.random.standard_normal(I)) if modelType == 'TSnD': for t in range(1,M+1): S[t] = S[t-1]+np.sign(np.random.uniform(-1,1,I))*sigma*np.sqrt(dt)*np.random.standard_normal(I) if modelType == 'TSwD': for t in range(1,M+1): S[t] = S[t-1]+lamda*np.sqrt(dt)+np.sign(np.random.uniform(-1,1,I))*sigma*np.sqrt(dt)*np.random.standard_normal(I) if modelType == 'HoLee': for t in range(1,M+1): lamdan = np.random.uniform(0.01,0.09) S[t] = S[t-1]+lamdan*np.sqrt(dt)+np.sign(np.random.uniform(-1,1,I))*sigma*np.sqrt(dt)*np.random.standard_normal(I) if modelType == 'Vasicek': for t in range(1,M+1): S[t] = S[t-1]+k*(theta-S[t-1])+sigma*np.sqrt(dt)*np.random.standard_normal(I) plt.plot(S[:,:],lw = 1.5) plt.xlabel('time') plt.ylabel('price') plt.title(modelType) plt.show() modelSimulation('TSnD') modelSimulation('TSwD') modelSimulation('HoLee') modelSimulation('Vasicek')最后能够显示的效果是这样的:
相信这里大家就能看出每个模型的区别了。
最后我们讨论一下Vasicek模型的参数k,也就是均值回归的速度。
for i in range(0,5): modelSimulation('Vasicek',k = 0.1*i,theta=100)我们来看一下不同的k值下的路径图吧。
我们看到,k值越大,回归的速度越快,那如果K很大的,读者可以自己试一下,其实就会相当于比例控制中出现系统的不稳定一样的情况。
0 0
- Python金融大数据分析-BSM、Term Struc、Ho-Lee 与Vasicek模型路径仿真
- Python金融大数据分析-蒙特卡洛仿真
- Python金融大数据分析
- Python金融大数据分析-数据获取与简单处理
- Python金融大数据分析-回归分析
- Python金融大数据分析-PCA分析
- Python金融大数据分析-正态性检验
- 《Python 金融大数据分析》记录
- 大数据分析在金融行业的应用与趋势
- Python金融应用编程(数据分析、定价与量化投资)
- 金融大数据信用评分模型解析
- 金融风控-->客户流失预警模型-->金融数据分析
- 大数据分析与生态系统论坛:金融、电网、容器、数据库、图计算等共谱大数据生态
- 《Python金融大数据分析》7.1.1 将对象写入磁盘
- python金融数据分析1:tushare使用
- 云计算与大数据 金融行业
- 金融时间序列分析:5. AR模型实例(Python)
- 金融时间序列分析:8. MA模型实例(Python)
- PHP的运行机制与原理(底层)
- JSP解析JSON对象
- 决策树ID3算法-matlab实现
- swr_convert函数介绍
- OpenCV2.0.0移植到ARM9(一)(JZ2440----S3c2440)
- Python金融大数据分析-BSM、Term Struc、Ho-Lee 与Vasicek模型路径仿真
- 欢迎使用CSDN-markdown编辑器
- Lambda表达式详解
- javascript知识结构图
- 测试小故事11:登录与登陆
- C#编写的UDP收发数据 单独的接收数据程序可以用 但是写的接收和发送的不好使
- linux----查找文件 命令简述
- NP完全问题
- CSS仿真扑克牌