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ğı.
Yasal Uyarı : Bu bir finansal tavsiye değildir. Makine öğrenimine odaklanmış bir Havacılık ve Uzay Mühendisliği doktorasına sahibim; finansal danışman değilim . Bu makale, yalnızca fizik tabanlı sinir ağlarının (PINN'ler) finansal bağlamdaki gücünü göstermeyi amaçlamaktadır.
16 yaşındayken fiziğe aşık oldum. Sebebi basit ama güçlüydü: Fiziğin adil olduğuna inanıyordum.
Hiçbir alıştırmada ışık hızının bir gecede değişmesi veya e x'in aniden negatif olabilmesi nedeniyle hata yapmadım. Fizik makalesi okuyup "Bu mantıklı görünmüyor" diye düşündüğüm her seferinde, aslında anlamayanın ben olduğum ortaya çıktı .
Dolayısıyla fizik her zaman adildir ve bu nedenle her zaman mükemmeldir . Fizik, diferansiyel denklemler olarak bilinen kurallar bütünü aracılığıyla bu mükemmelliği ve adaleti gösterir.

Bildiğim en basit diferansiyel denklem şudur:

Çok basit: t = 0 anında x₀ = 0 noktasından başlıyoruz ve saniyede 5 m'lik sabit bir hızla hareket ediyoruz. Bu, bir saniye sonra başlangıç noktasından 5 metre (veya isterseniz mil) uzakta olduğumuz anlamına gelir; iki saniye sonra başlangıç noktasından 10 metre uzaktayız; 43128 saniye sonra… Sanırım anladınız.
Dediğimiz gibi, bu kesin ve tartışılmaz bir gerçek. Ancak bunu gerçek hayatta hayal edin. Yürüyüşe çıktığınızı veya araba sürdüğünüzü düşünün. Hedeflediğiniz hızda gitmek için elinizden gelenin en iyisini yapsanız bile, bu hızı sürekli olarak koruyamazsınız. Zihniniz belirli noktalarda hızlanacak; dikkatiniz dağılabilir, kırmızı ışıklarda durabilirsiniz ve büyük olasılıkla bunların bir kombinasyonu yaşanacaktır. Bu nedenle, daha önce bahsettiğimiz basit diferansiyel denklem yeterli olmayabilir. Yapabileceğimiz şey, yapay zekâ yardımıyla diferansiyel denklemdeki konumunuzu tahmin etmeye çalışmaktır. Bu kavram , karmaşık sistemlerin modellenmesinde çok önemlidir.
Bu fikir , fizik bilgisine dayalı sinir ağlarında (PINN'ler) uygulanmaktadır . Bunları daha sonra daha ayrıntılı olarak açıklayacağız, ancak temel kavram, verileri, olayı tanımlayan diferansiyel denklemden bildiklerimizle eşleştirmeye çalışmamızdır . Bu, çözümümüzün genel olarak fizikten beklediğimiz şeyi karşılamasını sağlamak anlamına gelir. Bunun kara büyü gibi geldiğini biliyorum, ancak bu makale boyunca çok daha 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 sadece doğal evrenin yasalarıyla ilgilenenler için değil, finansal modellerde de faydalı olabiliyor . Örneğin, Black-Scholes modeli, belirli katı varsayımlar altında, risksiz bir portföy elde etmek için bir alım opsiyonunun fiyatını belirlemek üzere bir diferansiyel denklem kullanır.
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ış
Orijinal Black-Scholes model makalesini okumakla ilgileniyorsanız, burada bulabilirsiniz . Kesinlikle okumaya değer 🙂
Tamam, şimdi içinde bulunduğumuz finans dünyasını , değişkenleri ve onu yöneten kuralları anlamamız gerekiyor . Finansın temellerini ve Black-Scholes teoremiyle ilişkisini anlamak çok önemli.
Öncelikle, finans alanında, alım opsiyonu adı verilen güçlü bir araç vardır . Alım opsiyonu size gelecekte (diyelim ki bir yıl sonra) belirli bir fiyattan hisse senedi satın alma hakkı (ancak yükümlülüğü değil) verir; bu fiyata kullanım fiyatı denir.
Ş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.
Dolayısıyla, biraz düşündüğümüzde, hisse senedi alıp opsiyon satma fikri mükemmel bir dengeye sahip gibi görünüyor . Demek istediğim, bir hisse senedinin fiyatının rastgeleliği (yükselip alçalması) aslında doğru sayıda opsiyon tutarak azaltılabilir . Buna delta hedging denir ve temel bir risk yönetimi stratejisidir.
Bir dizi varsayıma dayanarak, risksiz bir portföy elde etmek için adil bir opsiyon fiyatı belirleyebiliriz . Bu kavram, Black-Scholes modelinin temelini oluşturmaktadır.
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.
Örneğin, bu grafik Black-Scholes modeline göre hisse senedi fiyatı (x) ile alım opsiyonu (y) arasındaki ilişkiyi göstermektedir.

Ş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ı
Fizik Bilgili Sinir Ağları (PINN'ler) ile ilgileniyorsanız, orijinal makaleye buradan göz atabilirsiniz . Tekrar söylüyorum, okumaya değer. 🙂
Yukarıdaki denklem analitiktir , ancak yine de ideal bir senaryoda adil bir fiyatı temsil etmektedir. Bunu bir an için göz ardı edip, hisse senedi fiyatına ve zamana bağlı olarak opsiyon fiyatını tahmin etmeye çalışırsak ne olur? Örneğin, ileri beslemeli bir sinir ağı kullanabilir ve bunu geri yayılım yöntemiyle eğitebiliriz. Bu yaklaşım, opsiyon fiyatlandırması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
Kodun tamamına, harika bir README.md dosyasına, mükemmel bir çalışma kitabına ve çok açık bir kıyaslama koduna buradan ulaşabilirsiniz . Bu kod, finansal modelleme alanında gelişmiş bir teknik 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ı
Kodun tamamı, config.json adını verdiğim çok basit bir yapılandırma dosyası kullanılarak çalıştırılabilir.
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ı , PINN ağınızı Torch kullanarak eğitmek için kullanılan main.py ve black_scholes.py dosyalarından geliyor.
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 modelinin uygulaması black_scholes.py dosyasında yer almaktadır :
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 oluşturucu (yapılandırma dosyasını düşünün) data.py dosyasının içinde yer almaktadır :
Eğrilik değerini de içeren yerleşik kayıp fonksiyonu loss.py dosyasında yer almaktadır . Bu fonksiyon, modelin doğruluğunu artırmak için çok önemlidir.
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.
Bütün bunları bir anda anlamanın kolay olmadığını biliyorum. Bazı alanlarda mecburen kısa tuttum, belki de gerekenden daha kısa. Ancak daha net bir anlayış istiyorsanız, tekrar söylüyorum, GitHub klasörüne bir göz atın. Yazılımla ilgilenmeseniz bile, projeyi adım adım açıklayan net bir README.md dosyası ve basit bir example/BlackScholesModel.ipynb örneği mevcut.
Yoruma kapalı.