Fizik Finansla Buluştuğunda: Black-Scholes Denklemini Çözmek İçin Yapay Zeka Kullanımı
İşte Python kullanarak finansal modelleri çözmek için Fizik Bilgili Sinir Ağları'nın nasıl kullanılacağı.
Sorumluluk reddi beyanıBu finansal tavsiye değildir. Makine öğrenimine yoğun bir şekilde odaklanan Havacılık Mühendisliği alanında doktora derecesine sahibim: Değilim Mali müşavir. Bu makalenin tek amacı finansal bağlamda fizik tabanlı sinir ağlarının (PINN) gücünü göstermektir.
16 yaşımda fiziğe aşık oldum. Sebebi basit ama güçlüydü: Fiziğin adil.
Bir egzersizde ışık hızının bir gecede değişmesi veya aniden e'nin değişmesi nedeniyle hiçbir zaman hata yapmadım.x Olumsuz Her fizik makalesi okuduğumda ve düşündüğümde, "Bu mantıklı değil" Ortaya çıktı Anlamayan bendim.
Yani fizik her zaman adildir ve bu yüzden her zaman Mükemmel. Fizik, bu mükemmelliği ve adaleti, "kurallar" olarak bilinen bir dizi kural aracılığıyla gösterir. diferansiyel denklemler.

Bildiğim en basit diferansiyel denklem şudur:

Çok basit: Buradan başlıyoruz, x0=0, t=0 anında sabit 5 m/s hızla hareket ediyoruz. Bu, 5 saniye sonra başlangıç noktasından 10 metre (veya isterseniz mil) uzakta olduğumuz anlamına gelir; 43128 saniye sonra başlangıç noktasına XNUMX metre uzaklıktayız; XNUMX saniyeden sonra... Anladınız sanırım.
Dediğimiz gibi, taşa yazılmıştır: mükemmel, mükemmel ve tartışmasız. Ancak bunu gerçek hayatta düşünün. Yürüyüşte veya araba kullanırken olduğunuzu hayal edin. Hedeflenen hızda gitmeye çalışsanız bile, onu sabit tutmayı asla başaramazsınız. Zihniniz bazı yerlerde yarışacak; Dikkatiniz dağılabilir, kırmızı ışıkta durabilirsiniz ve büyük ihtimalle yukarıdakilerin bir kombinasyonunu yaşayabilirsiniz. O halde belki de daha önce bahsettiğimiz basit diferansiyel denklem yeterli olmayabilir. Yapabileceğimiz şey, diferansiyel denklemden pozisyonunuzu tahmin etmeye çalışmaktır. ancak yardımla yapay zeka. Karmaşık sistemlerin modellenmesinde bu kavram oldukça önemlidir.
Bu fikir şu şekilde uygulanır: Fizik Bilgili Sinir Ağları (PİNN). Bunu daha sonra ayrıntılı olarak açıklayacağız, ancak fikir şu ki, eşleştirmeye çalışıyoruz her kim Olayı tanımlayan diferansiyel denklemden elde ettiğimiz veriler ve bildiklerimiz. Bu, çözümümüzün genel olarak fizikten beklentilerimizi karşılamasını zorunlu kıldığımız anlamına gelir. Bunun kara büyü gibi geldiğini biliyorum, ancak bu makale boyunca daha da netleşeceğine söz veriyorum.
Şimdi büyük soru:
Finansın fizikle ve fiziğe dayalı sinir ağlarıyla ne alakası var?
Görünüşe göre diferansiyel denklemler yalnızca doğal evrenin yasalarıyla ilgilenenler için değil, aynı zamanda şu konularda da faydalı olabilir: Finansal modeller. Örneğin, model şunu kullanır: Siyah okullar Belirli sıkı varsayımlarla bir çağrı opsiyonunun fiyatını belirlemek için bir diferansiyel denklem elde etmek Risksiz portföy.
Bu çok karmaşık girişin iki amacı vardı:
- Biraz kafanızı karıştırayım ki okumaya devam edebilesiniz :)
- Bütün bunların nereye varacağını merak edecek kadar meraklı olun.
Umarım başarmışımdır 😁. Eğer bunu yaparsanız, makalenin geri kalanı şu adımları izleyecektir:
- Tartışacağız Black-Scholes modeli, varsayımları ve diferansiyel denklemi
- Hakkında konuşacağız Fizik tabanlı sinir ağları (PINN'ler), nereden geldi ve neden yararlıdır
- Black-Scholes üzerinde PINN'i eğiten kendi algoritmamızı geliştireceğiz Python و Meşale و OOP.
- Algoritmamızın sonuçlarını göstereceğiz.
Heyecanlıyım! Laboratuvara! 🧪
1. Black-Scholes Modeli: Derinlemesine Bir Bakış
Black-Scholes modeliyle ilgili orijinal araştırma makalesini okumakla ilgileniyorsanız, buraya tıklayabilirsiniz. Burada. Kesinlikle okunmaya değer :)
Tamam, şimdi dünyayı anlamamız gerekiyor. التمويل Neredeyiz, değişkenler neler ve bunları yöneten yasalar neler? Finansın temellerini ve bunların Black-Scholes ile ilişkisini anlamak çok önemlidir.
Birincisi, finans alanında güçlü bir araç var. Bir seçenek Çağrı opsiyonu. Bir çağrı opsiyonu size belirli bir gelecekte (örneğin bir yıl sonra) belirli bir fiyattan hisse senedi satın alma hakkı verir (ancak yükümlülüğünü vermez), buna grev fiyatı denir. fiyat).
Şimdi bunu bir an düşünelim, ne dersiniz? Diyelim ki hisse senedinin bugünkü fiyatı 100 dolar. Ayrıca, 100$'lık bir vade opsiyonuna sahip olduğumuzu varsayalım. Şimdi, bir yıl içerisinde hisse senedi fiyatının 150 dolara çıktığını varsayalım. Bu harika! Bu çağrı opsiyonunu kullanarak hisse senedini satın alabilir ve hemen geri satabiliriz! Az önce 150$ - 100$ = 50$ kar elde ettik. Öte yandan hisse senedinin fiyatı bir yıl içinde 80 dolara düşerse bunu yapamayız. Aslında para kaybetmemek için satın alma hakkımızı hiç kullanmamamız daha iyidir.
Şimdi bunu düşündüğümüzde, fikir şu: hisse satın al و opsiyon satışı Bak Tamamen entegre. Demek istediğim, bir hisse senedi fiyatının rastgeleliği (yukarı ve aşağı hareket etmesi) aslında kolaylaştır Seçeneklerin doğru sayıda tutulmasıyla. İşte buna denir Delta korunma. Risk yönetiminde temel bir stratejidir.
Bir dizi varsayıma dayanarak şunu türetebiliriz: adil opsiyon fiyatı Cüzdan almak için Risksiz. Bu kavram Black-Scholes modelinin temelini oluşturur.
Sizi türetmenin tüm detaylarıyla sıkmak istemiyorum (açıkçası orijinal makalede takip edilmesi zor değil), ancak risksiz portföyün diferansiyel denklemi şu şekildedir:

Nerede:
Ct zamanındaki opsiyon fiyatıdırsigmaHisse senedinin oynaklığıdır.rRisksiz faiz oranıdır.tzaman (şimdi t=0 ve bitiş tarihinde T)Smevcut hisse senedi fiyatı nedir
Bu denklemden, risksiz bir portföy için bir çağrı opsiyonunun adil fiyatını türetebiliriz. Denklem kapalı ve analitiktir ve şöyle görünür:

ile:

Burada N(x) standart normal dağılımın kümülatif dağılım fonksiyonu (CDF), K vade fiyatı ve T vade sonu tarihidir.
Mesela bu bir grafik. Hisse senedi fiyatı (x) Karşısında Çağrı opsiyonu (y)Black-Scholes modeline göre.

Şimdi bunlar kulağa hoş geliyor, peki bunun fizikle ve PINN'le ne alakası var? Denklem analitik görünüyor, peki neden PINN? Neden yapay zeka? Peki ben bunu neden okuyorum ki? Cevap aşağıda 👇:
2. Fizik Bilgili Sinir Ağları
Eğer Fizik Bilgili Sinir Ağları (PINN) konusuna ilgi duyuyorsanız orijinal makaleye göz atabilirsiniz. Burada. Tekrar okunmaya değer. :)
Şimdi, yukarıdaki denklem AnalitikAma yine de bu, ideal bir senaryoda adil bir fiyatın denklemidir. Peki bunu bir an için göz ardı edip, opsiyon fiyatını hisse senedi fiyatı ve zamana göre tahmin etmeye çalışırsak ne olur? Örneğin, İleri Beslemeli Sinir Ağını kullanabilir ve onu geri yayılım yoluyla eğitebiliriz. Bu yaklaşım, opsiyon fiyatlamasında sinir ağlarının kullanımının temelini oluşturmaktadır.
Bu eğitim mekanizmasında hatayı en aza indiriyoruz:
L = |Estimated C - Real C|:

Bu iyi bir şey ve yapabileceğiniz en basit sinir ağı yaklaşımı. Buradaki sorun, Black-Scholes denklemini tamamen göz ardı etmemizdir. Peki başka bir yol var mı? Bunları birleştirebilir miyiz?
Elbette, hatayı şu şekilde ayarlarsak yapabiliriz:
L = |Estimated C - Real C|+ PDE(C,S,t)
burada PDE(C,S,t) şudur:

Mümkün olduğunca 0'a yakın olmalıdır:

Ama soru hala ortada duruyor. Bu neden basit Black-Scholes denkleminden "daha iyi"? Neden diferansiyel denklemi kullanmıyoruz? Çünkü bazen hayatta diferansiyel denklemleri çözmek size "gerçek" çözümü garantilemez. Fizik genellikle şeyleri yaklaşık olarak belirler ve bunu, beklentilerimizle gördüklerimiz arasında fark yaratacak şekilde yapar. İşte bu yüzden fizik tabanlı sinir ağları (PINN'ler) bu kadar şaşırtıcı ve harika bir araçtır: fiziğe uymaya çalışırsınız, ancak sonuçların veri kümenizde "gördüğünüz" ile eşleşmesi gerektiği konusunda katısınızdır. Bu yaklaşımı farklı kılan şey, fiziksel model ile deneysel verilerin bütünleştirilmesidir.
Bizim durumumuzda, risksiz bir portföy elde etmek için teorik Black-Scholes modelinin gözlemlediğimiz gürültülü, önyargılı veya eksik piyasa verileriyle tam olarak uyuşmadığını görebiliriz. Belki de oynaklık sürekli değildir. Belki de piyasa verimli değildir. Belki de denklemin ardındaki varsayımlar tutmuyor. İşte tam bu noktada PINN gibi bir yaklaşım işe yarayabilir. Sadece Black-Scholes denklemini tatmin eden bir çözüm bulmakla kalmıyoruz, aynı zamanda verilerden gördüğümüz şeye de "güveniyoruz". Bu, gerçek piyasa koşullarına daha esnek ve uyarlanabilir bir modelin ortaya çıkmasını sağlar.
Tamam, yeteri kadar teori. Hadi kodlayalım. 👨💻
3. Python kullanarak pratik uygulama
Tam kodu, harika bir README.md dosyasını, mükemmel bir not defterini ve süper net bir kalıp kodu bulabilirsiniz. Burada. Bu kod, finansal modelleme alanında ileri düzey bir yöntem olan PINN sinir ağlarını kullanarak Black-Scholes denklemini çözmek için özel olarak tasarlanmıştır.
Not: Bu kısım biraz yoğun olacak (çok fazla kod olacak) ve eğer yazılımla ilgilenmiyorsanız bir sonraki bölüme geçebilirsiniz. Sonuçları daha kolay bir şekilde göstereceğim :)
Buraya kadar gelebildiğin için çok teşekkür ederim ❤️
Bunu nasıl uygulayabileceğimize bakalım. Şimdi bu tekniğin Black-Scholes denklemlerini çözmede nasıl uygulanabileceğini, pratik ve detaylı yönlere odaklanarak inceleyelim.
3.1 Config.json dosyası
Tüm kod, adını verdiğim çok basit bir yapılandırma dosyası kullanılarak çalıştırılabilir. yapılandırma.json.
Daha sonra göreceğimiz gibi istediğiniz yere yerleştirebilirsiniz.
Bu dosya, simülasyonumuzu, veri üretimimizi ve model eğitimimizi yöneten tüm parametreleri tanımladığı için önemlidir. Her bir değerin neyi temsil ettiğini kısaca açıklayayım:
K: Uygulama fiyatı – Opsiyonun size gelecekte hisse senedini satın alma hakkı verdiği fiyat.T: Son teslim tarihine kadar geçen süre, yıllar içinde. izinT = 1.0Bu, opsiyonun bir birim (örneğin bir yıl) sonra sona ereceği anlamına gelir.r: risksiz faiz oranı Gelecekteki değerleri iskonto etmek için kullanılır. Bu bizim simülasyonumuzda belirlediğimiz faiz oranıdır.sigma: dalgalanma Hisse senedinin fiyatını tahmin etmenin ne kadar zor olduğunu veya ne kadar "riskli" olduğunu belirleyen hisse senedi. Tekrar ediyorum, bu bir simülasyon parametresidir.N_data: sayı sentetik veri noktaları Eğitim amaçlı yaratmak istediğimiz. Bu aynı zamanda desenin büyüklüğünü de belirleyecektir.min_Sوmax_S: Hisse senedi fiyat aralığı Sentetik veri oluştururken örneklemek istediğimiz. Minimum ve maksimum hisse senedi fiyatımız.bias: Opsiyon fiyatlarına eklenen opsiyonel ofsetVerilerde sistematik bir kaymayı simüle etmek için. Bu, gerçek dünya ile Black-Scholes verileri arasında bir karşıtlık yaratmak için yapılır.noise_variance: gürültü seviyesi Ölçüm veya piyasa gürültüsünü simüle etmek için opsiyon fiyatlarına eklenir. Bu parametre daha öncekiyle aynı sebepten dolayı eklenmiştir.epochs: sayı tekrarlar Modelin eğitileceği.lr: öğrenme oranı Hayırsever için. Bu, eğitim sırasında modelin ne kadar hızlı güncelleneceğini kontrol eder.log_interval:(Yaşlara göre) istediğimiz zaman sayısı Kayıtları yazdır Eğitim ilerlemesini izlemek.
Bu parametrelerin her biri belirli bir rol oynar; bazıları simüle ettiğimiz finansal dünyayı şekillendirirken, diğerleri sinir ağımızın bu dünyayla nasıl etkileşime girdiğini kontrol eder. Burada yapacağınız küçük değişiklikler, dosyanın hem güçlü hem de hassas olmasını sağlayarak, tamamen farklı davranışlara yol açabilir. Bu JSON dosyasının değerlerini değiştirmek kodunuzun çıktısını kökten değiştirecektir.
3.2 main.py (main.py dosyası)
Şimdi kodun geri kalanının bu yapılandırmayı pratikte nasıl kullandığına bakalım.
Kodumuzun ana kısmı şuradan geliyor: ana.pyPINN ağınızı Torch kullanarak eğitmek için, siyah_okullar.py.
Bu main.py dosyasıdır:
Yani yapabileceğiniz şey şu:
- Kendi config.json dosyanızı oluşturun
- Komutu çalıştır
python main.py --config config.json
main.py dosyası birçok başka dosya tarafından kullanılır.
3.3 black_scholes.py ve yardımcıları
Black-Scholes modeli uygulaması dosya içerisinde yer almaktadır. siyah_scholes.py:
Bu dosya, modeli oluşturmak, eğitmek, dışa aktarmak ve tahmin etmek için kullanılabilir.
Fonksiyon ayrıca data.py, loss.py ve model.py gibi bazı yardımcı dosyaları da kullanır.
Dosyanın içerisinde bir Torch şablonu bulunmaktadır. model.py:
Veri üreteci (yapılandırma dosyası açısından) dosyanın içerisinde yer almaktadır. veri.py:
Eğim değerini içeren entegre kayıp fonksiyonu şudur: kayıp.py. Bu fonksiyon modelin doğruluğunu artırmak için gereklidir.
4. Sonuçlar
Peki main.py'ı çalıştırdığımızda ileri beslemeli sinir ağımız (FFNN) eğitilmiş olur ve aşağıdakileri elde ederiz:

Gördüğünüz gibi model hatası tam olarak 0 değil, ancak modelin PDE denklemi verilerden çok daha küçük. Bu, modelin (doğal olarak) öngörülerimizi diferansiyel denklemleri tatmin edecek şekilde güçlü bir şekilde zorladığı anlamına gelir. Az önce de söylediğimiz gibi, hem elimizdeki veriler açısından hem de Black-Scholes modeli açısından performansı iyileştiriyoruz.
Gürültülü + önyargılı (oldukça gerçekçi) gerçek dünya veri kümesi ile PINN ağı arasında niteliksel olarak yüksek bir eşleşme gözlemleyebiliyoruz.

Bunlar t = 0 olduğunda ve hisse senedi fiyatı çağrı opsiyonuyla sabit bir t değerinde değiştiğinde ortaya çıkan sonuçlardır. Çok hoş, değil mi? Ama henüz bitmedi! Yukarıdaki kodu kullanarak sonuçları iki şekilde inceleyebilirsiniz:
- Birçok kişiyle oynamak parametreler config.json'da yer almaktadır
- Tahminleri şu adreste görüntüleyin: t>0
Dinliyorum! :)
5. Sonuçlar
Buraya geldiğiniz için çok teşekkür ederim. Gerçekten uzun bir yolculuktu 😅
Bu yazımızda şunları ele aldık:
- Fizikle başladık.ve diferansiyel denklemler olarak yazılan yasalarının adil, güzel ve (genellikle) öngörülebilir olduğu.
- Finansa geçtikVe Black-Scholes Modeli ile tanıştık; bu model, opsiyonları risksiz bir şekilde fiyatlandırmayı amaçlayan bir diferansiyel denklemdir.
- Fizik tabanlı sinir ağlarını (PINN) inceledik., yalnızca verilere uymakla kalmayıp aynı zamanda altta yatan diferansiyel denklemi de dikkate alan bir sinir ağı türüdür. PINN'ler karmaşık sistemleri modellemek için güçlü bir araçtır.
- Her şeyi Python'da yaptık.PyTorch'u ve parametreleri ayarlamanıza, sentetik veriler üretmenize ve Black-Scholes denklemini çözmek için kendi PINN'lerinizi eğitmenize olanak tanıyan temiz bir kıyaslama veritabanını kullanıyoruz.
- Sonuçları fotoğrafladık. Ağın yalnızca gürültülü verileri değil, aynı zamanda Black-Scholes denkleminden beklenen davranışı da eşleştirmeyi nasıl öğrendiğini gördük.
Bunların hepsini bir anda hazmetmenin kolay olmadığını biliyorum. Bazı yerlerde mecburen kısa kaldım, hatta gerektiğinden daha kısa kaldım. Ancak, olaylara daha net bir şekilde bakmak istiyorsanız, yine şuraya bir bakın: GitHub klasörü. Yazılımla ilgilenmiyorsanız bile, anlaşılır bir README.md dosyası ve basit bir şablon mevcut. örnek/BlackScholesModel.ipynb Proje adım adım anlatılıyor.
Yoruma kapalı.