首页 > 编程语言 > 详细

python数据可视化分析速成笔记_2-2_布朗运动/几何布朗运动(伊藤过程)实现的demo

时间:2020-05-05 10:31:45      阅读:464      评论:0      收藏:0      [点我收藏+]

第二天/第三天

 

目标_不分先后:

 实践部分:   

  实际上如果是熟悉matlab操作的大神们应该改会发现这些包和matlab里面的是相通的

  python 大杂烩实锤

  • 重点
    实现问题训练:
    • 简单的方程求解曲线参数,模拟图像
    • 最小二乘法拟合,回归模型,

   了解微分方程模拟

    • 解常微分方程,模拟图像
    • 解偏微分方程,模拟图像

    时间关系,看看实现例子,然后自己写

    • 布朗运动
    • 维纳过程
    • 几何布朗运动(ito模拟)
  • 运用以上模型直接模拟归奥价格走势

  理论部分:  

  • 复习,推导,理解,几何布朗运动模型,伊藤引理(如果时间不够,跳过这一步)
    1. 期权与股票的性质—
    2. 期权的交易策略
    3. 期权二叉树(BSM模型原理的基础和推导就是基于期权二叉树模拟的随机游走过程

              知乎专栏——AI和金融模型——第一篇文章开始

    重点:

    1. 维纳过程和伊藤引理
    2. BSM,几何布朗运动与布朗运动

时间:24h

 反馈:

  • 总体任务完成情况:
    • 大致完成了基本过程,还剩下一个ito没有实现推导,理论没有完全看完,
  • 难点:
    • 主要是函数用起来不熟练,而且对函数的目的不了解
    • 微积分不熟,对公式的本质,推导过程理解很浅薄。

一开始不知道用函数怎么实现,还以为布朗运动模拟运动的模拟要积分,实际上运用的是正态分布+时间函数求和,

因为时间点是离散的,用定义法求积分,

dx = a*dt  + b*dz,∑a*dt = T,dz=e*sqrt(dt),e~(0,1),∑dz=(sqrt(dt))*∑ e

伊藤引理也是这样,只是它的积分式是微分方程,由公式:dS/S=u* dt+e* o* sqrt(dt),求 S ,需要用微分方程来推导

最后会得到几何布朗运动的基本公式

 

  • 收获与反思:
    • 现在可以实现布朗运动/几何布朗运动模拟股市图像,数据还没有找
    • 更加深刻地理解了公式地推导过程
    • 加深了对正态分布的理解,复习了微分方程
    • 实践带动理解
    • 背函数啥的不如直接看大佬们的代码,一行一行理解,反正用的多的就那几个

代码实现:

技术分享图片
 1 # -*- coding: utf-8 -*-
 2 """
 3 Created on Mon May  4 20:43:06 2020
 4 
 5 @author: 10913
 6 """
 7 import numpy as np
 8 import matplotlib.pyplot as plt
 9 
10 ‘‘‘
11 
12 T=10
13 dt=0.1
14 n=round(T/dt)#dimension
15 t=np.linspace(0,T,n)
16 e=np.random.standard_normal(size=n)
17 z=np.cumsum(e)*np.sqrt(dt)
18 a=0.1
19 b=0.2
20 x=a*t+b*z;
21 plt.plot(t,x)
22 plt.show()
23 
24 
25 ‘‘‘
26 
27 ‘‘‘
28 几何布朗运动:
29     St=S0*exp(ut)
30     St=S0*exp(u t+o e sqrt(dt))
31     ut求和===T
32     o e sqrt(dt)求和为o cumsum(e)*np.sqrt(dt)
33     St=S0*exp(a t+b z)
34     随机变量e服从标准正态分布 
35 
36 ‘‘‘
37 D=250   #250个交易日
38 T=1.0   #总时间1年
39 dt=T/D   #单位时间
40 s0=100   #初始价格
41 i=10   #算i-1次
42 n=D+1   #为了能够从0开始     而不是[1,250]
43 st=np.zeros((i,n))
44 
45 a=0.15   #平均收益率--连续复利的收益率
46 b=0.3   #收益率标准差
47 #dimension
48 plt.subplot(212)
49 for g in range(1, i):
50     t=np.linspace(0,D,n)
51     e=np.random.standard_normal(size=n)     #随机变量e
52     z=np.cumsum(e)*np.sqrt(dt)              #随机变量e和时间t共同决定的变量z
53     x=a*T+b*z;                              #几何布朗运动得到的x波动率
54     st[g]=s0*np.exp(x)                 #如果用z就是标准布朗运动
55     #st[g][0]=s0                      #起点波动率不为0....
56     plt.plot(t,st[g],label=St +str(g))
57     
58 plt.legend()
59 
60 plt.show()
61 ‘‘‘
62 另一种写法
63 
64 S=np.zeros((M+1,I))
65 
66 S[0]=S0 #定义S[0]=S0
67 
68 for t in range(1,M+1):
69 
70     S[t]=S[t-1]*np.exp(mean*dt+sigma*np.sqrt(dt)*np.random.standard_normal(I))
71 
72 ‘‘‘
View Code

执行结果:

技术分享图片

 

python数据可视化分析速成笔记_2-2_布朗运动/几何布朗运动(伊藤过程)实现的demo

原文:https://www.cnblogs.com/KID-yln/p/12823748.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!