Sumber daya yang dimuat... Pemuatan...

Simulasi Ornstein-Uhlenbeck dengan Python

Penulis:FMZ~Lydia, Dibuat: 2024-10-22 10:14:59, Diperbarui: 2024-10-22 10:16:04

Dalam artikel ini, kami akan menguraikan proses Ornstein-Uhlenbeck, menjelaskan rumus matematika, menerapkan dan mensimulasikannya menggunakan Python, dan membahas beberapa aplikasi praktis dalam keuangan kuantitatif dan perdagangan sistem. Kami akan menggunakan model proses acak yang lebih tinggi, yang disebut proses Ornstein-Uhlenbeck (OU), yang dapat digunakan untuk memodelkan urutan waktu yang menunjukkan perilaku regression rata-rata. Ini sangat berguna untuk pemodelan suku bunga dalam harga derivatif dan untuk algoritme perdagangan sistem pada saat perdagangan.

Apa itu proses Ornstein-Uhlenbeck?

Proses Ornstein-Uhlenbeck adalah proses acak waktu yang digunakan untuk memodelkan perilaku regression rata-rata. Ini berarti bahwa, tidak seperti gerak acak standar atau gerakan Brownian yang dapat melayang tanpa batas, proses OU sering kali kembali ke rata-rata jangka panjang dari waktu ke waktu. Secara matematis, proses OU adalah solusi dari persamaan diferensial acak tertentu (SDE) yang mengendalikan perilaku regressi rata-rata ini. SDE proses OU diberikan oleh rumus berikut:

img

Di mana Xt menunjukkan proses acak pada waktu t, dimana μ adalah rata-rata jangka panjang, θ adalah rata-rata regresi, δ adalah fluktuasi, dan dWt adalah proses Wiener atau gerakan Brownian standar.

Latar belakang dan aplikasi

Proses Ornstein-Uhlenbeck pertama kali dikemukakan oleh Leonard Ornstein dan George Eugene Uhlenbeck pada tahun 1930 untuk mensimulasikan kecepatan partikel yang melakukan gerakan Brownian dalam kondisi gesekan. Seiring berjalannya waktu, kegunaannya telah melampaui fisika dan memiliki aplikasi di berbagai bidang seperti biologi, kimia, ekonomi, dan keuangan.

Dalam keuangan kuantitatif, proses OU sangat berguna untuk memodelkan fenomena yang menunjukkan perilaku regression rata-rata. Contoh yang menonjol termasuk volatilitas tingkat suku bunga, nilai tukar, dan pasar keuangan. Misalnya, model suku bunga populer, model Vasicek, didapat langsung dari proses OU.

Pentingnya Keuangan Kuantitatif

Proses Ornstein-Uhlenbeck sangat penting dalam keuangan kuantitatif karena sifat regression rata-rata membuatnya menjadi pilihan alami untuk memodelkan variabel keuangan yang tidak menunjukkan perilaku berkeliaran acak, melainkan berputar di sekitar rata-rata jangka panjang yang stabil. Fitur ini penting untuk pemodelan suku bunga, di mana regression rata-rata mencerminkan pengaruh bank sentral pada tingkat suku bunga yang stabil dalam jangka panjang.

Selain itu, proses OU juga digunakan dalam model harga aset (termasuk penilaian derivatif) dan strategi manajemen risiko. Ini juga dapat digunakan sebagai blok bangunan untuk model yang lebih kompleks, seperti model Cox-Ingersoll-Ross (CIR), yang memperluas proses OU untuk memodelkan suku bunga yang tidak negatif.

Fitur utama dan intuisi

Fitur utama dari proses Ornstein-Uhlenbeck dapat diringkas sebagai berikut:

  • Kembali ke nilai rata:Proses OU cenderung kembali ke rata-rata jangka panjang μ. Hal ini sangat kontras dengan proses seperti gerakan Brownian, yang tidak menunjukkan tren tersebut.
  • Di sini ada beberapa contoh.Parameter δ mengontrol tingkat keacakan atau volatilitas dalam proses. Semakin tinggi volatilitas, semakin besar deviasi dari rata-rata sebelum proses regresi.
  • Kecepatan Kembali:Parameter θ menentukan kecepatan proses untuk mengembalikan rata-rata.
  • Stabilitas:Proses OU adalah stabil, yang berarti karakteristik statistiknya tidak berubah seiring waktu. Ini penting untuk memodelkan sistem yang stabil di bidang keuangan.

Secara intuitif, Anda dapat menganggap proses Ornstein-Uhlenbeck sebagai pemodelan perilaku otot serat yang membentang di sekitar rata-rata. Meskipun proses ini mungkin menyimpang dari rata-rata karena fluktuasi acak, kekuatan tarik otot serat (seperti regressi rata-rata) memastikan bahwa akhirnya kembali ke rata-rata.

Perbandingan dengan proses acak lainnya

Karena proses OU terkait erat dengan pemodelan berbagai fenomena keuangan, maka sering dibandingkan dengan proses acak lainnya (seperti gerak Brown dan gerak geometris Brown (GBM)). Berbeda dengan gerak Brown (yang tidak memiliki tren regresi rata-rata), proses OU memiliki perilaku regresi rata-rata yang jelas. Hal ini membuatnya lebih cocok untuk pemodelan skenario di mana variabel bergeser di sekitar keseimbangan stabil.

Proses OU tidak menunjukkan pertumbuhan indeks, melainkan berputar di sekitar oscillasi rata-ratanya, dibandingkan dengan GBM yang biasanya digunakan untuk memodelkan harga saham dan mengandung faktor drift dan fluktuasi. GBM lebih cocok untuk memodelkan jumlah yang tumbuh seiring waktu, sedangkan proses OU sangat cocok untuk memodelkan variabel yang menunjukkan karakteristik regression rata-ratanya.

Contoh Keuangan Kuantitatif

Proses Ornstein-Uhlenbec memiliki aplikasi yang luas di bidang keuangan, terutama dalam skenario pemodelan di mana regression rata-rata adalah fitur kunci. Di bawah ini kita akan membahas beberapa kasus penggunaan yang paling umum.

Model suku bunga

Salah satu aplikasi paling menonjol dari proses OU adalah pemodelan suku bunga, terutama dalam kerangka model Vasicek. Model Vasicek mengasumsikan bahwa suku bunga mengikuti proses OU, yaitu bahwa suku bunga cenderung kembali ke rata-rata jangka panjang dari waktu ke waktu. Fitur ini penting untuk perilaku suku bunga yang akurat karena suku bunga seringkali tidak berfluktuasi tanpa batas, tetapi berfluktuasi di dekat rata-rata yang dipengaruhi oleh kondisi ekonomi.

Harga Aset

Dalam penetapan harga aset, terutama sekuritas fixed income, proses OU sering digunakan untuk meniru evolusi tingkat pengembalian obligasi. Sifat regression rata-rata dari proses OU memastikan bahwa tingkat pengembalian tidak terlalu jauh dari rata-rata historisnya, yang konsisten dengan perilaku pasar yang diamati. Ini membuat proses OU menjadi alat berharga dalam penetapan harga obligasi dan instrumen sensitif tingkat lainnya.

Strategi perdagangan berpasangan

Perdagangan berpasangan adalah strategi netral pasar yang melibatkan membangun posisi offset di antara dua aset yang terkait. Dalam hal ini, proses OU sangat berguna karena dapat memodelkan perbedaan harga antara dua aset, yang biasanya merupakan regressi rata-rata. Dengan menggunakan proses OU untuk memodelkan perbedaan harga, pedagang dapat mengidentifikasi titik masuk dan keluar keuntungan ketika perbedaan harga menyimpang dari rata-rata mereka, memprediksi rata-rata regressi, sehingga menghasilkan sinyal perdagangan.

Sebagai contoh, jika perbedaan harga antara dua opsi berjangka meningkat ke atas batas tertentu, pedagang mungkin akan melakukan pemisahan antara opsi berjangka yang berkinerja baik dan opsi berjangka yang berkinerja buruk, dengan harapan bahwa perbedaan harga akan kembali ke rata-rata historisnya, sehingga menghasilkan keuntungan pada saat pembalikan terjadi.

Jawaban dari Ornstein-Uhlenbeck SDE

Rumus persamaan diferensial dari proses Ornstein-Uhlenbeck adalah dasar untuk pemecahan. Untuk memecahkan SDE ini, kita menggunakan faktorisasi integral. Mari kita menulis ulang SDE:

img

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

img

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

img

Jika kita mengintegrasikan kedua sisi dari 0 ke t, kita mendapatkan:

img

Ini adalah solusi umum dari Ornstein-Uhlenbeck SDE.

Solusi eksplisit yang disimpulkan di atas memiliki beberapa arti penting.imgMenunjukkan nilai awal yang melemah seiring waktu, menunjukkan bagaimana proses ini secara bertahap melemah dan melupakan titik awalnya.imgMenunjukkan bahwa proses cenderung terhadap rata-rata μ dari waktu ke waktu. Istilah ketiga memperkenalkan randomitas, di mana integral yang melibatkan proses Wiener menjelaskan fluktuasi random.

Solusi ini menekankan keseimbangan antara perilaku regression rata-rata kepastian dan faktor acak yang didorong oleh gerakan Brownian. Memahami solusi ini sangat penting untuk proses simulasi OU yang efektif, seperti yang dijelaskan di bawah ini.

Hubungan dengan proses acak lainnya

Proses Ornstein-Uhlenbeck memiliki beberapa hubungan penting dengan proses acak terkenal lainnya (termasuk gerakan Brown dan model Vasicek).

Hubungan dengan gerakan Brown

Proses Ornstein-Uhlenbeck dapat dianggap sebagai versi regression rata-rata dari gerakan Brownian. Gerakan Brownian menggambarkan suatu proses yang memiliki tren dengan peningkatan independen dan tidak memiliki gerak rata-rata, sedangkan proses OU memperkenalkan gerak rata-rata dengan memodifikasi gerakan Brownian dengan menggunakan parameter drift, sehingga menarik proses kembali ke nilai pusat. Secara matematis, jika kita menetapkan θ = 0, proses OU akan disederhanakan menjadi gerak Brownian standar dengan fluktuasi:

img

Oleh karena itu, gerakan brown adalah sebuah keanehan dari proses OU, yang sesuai dengan kurangnya regression rata-rata.

Hubungan dengan model Vasicek

Model Vasicek banyak digunakan dalam pemodelan suku bunga, yang pada dasarnya adalah aplikasi dari proses Ornstein-Uhlenbeck dalam evolusi suku bunga. Model Vasicek mengasumsikan bahwa suku bunga mengikuti proses OU, di mana SDE didefinisikan sebagai:

img

Di antaranya, rt mewakili tingkat suku bunga jangka pendek, interpretasi parameter θ, μ, dan δ mirip dengan interpretasi dalam proses OU. Model Vasicek dapat menghasilkan jalur nilai rata-rata regresi suku bunga, yang merupakan salah satu keunggulan utamanya dalam pemodelan keuangan.

Memahami hubungan-hubungan ini dapat memberikan pemahaman yang lebih luas tentang bagaimana proses OU digunakan dalam berbagai konteks, terutama di bidang keuangan. Kami akan membahas arti praktis dari hubungan-hubungan ini ketika kita membahas contoh aplikasi di bawah ini.

Simulasi proses Ornstein-Uhlenbeck menggunakan Python

Dalam bagian ini, kita akan membahas bagaimana menggunakan Python untuk mensimulasikan proses Ornstein-Uhlenbeck (OU). Ini melibatkan menggunakan disintegrasi Euler-Maruyama untuk mendiskriminasi persamaan diferensial acak (SDE) yang mendefinisikan proses OU.

Disintegrasi SDE

Mari kita lihat kembali rumus matematika SDE di atas dan ringkasan setiap istilah:

img

Di antaranya:

  • Xt adalah nilai proses pada waktu t.
  • θ adalah kecepatan regressi rata-rata.
  • μ adalah rata-rata jangka panjang dari proses tersebut.
  • δ adalah parameter fluktuasi.
  • dWt menunjukkan perkalian dari proses Wiener (Standard Brownian motion).

Untuk mensimulasikan proses ini di komputer, kita perlu melakukan disorasi pada SDE berturut-turut. Salah satu metode yang umum digunakan adalah disorasi Euler-Maruyama, yang dilakukan dengan memperpanjang langkah-langkah waktu disorasi yang kecil.imgProses Ornstein-Uhlenbeck memiliki bentuk diskrit yang diberikan oleh:

img

Di antaranya:imgadalah variabel acak yang diambil dari distribusi normal standar (yaituimgDisentralisasi ini memungkinkan kita untuk menghitung nilai Xt secara iteratif dari waktu ke waktu dan dengan demikian mensimulasikan perilaku proses OU.

Implementasi Python

Sekarang mari kita lakukan proses Ornstein-Uhlenbeck yang terdesentralisasi dengan Python. Di bawah ini, kita hanya menggunakan Perpustakaan Python NumPy dan Matplotlib.

Pertama, kita mengimpor NumPy dan Matplotlib dengan cara standar. Kemudian, kita menetapkan semua parameter untuk model OU. Kemudian, kita menugaskan sebelumnya sebuah himpunan NumPy dengan panjang N untuk ditambahkan ke dalamnya setelah menghitung jalur OU. Kemudian kita mengulangi langkah N-1 (langkah 1 adalah kondisi awal yang ditentukan X0), analogikan pengukuran acak DW, dan kemudian menghitung generasi berikutnya dari jalur OU berdasarkan rumus matematika di atas. Akhirnya, kita menggunakan Matplotlib untuk menggambar sejarah jalur.

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

Hasil gambar menunjukkan sebagai berikut:

img

Simulasi proses Ornstein-Uhlenbeck yang dibuat dengan Python

Perhatikan bagaimana proses ini dengan cepat menarik butiran dari kondisi awal X0 = 1 ke nilai rata-rata μ = 0, dan ketika ia menyimpang dari nilai rata-rata itu, ia menunjukkan kecenderungan untuk kembali ke nilai rata-rata itu.

Ringkasan dan langkah selanjutnya

Dalam artikel ini, kami menguraikan proses Ornstein-Uhlenbeck, menjelaskan rumus matematika, dan memberikan implementasi dasar Python untuk mensimulasikan versi diskrit dari SDE waktu kontinu. Dalam artikel berikutnya, kami akan mempelajari SDE yang lebih kompleks yang dibangun berdasarkan proses OU dan bagaimana mereka dapat digunakan untuk aplikasi perdagangan sistem dan harga derivatif.

Kode lengkap

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

Link asli:https://www.quantstart.com/articles/ornstein-uhlenbeck-simulation-with-python/


Lebih banyak