Python金融大数据分析-BSM、Term Struc、Ho-Lee 与Vasicek模型路径仿真
这一篇的代码是之前蒙特卡洛仿真改过来的,大家都知道,用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 introductions
created by luyixiao 2016/12/29
S0 = 100#initial stock price or other value
r = 0.05#risk-free rate
sigma = 0.25#standard devitaion
T = 2.0#simulation time
I = 10#the number of path you wanna simluate
M = 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很大的,读者可以自己试一下,其实就会相当于比例控制中出现系统的不稳定一样的情况。
Python金融大数据分析-BSM、Term Struc、Ho-Lee 与Vasicek模型路径仿真相关推荐
- 金融科技、算法交易、量化金融必读书:Python金融大数据分析第2版
银行本质上是技术公司. --胡戈•班齐格 近来,Python无疑是金融业的重要策略性技术平台之一.到2018年底,这已经不再是个问题:全世界的金融机构现在都尽最大努力利用Python及其强大的数据分析 ...
- python金融大数据分析笔记----第十章 2(风险测量)
10.4 风险测量 VaR CVaR 10.4.1. 风险价值(Var) VaR(Value at Risk,风险价值或风险溢价)是度量一项投资或投资组合可能产生的下跌风险的方法,它描述的是在一定的概 ...
- 计算机编程书籍-Python金融大数据分析
Python金融大数据分析 [德] 伊夫·希尔皮斯科(Yves Hilpisch) 著,姚军 译 ISBN:9787115521330 包装:平装 开本:16开 正文语种:中文 出版社:人民邮电出版社 ...
- python金融大数据分析视频_Python金融大数据分析 PDF 全书超清版
给大家带来的一篇关于Python相关的电子书资源,介绍了关于Python金融.大数据分析方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小47.8 MB,希尔皮斯科编写,目前豆瓣.亚马逊. ...
- Python金融大数据分析:用pandas处理金融时间序列数据的基础知识
时间是阻止所有事情同时发生的力量.--雷•卡明斯 本节使用的是以CSV文件形式在本地存储的金融数据集形式为本地存储的CSV文件.从技术上讲,CSV文件是包含数据行结构的文本文件,其特征是以逗号分隔单个 ...
- python金融大数据分析 培训
说起金融,大家并不陌生,毕竟和我们的钱包关系紧密.这个"多金"的产业能持续的高速发展,源自科技的赋能. 从ATM到信用卡,从网上银行到移动支付--金融科技正在改变着我们的生活.国内 ...
- Python金融大数据分析——第五章数据可视化(2)金融学图表
5.2 金融学图表 5.2.1 mplfinance matplotlib的finance库包含不少可视化的金融图表,由于几代更新迭代,finance库也发生了变化. 从2.2.0版本前调用: imp ...
- Python金融大数据分析——第四章数据类型和结构
目录 数据类型和结构 4.1.1 整数 4.1.2 浮点数 4.1.3 字符串 4.1.4元祖 4.1.5 列表 4.1.6 控制结构 4.1.7 函数式编程 4.1.8 字典 4.1.9 集合 4. ...
- python金融大数据分析师工资待遇_三年工作经验大佬带你解读 Python金融大数据分析...
内容提要: Python凭借其简单.易读.可扩展性以及拥有巨大而活跃的科学计算社区,在需要分析.处理大量数据的金融行业得到了广泛而迅速的应用,并且成为该行业开发核心应用的首选编程语言.本书提供了使用P ...
最新文章
- Thrift Direct Memory OOM问题解决方法
- AMESim R14 运行时出现许可证错误
- 成功解决 class 'AttributeError' : 'Editor' object has no attribute '_Editor__markerMap'
- How to change max_allowed_packet size
- VC的Win32控制台程序中使用MFC库文件
- Linux定时任务Crontab命令详解
- Java数据库连接池c3p0和druid
- 类型②typeof 操作符
- 成功解决 3DMAX报错:3D MAX application 已停止工作的解决方法
- Backlog Order
- 读书笔记 ---《偷影子的人》
- 苹果公司为什么储备那么多现金?
- margin 外边距合并问题
- 元核云赋能银行业,智能双录产品助力银保业务合规高效响应
- echart 重新加载
- allegro 倒圆角
- python打印运行log
- 低功耗电池摄像机、低功耗摄像机、低功耗WiFi摄像机
- DIY 空气质量检测表
- 2022-03-25 Cynthia SQL Injection