리소스 로딩... 로딩...

오른슈타인-울렌베크 시뮬레이션을 Python로 수행합니다.

저자:FMZ~리디아, 창작: 2024-10-22 10:14:59, 업데이트: 2024-10-22 10:16:04

이 문서에서는 Ornstein-Uhlenbeck 프로세스를 개요하고, 그 수학적 공식을 설명하고, Python을 사용하여 구현하고 시뮬레이션하며, 양적 금융 및 시스템 거래의 실제 응용 분야에 대해 논의합니다. 우리는 더 고급한 무작위 프로세스 모델인 Ornstein-Uhlenbeck (OU) 프로세스를 사용합니다. 이 모델은 평형 회귀 행동을 나타내는 시간 순서를 모델링하는 데 사용될 수 있습니다. 이것은 유래물 가격에 대한 금리 모델링과 거래 시 시스템 거래를 알고리즘으로 수행하는 데 특히 유용합니다.

오른슈타인-울렌베크 과정은 무엇일까요?

오른슈타인-울렌베크 프로세스는 평위 회귀 행동을 모델링하는 연속 시간적 무작위 프로세스이다. 즉, 무한히 유동할 수 있는 표준 무작위 탐색이나 브라운 운동과는 달리, OU 프로세스는 시간이 지남에 따라 장기 평균으로 회복되는 경향이 있다. 수학적으로 OU 프로세스는 이러한 평위 회귀 행동을 제어하는 특정 무작위 미분 방정식의 (SDE) 해결책이다. OU 프로세스의 SDE는 다음과 같은 공식으로 주어진다.

img

여기서 Xt는 시간 t의 무작위 과정을 나타내고, μ는 장기 평균,θ는 평균 회귀율,δ는 변동성,dWt는 비너 과정 또는 표준 브라운 운동이다.

역사적 배경과 응용

오른슈타인-울렌베크 과정은 1930년 레오나르드 오른슈타인 (Leonard Ornstein) 와 조지 유진 울렌베크 (George Eugene Uhlenbeck) 가 모방한 바와 같이 마찰이 있는 상태에서 브라운 운동에 따른 입자의 속도를 모방하기 위해 처음 제안되었다. 시간이 지남에 따라, 그 실용성은 물리학을 훨씬 뛰어넘어 생물학, 화학, 경제학, 금융학 등 다양한 분야에 적용되었다.

양적 금융에서, OU 프로세스는 평균 회귀 행동을 나타내는 현상을 모델링하는 데 특히 유용하다. 대표적인 예로는 이자율, 환율, 금융 시장의 변동성이 있다. 예를 들어, 인기있는 이자율 모델인 바시섹 모델은 OU 프로세스에서 직접 추론되었다.

양적 금융의 중요성

오른슈타인-울렌베크 과정은 양적 금융에서 중요하며, 그 이유는 다음과 같다. 그것의 평균적 회귀 성질은 금융 변수들을 모델링하는데 자연스러운 선택이 되기 때문에, 이 금융 변수들은 무작위적인 행보를 나타내지 않고 안정적인 장기 평균값의 변동을 중심으로 나타난다. 이 특성은 금리율 모델링에 중요하며, 여기서 평균적 회귀는 중앙은행이 장기적으로 안정적인 금리율에 미치는 영향을 반영한다.

또한, OU 프로세스는 자산 가격 모델 (추산물 평가 포함) 및 위험 관리 전략에 사용된다. 그것은 또한 Cox-Ingersoll-Ross (CIR) 모델과 같은 더 복잡한 모델의 구성 요소로 사용될 수 있다. 이 모델은 OU 프로세스를 확장하여 비부진한 금리를 모델링한다.

주요 특징과 직관

오른슈타인-울렌베크 과정의 주요 특징은 다음과 같이 요약될 수 있다.

  • 평균값 회귀:OU 프로세스는 장기 평균으로 돌아가는 경향이 있다. 이것은 브라운 운동과 같은 프로세스와 확연한 대조를 나타냅니다.
  • 유동성:변수δ는 제어 과정의 무작위성 또는 변동성 수준이다. 변동성이 높을수록 과정이 회귀하기 전의 평균값의 편차가 커진다.
  • 회귀 속도:변수 θ는 과정의 회귀 평균의 속도를 결정한다.
  • 안정성:OU 프로세스는 평탄하며, 이는 그 통계적 특성이 시간이 지남에 따라 변하지 않는다는 것을 의미합니다. 이것은 금융 분야에서 안정적인 시스템을 모델링하는 데 중요합니다.

직관적으로 볼 때, 당신은 Ornstein-Uhlenbeck 과정을 평균을 중심으로 팽창하는 근의 행동을 모델링하는 것으로 볼 수 있다. 이 과정은 무작위 변동으로 평준으로부터 벗어날 수 있지만, 근의 력 (평준 회귀와 유사한) 은 결국 평준으로 돌아가는 것을 보장한다.

다른 무작위 과정과 비교

OU 프로세스는 다양한 금융 현상의 모델링과 밀접하게 연관되어 있기 때문에 종종 다른 무작위 프로세스와 비교된다. 브라운 운동과 기하학적 브라운 운동 (GBM) 과는 달리 OU 프로세스는 명백한 평형 회귀 행동을 가지고 있다. 이는 변수가 안정적인 평형 변동을 중심으로 변하는 시나리오를 모델링하는 데 더 적합하게 만든다.

OU 프로세스는 주식 가격 모델링에 일반적으로 사용되는 GBM에 비해 지수성장을 나타내지 않고 그 평균값의 변동을 중심으로 나타냅니다. OU 프로세스는 시간이 지남에 따라 증가하는 양을 모델링하는 데 더 적합하며, OU 프로세스는 평균값 회귀 특성을 보여주는 변수를 모델링하는 데 적합합니다.

양적 금융의 예

오른슈타인-울렌베크 프로세스는 금융 분야에서 광범위하게 적용되고 있으며, 특히 평균 회귀가 핵심적인 특징인 모델링 시나리오에서 적용된다. 아래에는 가장 일반적인 사용 사례를 논의할 것이다.

이자율 모델링

OU 프로세스의 가장 대표적인 응용 분야는 특히 바시섹 모델의 틀 안에서 금리를 모델링하는 것이다. 바시섹 모델은 금리가 OU 프로세스를 따르는 것을 가정하고, 즉 금리가 시간이 지남에 따라 장기 평균으로 돌아가는 것을 의미한다. 이 특징은 정확한 모형금리 행동에 중요합니다. 왜냐하면 금리는 종종 무한히 변동하지 않고 경제 조건에 영향을 받는 평균 수준 근처에 변동하기 때문이다.

자산 평가

OU 프로세스는 일반적으로 자산 가격, 특히 고정 수익 증권에서 채권 수익률의 진화를 모방하는 데 사용됩니다. OU 프로세스의 평균 회귀 성질은 수익률이 역사적 평균에서 너무 멀리 벗어나지 않도록 보장하며 관찰 된 시장 행동과 일치합니다. OU 프로세스는 채권 및 다른 비율 민감한 도구의 가격에 귀중한 도구가됩니다.

짝짓기 전략

쌍거래는 시장중립적인 전략으로, 두 가지 관련 자산에 대한 상쇄 포지션을 구축하는 것을 포함한다. 이 경우, OU 프로세스는 두 가지 자산 사이의 가격 차이를 모델링할 수 있기 때문에 특히 유용하며, 가격 차이는 일반적으로 평균 회귀이다. OU 프로세스를 사용하여 가격 차이를 모델링함으로써, 거래자는 가격 차이는 평균에서 벗어나면 수익성 입출점과 출점을 확인하고, 회귀 평균을 예측하여 거래 신호를 생성할 수 있다.

예를 들어, 두 개의 선물 사이의 가격 차이점이 한 가지 문턱을 초과하는 경우, 거래자는 우수한 성능을 보이는 선물과 더 나쁜 성능을 보이는 선물을 공략하고, 가격 차이점이 역사 평균 수준으로 회복되기를 기대하여, 반전이 발생했을 때 수익을 올릴 수 있다.

Ornstein-Uhlenbeck SDE의 해답

오른슈타인-울렌베크 과정의 미분방정식 공식은 그 해의 기초이다. 이 SDE를 해내기 위해 우리는 인그리그 인팩토리를 사용한다. SDE를 다시 써보자:

img

首先,我们将两边都乘以积分因子/upload/asset/28dfe9abfb54772651590.png:

img

请注意,如果我们在两边都加上/upload/asset/28dd9f7b41b5a6d244b0e.png,那么左边可以表示为乘积的差分:

img

이 두 변을 0에서 t로 나누면

img

이것은 Ornstein-Uhlenbeck SDE의 일반적인 해법이다.

위의 명백한 해결책은 몇 가지 중요한 의미를 가지고 있습니다.img초기 값이 시간이 지남에 따라 쇠퇴하는 것을 나타냅니다. 이 과정이 어떻게 점차적으로 시작점을 잊어 버리는지 나타냅니다.img과정이 시간이 지남에 따라 평균값μ에 향하는 것을 나타냅니다. 세 번째 항은 무작위성을 도입하고 있으며, 여기에 와이너 과정에 관련된 분자가 무작위 변동을 설명합니다.

이 솔루션은 Brownian 운동에 의해 구동되는 유작 분자와의 확실성 평형 회귀 행동 사이의 균형을 강조한다. 이 솔루션을 이해하는 것은 OU 프로세스를 효과적으로 시뮬레이션하는 데 중요합니다.

다른 무작위 과정과의 연결

오른슈타인-울렌베크 과정은 다른 유명한 무작위 과정들 (브라운 운동과 바시섹 모델 등) 과 몇 가지 중요한 연관성을 가지고 있다.

브라운 운동과의 관계

오른슈타인-울렌베크 과정은 브라운 운동의 평균 회귀판으로 볼 수 있다. 브라운 운동은 독립적 인 인크리멘트를 가진, 회귀 평균을 가지지 않는 추세를 묘사하는 과정이며, OU 과정은 유동항을 사용하여 브라운 운동을 수정하여 평균 회귀를 도입하여 과정을 중심값으로 끌어당기는 과정이다. 수학적으로, 만약 우리가 θ=0을 설정한다면, OU 과정은 변동이 있는 표준 브라운 운동으로 단순화된다:

img

따라서, 브라운 운동은 OU 과정의 특수한 예이며, 평균 회귀의 부재에 대응한다.

바시체크 모델과의 관계

바시섹 모델은 ਵਿਆ율 모형에 널리 사용되고 있으며, 본질적으로 오른슈타인-울렌베크 프로세스의 이율 진화에 대한 응용이다. 바시섹 모델은 이율이 OU 프로세스를 따르는 것을 가정하며, SDE는 다음과 같이 정의된다.

img

이 중 r는 단기 금리를 나타내고, 변수 θ, μ,δ의 해석은 OU 과정에서의 해석과 유사하다. 바시섹 모델은 평균 회귀 금리 경로를 생성할 수 있으며, 이는 금융 모델링에서 주요 장점 중 하나입니다.

이러한 관계를 이해하는 것은 다양한 환경에서, 특히 금융 분야에서 OU 프로세스가 어떻게 사용되는지 더 폭넓게 이해하도록 도와줍니다. 우리는 다음의 응용 사례에 대해 논의 할 때 이러한 연결의 실제 의미를 탐구 할 것입니다.

오른스타인-울렌베크 프로세스를 파이썬으로 시뮬레이션합니다

이 섹션에서는 Ornstein-Uhlenbeck (OU) 프로세스를 모방하기 위해 Python을 사용하는 방법을 살펴볼 것입니다. 이것은 OU 프로세스를 정의하는 무작위 미분 방정식을 (SDE) Euler-Maruyama 이분법을 사용하여 이분해하는 것을 포함합니다.

SDE의 분산

SDE의 수학 공식을 다시 살펴보고 각각의 용어를 정리해보죠.

img

그 중 하나는

  • Xt는 과정의 시간 t의 값이다.
  • θ는 평균값의 회귀 속도이다.
  • μ는 과정의 장기 평균값이다.
  • δ는 변수의 변수이다.
  • dWt는 Wiener 과정 (Standard Brownian Movement) 의 증가를 나타냅니다.

이 과정을 컴퓨터에서 시뮬레이션하기 위해서는 연속 시간 SDE에 대한 디스포리레이션을 수행해야 합니다. 일반적으로 사용되는 방법은 작은 디스포리레이션 시간을 고려하여 길이를 줄이는 Euler-Maruyama 디스포리레이션입니다.img대략적인 연속 과정이다. 오른슈타인-울렌베크 과정의 이분법 형태는 다음과 같다.

img

그 중 하나는img표준 정형 분포에서 추출한 무작위 변수 (즉img) ; 이러한 이분화는 시간이 흐르면서 Xt의 값을 반복적으로 계산하여 OU 프로세스의 동작을 시뮬레이션하도록 허용한다.

파이썬 구현

이제 Python에서 분산된 Ornstein-Uhlenbeck 과정을 구현해 보겠습니다. 아래에서 우리는 NumPy와 Matplotlib Python 라이브러리를 사용합니다.

먼저, 우리는 NumPy와 Matplotlib을 표준 방식으로 입력합니다. 그 다음, 우리는 OU 모델에 모든 매개 변수를 지정합니다. 그 다음, 우리는 OU 경로를 계산한 후에 추가하기 위해 길이 N의 NumPy 배열을 미리 할당합니다. 그 다음 우리는 N-1 단계를 반복합니다. (단계 1은 지정된 초기 조건 X0입니다), 무작위 인크리메이션 DW를 모방하고, 위의 수학 공식에 따라 OU 경로의 다음 번을 계산합니다. 마지막으로, Matplotlib을 사용하여 경로의 역사를 그리십시오.

import numpy as np
import matplotlib.pyplot as plt

# Parameters for the OU process
theta = 0.7      # Speed of mean reversion
mu = 0.0         # Long-term mean
sigma = 0.3      # Volatility
X0 = 1.0         # Initial value
T = 10.0         # Total time
dt = 0.01        # Time step
N = int(T / dt)  # Number of time steps

# Pre-allocate array for efficiency
X = np.zeros(N)
X[0] = X0

# Generate the OU process
for t in range(1, N):
    dW = np.sqrt(dt) * np.random.normal(0, 1)
    X[t] = X[t-1] + theta * (mu - X[t-1]) * dt + sigma * dW

# Plot the result
plt.plot(np.linspace(0, T, N), X)
plt.title("Ornstein-Uhlenbeck Process Simulation")
plt.xlabel("Time")
plt.ylabel("X(t)")
plt.show()

이 그림의 결과는 다음과 같습니다:

img

파이썬으로 그려진 오른슈타인-울렌벡 프로세스 시뮬레이션

이 과정이 어떻게 초기 조건에서 을 X0=1에서 평균값 μ=0으로 빠르게 끌어올리는지를 살펴보고, 그 평균값에서 벗어날 때 그 평균값으로 돌아가는 경향을 나타낸다는 것을 참조하십시오.

요약 및 다음 단계

이 문서에서는 Ornstein-Uhlenbeck 프로세스를 개요하고, 그 수학적 공식을 설명하고, 연속 시간 SDE의 원활한 버전을 모방하기 위한 Python의 기본 구현을 제공합니다. 후속 문서에서는 OU 프로세스를 기반으로 구축된 더 복잡한 SDE를 연구하고, 시스템 거래 및 파생물 가격화 응용 프로그램에서 어떻게 사용할 수 있는지 알아봅니다.

전체 코드

# OU process simulation

import numpy as np
import matplotlib.pyplot as plt

# Parameters for the OU process
theta = 0.7      # Speed of mean reversion
mu = 0.0         # Long-term mean
sigma = 0.3      # Volatility
X0 = 1.0         # Initial value
T = 30.0         # Total time
dt = 0.01        # Time step
N = int(T / dt)  # Number of time steps

# Pre-allocate array for efficiency
X = np.zeros(N)
X[0] = X0

# Generate the OU process
for t in range(1, N):
    dW = np.sqrt(dt) * np.random.normal(0, 1)
    X[t] = X[t-1] + theta * (mu - X[t-1]) * dt + sigma * dW

# Plot the result
plt.plot(np.linspace(0, T, N), X)
plt.title("Ornstein-Uhlenbeck Process Simulation")
plt.xlabel("Time")
plt.ylabel("X(t)")
plt.show()

이 글의 링크는:https://www.quantstart.com/articles/ornstein-uhlenbeck-simulation-with-python/


더 많은