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.
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:
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.
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.
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-ciri utama proses Ornstein-Uhlenbeck boleh diringkaskan sebagai berikut:
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.
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.
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.
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.
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.
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.
Rumus pembezaan dalam proses Ornstein-Uhlenbeck adalah asas penyelesaian. Untuk menyelesaikan SDE ini, kita menggunakan faktor integrasi. Mari kita tulis semula SDE:
Pertama, kita perlu mengalikan kedua-dua belah pihak dengan faktor integratif. :
Perhatikan, jika kita tambah kedua-dua belah.Jika anda mempunyai dua mata, maka anda akan mempunyai dua mata, dan jika anda mempunyai dua mata, anda akan mempunyai dua mata.
Jika kita mengintegrasikan kedua-dua belah dari 0 ke t, kita akan mendapat:
Ini adalah penyelesaian umum untuk Ornstein-Uhlenbeck SDE.
Penyelesaian eksplisit yang disimpulkan di atas mempunyai beberapa makna penting.Menunjukkan nilai awal yang merosot dari masa ke masa, menunjukkan bagaimana proses ini secara beransur-ansur terlupa dari mana ia bermula; kedua.Menunjukkan 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.
Proses Ornstein-Uhlenbeck mempunyai beberapa kaitan penting dengan proses rawak yang terkenal (termasuk pergerakan Brown dan model Vasicek).
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:
Oleh itu, pergerakan brown adalah satu contoh yang luar biasa dalam proses OU, yang sepadan dengan ketiadaan regresi rata-rata.
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:
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.
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.
Mari kita lihat semula formula matematik SDE di atas dan ringkasan setiap istilah:
Di antaranya:
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.Proses yang hampir berterusan. Proses Ornstein-Uhlenbeck dalam bentuk yang berasingan diberikan oleh:
Di antaranya:adalah pembolehubah rawak yang diambil daripada pengagihan normal standard (iaitu) ; Disentralisasi ini membolehkan kita mengulang-ulang mengira nilai Xt dari masa ke masa untuk meniru tingkah laku proses OU;
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:
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.
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/