python數據可視化分析速成筆記_2-2_布朗運動/幾何布朗運動(伊藤過程)實現的demo

次日/第三天

 

目標_不分前後:

 實踐部分:   python

  實際上若是是熟悉matlab操做的大神們應該改會發現這些包和matlab裏面的是相通的dom

  python 大雜燴實錘ide

  • 重點
    實現問題訓練:
    • 簡單的方程求解曲線參數,模擬圖像
    • 最小二乘法擬合,迴歸模型,

   瞭解微分方程模擬函數

    • 解常微分方程,模擬圖像
    • 解偏微分方程,模擬圖像

    時間關係,看看實現例子,而後本身寫spa

    • 布朗運動
    • 維納過程
    • 幾何布朗運動(ito模擬)
  • 運用以上模型直接模擬歸奧價格走勢

  理論部分:  .net

  • 複習,推導,理解,幾何布朗運動模型,伊藤引理(若是時間不夠,跳過這一步)
    1. 期權與股票的性質—
    2. 期權的交易策略
    3. 期權二叉樹(BSM模型原理的基礎和推導就是基於期權二叉樹模擬的隨機遊走過程

              知乎專欄——AI和金融模型——第一篇文章開始code

    重點:orm

    1. 維納過程和伊藤引理
    2. BSM,幾何布朗運動與布朗運動

時間:24h

 反饋:

  • 整體任務完成狀況:
    • 大體完成了基本過程,還剩下一個ito沒有實現推導,理論沒有徹底看完,
  • 難點:
    • 主要是函數用起來不熟練,並且對函數的目的不瞭解
    • 微積分不熟,對公式的本質,推導過程理解很淺薄。

一開始不知道用函數怎麼實現,還覺得布朗運動模擬運動的模擬要積分,實際上運用的是正態分佈+時間函數求和,blog

由於時間點是離散的,用定義法求積分,ip

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 
 8 
 9 import numpy as np
10 import matplotlib.pyplot as plt
11 
12 
13 
14 '''
15 
16 
17 幾何布朗運動:
18     St=S0*exp(ut)
19     St=S0*exp(u t+o e sqrt(dt))
20     
21     St=S0*exp(a t+b z)
22 
23 
24 '''
25 D=250   #250個交易日
26 T=1.0   #總時間1年
27 dt=T/D   #單位時間
28 
29 '''
30 另外一種寫法
31 S=np.zeros((M+1,I))
32 
33 S[0]=S0 #定義S[0]=S0
34 
35 for t in range(1,M+1):
36 
37     S[t]=S[t-1]*np.exp(mean*dt+sigma*np.sqrt(dt)*np.random.standard_normal(I))
38 
39 '''
40 s0=100   #初始價格
41 i=4
42 st=np.zeros((i,D))
43 st[0]=s0
44 a=0.15
45 b=0.3
46 n=round(T/dt)#dimension
47 plt.subplot(212)
48 for g in range(1, i):
49     t=np.linspace(0,T,n)
50     e=np.random.standard_normal(size=n)
51     z=np.cumsum(e)*np.sqrt(dt)
52     x=a*t+b*z;
53     st[g]=st[0]*np.exp(z)
54     
55     plt.plot(t,st[g],label='st'+str(g))
56     
57 
58 plt.legend()
59 plt.show()
View Code

 

執行結果:

相關文章
相關標籤/搜索