Sumber dimuat naik... memuat...

Simulasi Ornstein-Uhlenbeck menggunakan Python

Penulis:FMZ~Lydia, Dicipta: 2024-10-22 10:14:59, Dikemas kini: 2024-10-22 10:16:04

Dalam artikel ini, kita akan mengkaji proses Ornstein-Uhlenbeck, menerangkan formula matematiknya, melaksanakan dan meniru dengan Python, dan membincangkan beberapa aplikasi praktikal dalam kewangan kuantitatif dan perdagangan sistemik. Kami akan menggunakan model proses rawak yang lebih maju, yang dikenali sebagai proses Ornstein-Uhlenbeck (OU), yang boleh digunakan untuk memodelkan urutan masa yang menunjukkan tindak balas regresi rata-rata. Ini sangat berguna untuk memodelkan kadar faedah dalam harga derivatif dan menjalankan algoritma untuk perdagangan sistemik semasa berdagang.

Apakah proses Ornstein-Uhlenbeck?

Proses Ornstein-Uhlenbeck adalah proses rawak masa berturut-turut yang digunakan untuk memodelkan tingkah laku regresi rata-rata. Ini bermakna bahawa, tidak seperti pengembaraan rawak standard atau pergerakan Brownian yang boleh melayang tanpa had, proses OU sering pulih kepada purata jangka panjang dari masa ke masa. Secara matematik, proses OU adalah penyelesaian kepada persamaan pembezaan rawak tertentu (SDE) yang mengawal tingkah laku regresi rata-rata ini. SDE proses OU diberikan oleh formula berikut:

img

Di mana Xt menunjukkan proses rawak pada masa t, μ adalah purata jangka panjang, θ adalah kadar regresi purata, δ adalah turun naik, dan dWt adalah proses Wiener atau pergerakan Brownian standard.

Latar belakang dan aplikasi

Proses Ornstein-Uhlenbeck mula-mula dicadangkan oleh Leonard Ornstein dan George Eugene Uhlenbeck pada tahun 1930 untuk meniru kelajuan zarah yang melakukan pergerakan Brownian dalam keadaan geseran. Dengan masa, kegunaannya telah melampaui bidang fizik dan mempunyai aplikasi dalam pelbagai bidang seperti biologi, kimia, ekonomi dan kewangan.

Dalam kewangan kuantitatif, proses OU sangat berguna untuk memodelkan fenomena yang menunjukkan tindak balas regresi rata-rata. Contoh yang terkenal termasuk kadar faedah, kadar pertukaran dan turun naik pasaran kewangan. Sebagai contoh, model kadar faedah yang popular, model Vasicek, disimpulkan secara langsung dari proses OU.

Kepentingan dalam Kewangan Kuantitatif

Proses Ornstein-Uhlenbeck adalah penting dalam kewangan kuantitatif, kerana sifat regresi rata-rata menjadikannya pilihan semula jadi untuk memodelkan pembolehubah kewangan, yang tidak menunjukkan tingkah laku yang mengembara secara rawak, tetapi berkisar pada pergerakan rata-rata jangka panjang yang stabil. Ciri ini penting untuk pemodelan kadar faedah, di mana regresi rata-rata mencerminkan pengaruh bank pusat terhadap kadar faedah yang stabil dalam jangka panjang.

Di samping itu, proses OU juga digunakan dalam model harga aset (termasuk penilaian derivatif) dan strategi pengurusan risiko. Ia juga boleh digunakan sebagai blok pembina model yang lebih kompleks, seperti model Cox-Ingersoll-Ross (CIR), yang memperluaskan proses OU untuk memodelkan kadar faedah yang tidak negatif.

Ciri utama dan intuisi

Ciri-ciri utama proses Ornstein-Uhlenbeck boleh diringkaskan sebagai berikut:

  • Nilai purata regresi:Proses OU cenderung untuk kembali ke purata jangka panjang μ. Ini sangat berbeza dengan proses seperti pergerakan Brownian, yang tidak menunjukkan trend ini.
  • Pergerakan:Parameter δ mengawal tahap keacakan atau turun naik dalam proses. Semakin tinggi turun naik, semakin besar deviasi purata sebelum proses kembali.
  • Kelajuan Kembali:Parameter θ menentukan kelajuan kepada nilai purata proses.
  • Stabiliti:Proses OU adalah lancar, yang bermaksud ciri-ciri statistiknya tidak berubah dari masa ke masa. Ini adalah penting untuk memodelkan sistem yang stabil dalam bidang kewangan.

Secara intuitif, anda boleh menganggap proses Ornstein-Uhlenbeck sebagai pemodelan tingkah laku otot pergelangan tangan yang memanjang di sekitar purata. Walaupun proses ini mungkin menyimpang dari purata kerana turun naik secara rawak, kekuatan tarik otot pergelangan tangan (seperti regresi purata) memastikan ia akhirnya kembali ke purata.

Perbandingan dengan proses rawak lain

Oleh kerana proses OU sangat berkaitan dengan pemodelan pelbagai fenomena kewangan, ia sering dibandingkan dengan proses rawak lain (seperti pergerakan Brownian dan pergerakan Geometri Brownian (GBM)). Berbeza dengan pergerakan Brownian (yang tidak mempunyai kecenderungan regresi rata), proses OU mempunyai tingkah laku regresi rata yang jelas. Ini menjadikannya lebih sesuai untuk pemodelan senario di mana pembolehubah bergolak di sekitar keseimbangan yang stabil.

Proses OU tidak menunjukkan pertumbuhan indeks, tetapi mengelilingi pergolakan rata-rata mereka berbanding GBM yang biasanya digunakan untuk memodelkan harga saham dan mengandungi penggeledahan dan turun naik. GBM lebih sesuai untuk memodelkan kuantiti yang meningkat dari masa ke masa, sementara proses OU sangat sesuai untuk memodelkan pembolehubah yang menunjukkan ciri-ciri regresi rata-rata.

Contoh kewangan kuantitatif

Proses Ornstein-Uhlenbec mempunyai aplikasi yang luas dalam bidang kewangan, terutamanya dalam senario pemodelan di mana regresi rata-rata adalah ciri utama. Di bawah ini kita akan membincangkan beberapa kes kegunaan yang paling biasa.

Pemodelan kadar faedah

Salah satu aplikasi yang paling menonjol dari proses OU adalah pemodelan kadar faedah, terutamanya dalam rangka model Vasicek. Model Vasicek mengandaikan kadar faedah mengikuti proses OU, iaitu kadar faedah sering kembali ke purata jangka panjang dari masa ke masa. Ciri ini penting untuk tingkah laku kadar faedah yang dimodelkan dengan tepat, kerana kadar faedah sering tidak turun-temurun tanpa batas, tetapi turun-temurun di dekat purata yang dipengaruhi oleh keadaan ekonomi.

Penentuan harga aset

Dalam penetapan harga aset, terutamanya sekuriti pendapatan tetap, proses OU sering digunakan untuk meniru evolusi kadar pulangan bon. Sifat regres rata-rata proses OU memastikan kadar pulangan tidak menyimpang terlalu jauh dari purata sejarahnya, yang selaras dengan tingkah laku pasaran yang diperhatikan. Ini menjadikan proses OU sebagai alat berharga untuk penetapan harga bon dan instrumen sensitif kadar lain.

Strategi berpasangan

Perdagangan berpasangan adalah strategi netral pasaran yang melibatkan pembentukan kedudukan penimbunan di antara dua aset yang berkaitan. Dalam kes ini, proses OU sangat berguna kerana ia boleh memodelkan perbezaan harga antara dua aset, yang biasanya adalah regresi rata-rata. Dengan menggunakan proses OU untuk memodelkan perbezaan harga, pedagang dapat mengenal pasti titik masuk dan keluar keuntungan apabila harga menyimpang dari purata mereka, meramalkan regresi rata-rata, dan menghasilkan isyarat dagangan.

Sebagai contoh, jika perbezaan harga antara dua niaga hadapan meluas melebihi ambang tertentu, peniaga mungkin akan mengosongkan niaga hadapan yang cemerlang dan membuat banyak niaga hadapan yang buruk, mengharapkan perbezaan harga kembali ke purata sejarah mereka, sehingga dapat menghasilkan keuntungan apabila pembalikan berlaku.

Jawapan Ornstein-Uhlenbeck SDE

Rumus pembezaan dalam proses Ornstein-Uhlenbeck adalah asas penyelesaian. Untuk menyelesaikan SDE ini, kita menggunakan faktor integrasi. Mari kita tulis semula SDE:

img

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

img

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

img

Jika kita mengintegrasikan kedua-dua belah dari 0 ke t, kita akan mendapat:

img

Ini adalah penyelesaian umum untuk Ornstein-Uhlenbeck SDE.

Penyelesaian eksplisit yang disimpulkan di atas mempunyai beberapa makna penting.imgMenunjukkan nilai awal yang merosot dari masa ke masa, menunjukkan bagaimana proses ini secara beransur-ansur terlupa dari mana ia bermula; kedua.imgMenunjukkan proses yang cenderung kepada purata dengan masa μ. Perkara ketiga memperkenalkan keacakan, di mana integrasi yang melibatkan proses Wiener menerangkan turun naik secara rawak.

Penyelesaian ini menekankan keseimbangan antara tingkah laku regresi rata-rata kepastian dengan pembahagi rawak yang didorong oleh pergerakan Brownian. Memahami penyelesaian ini adalah penting untuk proses simulasi OU yang berkesan, seperti yang dinyatakan di bawah.

Hubungan dengan proses rawak lain

Proses Ornstein-Uhlenbeck mempunyai beberapa kaitan penting dengan proses rawak yang terkenal (termasuk pergerakan Brown dan model Vasicek).

Hubungan dengan gerakan Brown

Proses Ornstein-Uhlenbeck boleh dianggap sebagai versi regresi rata-rata pergerakan Brownian. Pergerakan Brownian menggambarkan proses yang mempunyai trend dengan peningkatan bebas dan tidak mempunyai regresi rata-rata, sementara proses OU memperkenalkan regresi rata-rata pergerakan Brownian dengan menggunakan pengubahsuaian penggambaran, sehingga menarik semula proses ke pusat nilai. Secara matematik, jika kita menetapkan θ = 0, proses OU akan disederhanakan kepada pergerakan Brownian standard dengan turun naik:

img

Oleh itu, pergerakan brown adalah satu contoh yang luar biasa dalam proses OU, yang sepadan dengan ketiadaan regresi rata-rata.

Hubungan dengan model Vasicek

Model Vasicek digunakan secara meluas dalam pemodelan kadar faedah, yang pada dasarnya adalah aplikasi proses Ornstein-Uhlenbeck dalam evolusi kadar faedah. Model Vasicek mengandaikan kadar faedah mengikuti proses OU, di mana SDE ditakrifkan sebagai:

img

Di antaranya, rt mewakili kadar faedah jangka pendek, dan tafsiran parameter θ, μ dan δ adalah sama dengan tafsiran dalam proses OU. Model Vasicek dapat menghasilkan laluan kadar faedah regresi rata-rata, yang merupakan salah satu kelebihan utamanya dalam pemodelan kewangan.

Memahami hubungan-hubungan ini akan memberi pemahaman yang lebih luas tentang bagaimana proses OU digunakan dalam pelbagai persekitaran, terutamanya dalam bidang kewangan. Kami akan meneroka makna praktikal hubungan-hubungan ini ketika kami membincangkan contoh penggunaan di bawah.

Menggunakan Python untuk meniru proses Ornstein-Uhlenbeck

Dalam seksyen ini, kita akan membincangkan bagaimana menggunakan Python untuk meniru proses Ornstein-Uhlenbeck (OU). Ini melibatkan menggunakan pemisahan Euler-Maruyama untuk memisahan persamaan pembezaan rawak (SDE) yang menentukan proses OU.

Pengecoran SDE

Mari kita lihat semula formula matematik SDE di atas dan ringkasan setiap istilah:

img

Di antaranya:

  • Xt ialah nilai proses pada masa t.
  • θ ialah kelajuan kepada nilai rata.
  • μ ialah purata jangka panjang proses.
  • Δ ialah parameter kadar fluktuasi.
  • dWt menunjukkan peningkatan dalam proses Wiener (gerakan standard Brownian).

Untuk mensimulasikan proses ini di komputer, kita perlu melakukan disintegrasi SDE pada masa yang berterusan. Satu kaedah yang biasa digunakan adalah disintegrasi Euler-Maruyama, yang mengambil kira langkah masa yang kecil.imgProses yang hampir berterusan. Proses Ornstein-Uhlenbeck dalam bentuk yang berasingan diberikan oleh:

img

Di antaranya:imgadalah pembolehubah rawak yang diambil daripada pengagihan normal standard (iaituimg) ; Disentralisasi ini membolehkan kita mengulang-ulang mengira nilai Xt dari masa ke masa untuk meniru tingkah laku proses OU;

Pelaksanaan Python

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

Pertama, kita mengimport NumPy dan Matplotlib dengan cara standard. Kemudian, kita menetapkan semua parameter untuk model OU. Kemudian, kita menetapkan terlebih dahulu satu himpunan NumPy dengan panjang N untuk ditambahkan ke dalamnya selepas mengira laluan OU. Kemudian kita mengulangi langkah N-1 (langkah 1 adalah syarat awal yang ditetapkan X0), analogikan pengurangan rawak DW, dan kemudian mengira generasi seterusnya laluan OU berdasarkan formula matematik di atas. Akhirnya, gunakan Matplotlib untuk merangka sejarah laluan.

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 penggambaran menunjukkan:

img

Simulasi proses Ornstein-Uhlenbeck menggunakan Python

Perhatikan bagaimana proses ini dengan cepat menarik butiran dari keadaan awal X0 = 1 ke nilai purata μ = 0, dan apabila ia menyimpang dari nilai purata ini, ia menunjukkan kecenderungan untuk kembali ke nilai purata ini.

Ringkasan dan langkah seterusnya

Dalam artikel ini, kami meringkaskan proses Ornstein-Uhlenbeck, menerangkan formula matematiknya, dan menyediakan implementasi asas Python untuk meniru versi SDE masa berterusan yang terputus. Dalam artikel seterusnya, kami akan mengkaji SDE yang lebih kompleks yang dibina berdasarkan proses OU dan bagaimana mereka digunakan untuk perdagangan sistem dan aplikasi harga derivatif.

Kod penuh

# 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 asal:https://www.quantstart.com/articles/ornstein-uhlenbeck-simulation-with-python/


Lebih lanjut