Tài nguyên đang được tải lên... tải...

Mô phỏng Ornstein-Uhlenbeck bằng Python

Tác giả:FMZ~Lydia, Tạo: 2024-10-22 10:14:59, Cập nhật: 2024-10-22 10:16:04

Trong bài viết này, chúng tôi sẽ tổng quan quá trình Ornstein-Uhlenbeck, mô tả công thức toán học của nó, thực hiện và mô phỏng nó bằng Python, và thảo luận một số ứng dụng thực tế trong tài chính định lượng và giao dịch hệ thống. Chúng tôi sẽ sử dụng một mô hình quá trình ngẫu nhiên cao cấp hơn, được gọi là quá trình Ornstein-Uhlenbeck (OU), có thể được sử dụng để mô hình hóa chuỗi thời gian biểu hiện các hành vi hồi quy đồng giá.

Quá trình Ornstein-Uhlenbeck là gì?

Quá trình Ornstein-Uhlenbeck là một quá trình ngẫu nhiên theo thời gian liên tục được sử dụng để mô hình hóa các hành vi quay về mức trung bình. Điều này có nghĩa là, không giống như các hành vi ngẫu nhiên tiêu chuẩn hoặc chuyển động Brownian có thể di chuyển vô hạn, quá trình OU thường quay trở lại mức trung bình lâu dài theo thời gian. Về mặt toán học, quá trình OU là giải pháp cho một phương trình phân số ngẫu nhiên (SDE) cụ thể kiểm soát hành vi quay về mức trung bình này.

img

Trong đó, Xt biểu thị một quá trình ngẫu nhiên trong thời gian t, μ là trung bình dài hạn,θ là tỷ lệ hồi quy trung bình,δ là biến động, và dWt là quá trình Wiener hoặc chuyển động chuẩn Brownian.

Bối cảnh lịch sử và ứng dụng

Quá trình Ornstein-Uhlenbeck ban đầu được đề xuất bởi Leonard Ornstein và George Eugene Uhlenbeck vào năm 1930 để mô phỏng tốc độ của các hạt trong chuyển động của Brownian trong trường hợp có ma sát. Theo thời gian, tính hiệu quả của nó đã vượt ra ngoài vật lý và có các ứng dụng trong các lĩnh vực khác nhau như sinh học, hóa học, kinh tế và tài chính.

Trong tài chính định lượng, quá trình OU đặc biệt hữu ích trong việc mô hình hóa các hiện tượng thể hiện hành vi hồi quy trung bình; ví dụ nổi bật bao gồm tỷ lệ lãi suất, tỷ lệ hối đoái và sự biến động của thị trường tài chính. Ví dụ, mô hình lãi suất phổ biến, mô hình Vasicek, được rút ra trực tiếp từ quá trình OU.

Tầm quan trọng trong tài chính định lượng

Quá trình Ornstein-Uhlenbeck rất quan trọng trong tài chính định lượng vì các lý do sau đây. Bản chất của nó về sự hồi quy trung bình làm cho nó trở thành một sự lựa chọn tự nhiên cho các biến số tài chính mô hình hóa, những biến số tài chính không biểu hiện hành vi trôi dạt ngẫu nhiên mà thay vào đó xoay quanh sự biến động trung bình dài hạn ổn định. Tính năng này rất quan trọng đối với mô hình hóa lãi suất, trong đó sự hồi quy trung bình phản ánh ảnh hưởng của ngân hàng trung ương đối với lãi suất ổn định dài hạn.

Ngoài ra, quá trình OU cũng được sử dụng trong các mô hình định giá tài sản (bao gồm cả định giá phái sinh) và các chiến lược quản lý rủi ro. Nó cũng có thể được sử dụng như một phần xây dựng cho các mô hình phức tạp hơn, chẳng hạn như mô hình Cox-Ingersoll-Ross (CIR), mô hình mở rộng quá trình OU để mô hình hóa các lãi suất không âm.

Các đặc điểm chính và trực giác

Các đặc điểm chính của quá trình Ornstein-Uhlenbeck có thể được tóm tắt như sau:

  • Tỷ lệ hồi quy trung bình:Quá trình OU có xu hướng quay trở lại trung bình dài hạn μ. Điều này trái ngược với các quá trình như chuyển động của Brown, mà không thể hiện xu hướng này.
  • Sự biến động:Các tham số δ kiểm soát mức độ ngẫu nhiên hoặc biến động trong quá trình. Sự biến động càng cao, quá trình sẽ đi xa hơn so với giá trị trung bình trước khi quay trở lại.
  • Tốc độ quay trở lại:Các tham số θ quyết định tốc độ quay trở lại của phương trình. Giá trị của θ càng cao, tốc độ quay trở lại của phương trình càng nhanh.
  • Sự ổn định:Quá trình OU là ổn định, có nghĩa là các đặc điểm thống kê của nó không thay đổi theo thời gian. Điều này rất quan trọng trong việc mô hình hệ thống ổn định trong lĩnh vực tài chính.

Một cách trực quan, bạn có thể xem quá trình Ornstein-Uhlenbeck như một mô hình hành vi của cơ mạc kéo dài xung quanh giá trị trung bình. Mặc dù quá trình có thể đi xa so với giá trị trung bình do biến động ngẫu nhiên, lực kéo của cơ mạc (tương tự như sự quay trở lại của giá trị trung bình) đảm bảo rằng nó cuối cùng sẽ trở lại giá trị trung bình.

So sánh với các quá trình ngẫu nhiên khác

Do quá trình OU liên quan chặt chẽ đến việc mô hình hóa các hiện tượng tài chính khác nhau, nó thường được so sánh với các quá trình ngẫu nhiên khác (như chuyển động Brownian và chuyển động Geometric Brownian (GBM)). Không giống như chuyển động Brownian (không có xu hướng quay trở lại cùng một giá trị), quá trình OU có hành vi quay trở lại cùng một giá trị rõ ràng. Điều này làm cho nó thích hợp hơn cho việc mô hình hóa các trường hợp biến động dao động xung quanh sự cân bằng ổn định.

Các quá trình OU không thể hiện sự tăng trưởng theo chỉ số, mà xoay quanh sự dao động của giá trung bình của chúng. Trong khi các quá trình OU rất phù hợp với việc mô hình hóa những số lượng tăng theo thời gian, thì GBM rất phù hợp với việc mô hình hóa các biến thể hiển thị các đặc điểm quay ngược giá trung bình.

Ví dụ về tài chính định lượng

Quá trình Ornstein-Uhlenbec có nhiều ứng dụng trong lĩnh vực tài chính, đặc biệt là trong các kịch bản mô hình với sự hồi quy trung bình là một đặc điểm quan trọng. Dưới đây chúng ta sẽ thảo luận một số trường hợp sử dụng phổ biến nhất.

Mô hình lãi suất

Một trong những ứng dụng nổi bật nhất của quá trình OU là mô hình hóa lãi suất, đặc biệt là trong khuôn khổ mô hình Vasicek. Mô hình Vasicek giả định lãi suất tuân theo quá trình OU, tức là lãi suất thường quay trở lại mức trung bình dài hạn theo thời gian. Tính năng này rất quan trọng đối với hành vi lãi suất mô phỏng chính xác, vì lãi suất thường không dao động vô hạn, mà dao động gần mức trung bình do các điều kiện kinh tế ảnh hưởng.

Định giá tài sản

Trong định giá tài sản, đặc biệt là các chứng khoán thu nhập cố định, quá trình OU thường được sử dụng để mô phỏng sự phát triển của tỷ lệ lợi nhuận trái phiếu. Bản chất quay ngược giá trị trung bình của quá trình OU đảm bảo rằng tỷ lệ lợi nhuận không đi quá xa so với mức trung bình lịch sử của nó, điều này phù hợp với hành vi thị trường quan sát được. Điều này làm cho quá trình OU trở thành một công cụ có giá trị cho trái phiếu và các công cụ nhạy cảm với lãi suất khác.

Chiến lược giao dịch phối hợp

Giao dịch ghép nối là một chiến lược trung lập thị trường, liên quan đến việc tạo ra các vị trí bù trong hai tài sản liên quan. Trong trường hợp này, quy trình OU đặc biệt hữu ích vì nó có thể mô hình sự khác biệt giá giữa hai tài sản, trong khi sự khác biệt giá thường là sự quay trở lại của giá. Bằng cách sử dụng quy trình OU để mô hình sự khác biệt giá, các nhà giao dịch có thể xác định các điểm vào và ra lợi nhuận khi sự chênh lệch giá đi xa so với mức trung bình của họ, dự đoán sự quay trở lại của sự khác biệt giá, do đó tạo ra tín hiệu giao dịch.

Ví dụ, nếu chênh lệch giá giữa hai hợp đồng tương lai mở rộng vượt quá một ngưỡng nhất định, các nhà giao dịch có thể bỏ qua các hợp đồng tương lai hoạt động tốt và làm nhiều hợp đồng tương lai hoạt động kém, mong đợi chênh lệch giá quay trở lại mức trung bình lịch sử của nó, để có lợi nhuận khi sự đảo ngược xảy ra.

Giải pháp của Ornstein-Uhlenbeck SDE

Công thức phương trình phân số của quá trình Ornstein-Uhlenbeck là nền tảng để giải quyết nó. Để giải quyết SDE này, chúng ta sử dụng hệ số tích phân. Hãy viết lại SDE:

img

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

img

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

img

Và chúng ta có thể tính từ 0 đến t, chúng ta có:

img

Đây là giải pháp chung của Ornstein-Uhlenbeck SDE.

Các giải pháp rõ ràng được đưa ra ở trên có một vài ý nghĩa quan trọng.imgChỉ ra giá trị ban đầu suy giảm theo thời gian, cho thấy quá trình dần dần quên đi điểm khởi đầu.imgTrình bày quá trình xu hướng trung bình trong thời gian μ. Điều thứ ba giới thiệu sự ngẫu nhiên, trong đó phần tử liên quan đến quá trình Wiener giải thích sự biến động ngẫu nhiên.

Giải pháp này nhấn mạnh sự cân bằng giữa các hành vi hồi quy tỷ lệ xác định và các phần tử ngẫu nhiên do chuyển động của Brownian thúc đẩy. Hiểu giải pháp này là rất quan trọng để mô phỏng hiệu quả quá trình OU, như sau:

Liên kết với các quá trình ngẫu nhiên khác

Quá trình Ornstein-Uhlenbeck có một số liên kết quan trọng với các quá trình ngẫu nhiên nổi tiếng khác (bao gồm chuyển động Brown và mô hình Vasicek).

Mối quan hệ với phong trào Brown

Quá trình Ornstein-Uhlenbeck có thể được xem như một phiên bản quay trở lại giá trị trung bình của chuyển động Brownian; chuyển động Brownian mô tả một quá trình có xu hướng tăng tự do và không có giá trị trung bình quay trở lại, trong khi quá trình OU đưa vào giá trị trung bình quay trở lại giá trị trung tâm của quá trình bằng cách sử dụng điều khoản di chuyển để sửa đổi chuyển động Brownian. Về mặt toán học, nếu chúng ta đặt θ = 0, quá trình OU sẽ được đơn giản hóa thành chuyển động Brownian tiêu chuẩn với biến động:

img

Do đó, chuyển động của Brown là một trường hợp ngoại lệ của quá trình OU, tương ứng với sự vắng mặt của sự hồi quy trung bình.

Mối quan hệ với mô hình Vasicek

Mô hình Vasicek được sử dụng rộng rãi trong mô hình lãi suất, về cơ bản là một ứng dụng của quá trình Ornstein-Uhlenbeck trong sự tiến hóa lãi suất. Mô hình Vasicek giả định lãi suất theo quá trình OU, trong đó SDE được định nghĩa là:

img

Trong đó, r là tỷ lệ lãi suất ngắn hạn, giải thích các tham số θ, μ và δ tương tự như giải thích trong quá trình OU. Mô hình Vasicek có thể tạo ra đường dẫn tỷ lệ lãi suất khôi phục trung bình, đây là một trong những lợi thế chính của nó trong mô hình tài chính.

Hiểu được các mối quan hệ này sẽ giúp hiểu rộng hơn về cách thức sử dụng các quy trình OU trong các môi trường khác nhau, đặc biệt là trong lĩnh vực tài chính. Chúng ta sẽ khám phá ý nghĩa thực tế của các mối quan hệ này khi chúng ta thảo luận về các ví dụ ứng dụng dưới đây.

Mô phỏng quá trình Ornstein-Uhlenbeck bằng Python

Trong phần này, chúng ta sẽ xem xét cách sử dụng Python để mô phỏng quá trình Ornstein-Uhlenbeck (OU). Điều này liên quan đến việc sử dụng phân giải Euler-Maruyama để phân giải các phương trình phân giải ngẫu nhiên (SDE) xác định quá trình OU.

Sự phân tán của SDE

Chúng ta hãy xem lại các công thức toán học của SDE ở trên và tóm tắt từng thuật ngữ:

img

Trong đó,

  • Xt là giá trị của quá trình tại thời điểm t.
  • θ là tốc độ quay về giá trị trung bình.
  • μ là giá trị trung bình lâu dài của quá trình.
  • δ là tham số tỷ lệ biến động.
  • dWt biểu thị sự gia tăng của quá trình Wiener (chuyển động chuẩn của Brown).

Để mô phỏng quá trình này trên máy tính, chúng ta cần phân giải SDE theo thời gian liên tục. Một phương pháp thường được sử dụng là phân giải Euler-Maruyama, nó kéo dài thời gian phân giải bằng cách xem xét các bước thời gian nhỏ.imgMột quá trình gần như liên tục. Hình thức tách biệt của quá trình Ornstein-Uhlenbeck được cho là:

img

Trong đó,imglà một biến số ngẫu nhiên được rút ra từ một phân bố bình thường chuẩnimg) ; sự phân tách này cho phép chúng ta tính toán giá trị Xt theo thời gian để mô phỏng hành vi của quá trình OU;

Python thực hiện

Bây giờ chúng ta hãy thực hiện quá trình Ornstein-Uhlenbeck phân tách với Python.

Đầu tiên, chúng ta nhập NumPy và Matplotlib theo cách tiêu chuẩn. Sau đó, chúng ta chỉ định tất cả các tham số cho mô hình OU. Sau đó, chúng ta đã phân bổ trước một số NumPy dài N để thêm vào sau khi tính toán đường OU. Sau đó, chúng ta lặp lại các bước N-1 (bước 1 là điều kiện ban đầu được chỉ định là X0), mô phỏng số gia tăng ngẫu nhiên DW, và sau đó tính toán các bước tiếp theo của đường OU dựa trên công thức toán học trên. Cuối cùng, sử dụng Matplotlib để vẽ lịch sử đường.

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()

Kết quả của bản vẽ được hiển thị dưới đây:

img

Mô phỏng quá trình Ornstein-Uhlenbeck được vẽ bằng Python

Lưu ý rằng quá trình này nhanh chóng kéo xơ từ điều kiện ban đầu X0 = 1 đến giá trị trung bình μ = 0, và sau đó khi nó đi ngược lại giá trị trung bình đó, nó cho thấy xu hướng quay trở lại giá trị trung bình đó.

Tóm lại và bước tiếp theo

Trong bài viết này, chúng tôi đã tóm tắt các quy trình Ornstein-Uhlenbeck, mô tả các công thức toán học của chúng, và cung cấp các triển khai cơ bản của Python để mô phỏng các phiên bản tách biệt của các SDE thời gian liên tục. Trong các bài viết tiếp theo, chúng tôi sẽ nghiên cứu các SDE phức tạp hơn được xây dựng dựa trên các quy trình OU và tìm hiểu cách chúng được sử dụng cho các ứng dụng giao dịch hệ thống và giá phái sinh.

Mã đầy đủ

# 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()

Đọc thêm:https://www.quantstart.com/articles/ornstein-uhlenbeck-simulation-with-python/


Thêm nữa