如果未做特別說明,文中的程序都是 Python3 代碼。
QuantLib 金融計算——隨機過程之概述
載入模塊
import QuantLib as ql
print(ql.__version__)
1.12
框架
隨機過程是金融工程中的一個核心概念,是溝通理論分析和計算實踐的樞紐。quantlib-python 提供了一組成體系的類架構用於描述實際中最常見到的幾種隨機過程,以 1.12 版本為例:
C++ 版本的實現提供了更多具體的隨機過程。
其中最根本的基類是 StochasticProcess
,然后衍生出三大類別:
HestonProcess
:特殊的二維隨機過程——Heston 過程;BatesProcess
:一種帶跳躍的 Heston 過程;
StochasticProcessArray
:描述一般的多維隨機過程;StochasticProcess1D
:描述常用的若干一維隨機過程。GeneralizedBlackScholesProcess
:Black-Scholes 框架下四種最常用的隨機過程BlackScholesProcess
:\(d \ln S ( t ) = \left( r ( t ) - \frac { \sigma ( t , S ) ^ { 2 } } { 2 } \right) d t + \sigma d W _ { t }\)BlackScholesMertonProcess
:\(d \ln S ( t , S ) = \left( r ( t ) - q ( t ) - \frac { \sigma ( t , S ) ^ { 2 } } { 2 } \right) d t + \sigma d W _ { t }\)BlackProcess
:\(d \ln S ( t ) = - \frac { \sigma ( t , S ) ^ { 2 } } { 2 } d t + \sigma d W _ { t }\)GarmanKohlagenProcess
:\(d \ln S ( t ) = \left( r ( t ) - r _ { f } ( t ) - \frac { \sigma ( t , S ) ^ { 2 } } { 2 } \right) d t + \sigma d W _ { t }\)
VarianceGammaProcess
Merton76Process
GeometricBrownianMotionProcess
:\(d S ( t , S ) = \mu S d t + \sigma S d W _ { t }\)HullWhiteProcess
HullWhiteForwardProcess
GsrProcess
基類 StochasticProcess
模擬一個 d 維 Ito 過程:
\[d \mathrm S_t = \mu \left( t , S_t \right) \mathrm d t + \sigma \left( t , \mathrm S_t \right) d \mathrm { W }_t \]
quantlib-python 默認的離散化方法是 Euler 方法:
\[S \left( t + \Delta t \right) = \mu \left( t , S_t \right) \Delta t + \sigma \left( t , S_t \right) \Delta W_t \]
用法與接口
隨機過程類的用法基本上是首先初始化一個實例,然后並將其傳遞給其他類的實例,這些類的實例從中提取所需的變量。一個例子是普通的 Black-Scholes 期權定價器,它從隨機過程中檢索出波動率。另一個例子是蒙特卡羅定價框架中的路徑生成器,需要隨機過程的參數,生成對應的路徑。
StochasticProcess
提供下列成員函數:
size()
:整數,返回隨機過程的維度;initialValues()
:Array
,返回數組 \(S_0\);drift(t, x)
:Array
,返回數組 \(\mu(t,S_t)\);t
和x
分別是浮點數和Array
;diffusion(t, x)
:Array
,返回數組 \(\sigma(t,S_t)\);t
和x
分別是浮點數和Array
;expectation(t0, x0, dt)
:Array
,根據具體的離散方法返回數組 \(E \left( S_{ t_0 + \Delta t} | S_{ t_0 } = x_0 \right)\);t0
、dt
是浮點數,x0
是Array
;stdDeviation(t0, x0, dt)
:Matrix
,根據具體的離散方法返回標准差矩陣 \(Std \left( S_{ t_0 + \Delta t} | S_{ t_0 } = x_0 \right)\);t0
、dt
是浮點數,x0
是Array
;covariance(t0, x0, dt)
:Matrix
,根據具體的離散方法返回協方差矩陣 \(Cov \left( S_{ t_0 + \Delta t} | S_{ t_0 } = x_0 \right)\);t0
、dt
是浮點數,x0
是Array
;evolve(t0, x0, dt, dw)
:Array
,根據 \(S_{ t_0}\) 和 Brownian 運動增量 \(\Delta W\) 產生 \(S_{ t_0 + \Delta t}\),默認返回 \(E \left( \mathrm S_{ t_0 + \Delta t } | S_{ t_0 } \right) + \sigma \left( \mathrm S_{ t_0 + \Delta t } | S_{ t_0 } \right) \Delta \mathrm { W }\),其中 \(\sigma\) 是標准差(矩陣).
對於 StochasticProcess1D
類,該類繼承自 StochasticProcess
類,提供了從 StochasticProcess
派生的所有函數,但這些函數使用浮點數對象而不是 Array
和 Matrix
對象。