QuantLib 金融計算——隨機過程之概述

若是未作特別說明,文中的程序都是 Python3 代碼。數組

QuantLib 金融計算——隨機過程之概述

載入模塊架構

import QuantLib as ql

print(ql.__version__)
1.12

框架

隨機過程是金融工程中的一個核心概念,是溝通理論分析和計算實踐的樞紐。quantlib-python 提供了一組成體系的類架構用於描述實際中最多見到的幾種隨機過程,以 1.12 版本爲例:框架

C++ 版本的實現提供了更多具體的隨機過程。函數

其中最根本的基類是 StochasticProcess,而後衍生出三大類別:spa

  • 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 過程:code

\[ 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 方法:blog

\[ 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)\)tx 分別是浮點數和 Array
  • diffusion(t, x)Array,返回數組 \(\sigma(t,S_t)\)tx 分別是浮點數和 Array
  • expectation(t0, x0, dt)Array,根據具體的離散方法返回數組 \(E \left( S_{ t_0 + \Delta t} | S_{ t_0 } = x_0 \right)\)t0dt 是浮點數,x0Array
  • stdDeviation(t0, x0, dt)Matrix,根據具體的離散方法返回標準差矩陣 \(Std \left( S_{ t_0 + \Delta t} | S_{ t_0 } = x_0 \right)\)t0dt 是浮點數,x0Array
  • covariance(t0, x0, dt)Matrix,根據具體的離散方法返回協方差矩陣 \(Cov \left( S_{ t_0 + \Delta t} | S_{ t_0 } = x_0 \right)\)t0dt 是浮點數,x0Array
  • 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 派生的全部函數,但這些函數使用浮點數對象而不是 ArrayMatrix 對象。

相關文章
相關標籤/搜索