مشغل فورييه العصبي للنمذجة المالية القائمة على PDE
لقد قامت كل شبكة عصبية في هذه المدونة حتى الآن بتقريب وظيفة: الميزات الواردة والرقم الخارج. يعمل مشغل فورييه العصبي على تقريب المشغل — خريطة بين مساحات الوظائف غير المحدودة الأبعاد، حيث يكون الإدخال عبارة عن سطح تقلب كامل والمخرجات عبارة عن سطح سعر كامل. هذا كائن مختلف، ويحتاج إلى آلات مختلفة، والآلات هي الهدف من هذه المقالة: نواة ذات قيمة معقدة قابلة للتعلم يتم تطبيقها على أوضاع فورييه الأدنى، ويتم تقييمها من خلال رحلة ذهاب وإياب FFT في .
تسعير الخيارات هو المكان الذي يهبط فيه هذا في التمويل. بلاك سكولز، هيستون، التقلبات المحلية - جميع PDEs، تم حلها جميعًا اليوم بمعلمة واحدة يتم تحديدها في كل مرة. يتعلم المشغل عائلة المعلمات بأكملها مرة واحدة، ويكون التمرير الأمامي الناتج عبارة عن نواة GPU مجمعة واحدة بدلاً من حلقة السير الزمني.
هذا هو الوعد. تفصل النسخة الصادقة من هذه المقالة الآليات، التي تعتبر صلبة وقابلة للتكرار من الكود أدناه، عن مطالبات الأداء، والتي تم الإبلاغ عنها في أدبيات FNO مقابل خطوط الأساس التي لن يقبلها أحد في هذه السلسلة دون فحص. الميكانيكا تأتي أولا. ويأتي جدول أعمال القياس في النهاية، مع وضع علامة "غير منتهية" عليه.
من تقريب الوظائف إلى تعلم المشغلين
الشبكات العصبية الكلاسيكية وظائف تقريبية: إعطاء مدخلات ، ينتجون مخرجات . وهذا أمر قوي، ولكنه محدود بشكل أساسي عندما تكون الأشياء موضع الاهتمام هي في حد ذاتها وظائف. في حل PDE المالي، لا يكون الإدخال رقمًا واحدًا - بل هو دالة تصف الظروف الأولية/الحدودية، أو سطح التقلب، أو بنية المصطلح. الإخراج هو وظيفة أخرى: سطح السعر فضاء.
تعلم المشغلين يرفع المشكلة إلى مساحات غير محدودة الأبعاد. بدلا من التعلم ، نتعلم عامل:
أين و هي مساحات Banach من الوظائف. لتسعير الخيارات، قد تكون مساحة السطوح المتطايرة و مساحة الأسطح السعرية المقابلة .
تهيمن بنيتان على مشهد تعلم المشغل:
-
DeepONEt (Lu et al., 2021): يستخدم شبكة فرعية لتشفير وظيفة الإدخال وشبكة اتصال رئيسية لتشفير موقع الاستعلام. الإخراج هو منتجهم الداخلي. ترتكز على نظرية التقريب العالمي للمشغلين من قبل تشين وتشين (1995).
-
مشغل فورييه العصبي (لي وآخرون، 2021): يحدد معلمات النواة المتكاملة في مساحة فورييه، باستخدام تحويل فورييه السريع للالتفاف العالمي الفعال. القرار ثابت عن طريق البناء.
كلاهما مقاربان عالميان للمشغلين المستمرين، لكن FNO يتمتع بميزة هيكلية لمشكلات PDE: حيث يلتقط انحيازه الطيفي بشكل طبيعي البنية العالمية الناعمة لحلول PDE. كما أن لديها عيبًا هيكليًا فيما يتعلق بمكافآت الخيارات على وجه التحديد، والتي سنعود إليها - إن أساس فورييه المقطوع والعقدة في الإضراب ليسا حلفاء طبيعيين.
هندسة FNO بالتفصيل
مشغل فورييه العصبي، الذي قدمه لي وآخرون. في ICLR 2021، يعتمد على ملاحظة بسيطة ولكنها قوية: وظيفة Green (النواة المتكاملة) للعديد من PDEs لها تمثيل مضغوط في مساحة فورييه. بدلاً من تعلم النواة في الفضاء المادي – وهو ما يتطلب المعلمات ل نقاط الشبكة - يتعلمها FNO في مساحة التردد بأدنى مستوى فقط وسائط، والحد من التعقيد ل عبر الاتحاد الفرنسي للتنس.
العمارة التكرارية
يتكون FNO من:
-
** طبقة الرفع **: خريطة خطية نقطية تعرض المدخلات من بُعد القناة الأصلية إلى تمثيل كامن ذي أبعاد أعلى: .
-
طبقات فورييه (متكررة مرات): تنطبق كل طبقة:
أين هو تحويل خطي محلي (نقطة الالتفاف) و هو مشغل متكامل عالمي يتم تنفيذه عبر التحويل السريع FFT:
هنا يدل على FFT ، عبارة عن موتر وزن معقد قابل للتعلم يتم تطبيقه على المستوى الأدنى أوضاع فورييه، و هو تنشيط غير خطي نقطي (عادةً GELU).
- طبقة الإسقاط : يقوم بتعيين التمثيل الكامن مرة أخرى إلى بُعد الإخراج: .
لماذا مساحة فورييه؟
الالتفاف الطيفي هو الضرب في مجال التردد، وهو ما يعادل الالتواء الشامل في الفضاء المادي - ولكن يتم حسابه في بدلاً من . هذه ليست مجرد خدعة الكفاءة. عادةً ما تكون حلول PDE سلسة وتهيمن عليها مكونات منخفضة التردد. عن طريق الاقتطاع ل في الأوضاع، يعمل FNO كمرشح تمرير منخفض قابل للتعلم والذي ينظم الحل بشكل طبيعي ويتجنب التحف عالية التردد.
والأهم من ذلك، يُزعم أن FNO ثابت في التمييز: بمجرد تدريبه على شبكة ذات حجم ، ويمكن تقييمه على أي قرار ببساطة عن طريق ضبط حجم FFT والحشوة الصفرية أو اقتطاع الأوزان الطيفية. تعد خاصية الدقة الفائقة ذات اللقطة الصفرية هذه فريدة من نوعها بين حلول PDE العصبية - وهي المطالبة الأولى في هذه المقالة التي تستحق القياس بدلاً من الاستشهاد. انظر جدول القياس أدناه.
جهاز PDE الذي نتعلم المشغل له
إن Black-Scholes PDE - المشتق والمفصل حسب المصطلح، والمعطى مع حل المكالمة/الوضع المغلق في صيغة بلاك سكولز - هو هدف المشغل:
وكل ما يلي يعامله كصندوق أسود له إجابة معروفة. هذه الإجابة المعروفة هي بالضبط سبب كونها حالة الاختبار الصحيحة: يمكن تسجيل عامل تم تدريبه على مخرجات ذات فروق محدودة مقابل norm.cdf الأسعار الدقيقة، والتي لا يمكن لأي معيار FNO في الأدبيات القيام بها تقريبًا.
صياغة FNO
نحن نعيد صياغة المشكلة كتعلم المشغل. تحديد:
- وظيفة الإدخال : يشفر معلمات PDE. يمكن أن يشمل ذلك سطح التقلب ووظيفة المردود والمعدل الخالي من المخاطر كقنوات مكدسة على شبكة.
- وظيفة الإخراج : سطح سعر الخيار.
يتعلم FNO من مجموعة بيانات أزواج تم إنشاؤها بواسطة حلالا التقليدية. بعد التدريب، يكون الاستدلال لأي تكوين معلمة جديد عبارة عن تمريرة أمامية واحدة.
توليد بيانات التدريب
import numpy as np
from scipy.stats import norm
def black_scholes_fd(sigma, r, K, T, S_max=300, N_S=256, N_t=256):
"""Solve Black-Scholes PDE via explicit finite differences.
NOTE: this is an interpreted double loop — the *worst* CPU baseline,
exactly the kind called out in /en/blog/post/when-gpu-pays-off-sweep-roofline.
It is fine for generating training data offline. It is NOT the baseline
any speedup claim should be measured against; vectorize the inner loop
over i (or use scipy sparse + implicit stepping) before timing anything.
"""
dS = S_max / N_S
dt = T / N_t
S = np.linspace(0, S_max, N_S + 1)
V = np.maximum(S - K, 0).astype(np.float64)
for j in range(N_t):
V_new = V.copy()
for i in range(1, N_S):
delta = (V[i+1] - V[i-1]) / (2 * dS)
gamma = (V[i+1] - 2*V[i] + V[i-1]) / (dS**2)
V_new[i] = V[i] + dt * (
0.5 * sigma**2 * S[i]**2 * gamma
+ r * S[i] * delta
- r * V[i]
)
V_new[0] = 0
V_new[N_S] = S_max - K * np.exp(-r * (T - (j+1)*dt))
V = V_new
return S, V
للتدريب، نقوم بأخذ عينات من آلاف تكوينات المعلمات - المتفاوتة , , , - وحل كل منها بطريقة الفرق المحدود. مجموعة البيانات الناتجة من أزواج المدخلات والمخرجات هي ما يتعلمه FNO.
التوسع: نموذج هيستون العشوائي للتقلب
التقلب المستمر هو افتراض خاطئ معروف، وسبب فشله - الابتسامة، والذيول السمينة - هو موضوع قسم "الواقع القاسي" في [صيغة بلاك سكولز] (/ar/blog/post/black-scholes-options-pricing). قام هيستون بإصلاحه عن طريق جعل التباين متغير حالة ثانٍ:
مع . PDE المقابل لسعر الخيار ثنائي الأبعاد في الفضاء:
هذا هو المكان الذي يحظى فيه التعلم التشغيلي بمكانته، وتكون الحجة بنيوية وليست تجريبية. مخططات الفرق المحدود على أ مقياس الشبكة كما ، المصطلح المشتق يعقد عملية التمييز وكل مجموعة معلمات جديدة يدفع التكلفة الكاملة مرة أخرى. يدفعها المشغل مرة واحدة في وقت التدريب. يتم أيضًا تعيين البنية المكانية ثنائية الأبعاد لـ Heston PDE مباشرةً على 2D FFT في طبقات فورييه، وبالتالي فإن البنية أدناه تعمم مع تغيير البعد بدلاً من إعادة التصميم.
FNO لتسعير الخيارات: تنفيذ PyTorch
يوجد أدناه تطبيق FNO كامل ومكتفي بذاته لتعلم مشغل Black-Scholes. الهندسة المعمارية تتبع لي وآخرون. (2021) مع تعديلات الوضع المالي.
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.fft import rfft, irfft
class SpectralConv1d(nn.Module):
"""1D Fourier layer: spectral convolution via FFT."""
def __init__(self, in_channels: int, out_channels: int, modes: int):
super().__init__()
self.in_channels = in_channels
self.out_channels = out_channels
self.modes = modes # Number of Fourier modes to keep
scale = 1.0 / (in_channels * out_channels)
self.weights = nn.Parameter(
scale * torch.randn(in_channels, out_channels, modes, dtype=torch.cfloat)
)
def forward(self, x: torch.Tensor) -> torch.Tensor:
batch_size = x.shape[0]
x_ft = rfft(x, dim=-1)
out_ft = torch.zeros(
batch_size, self.out_channels, x_ft.size(-1),
dtype=torch.cfloat, device=x.device
)
out_ft[:, :, :self.modes] = torch.einsum(
"bix,iox->box", x_ft[:, :, :self.modes], self.weights
)
return irfft(out_ft, n=x.size(-1), dim=-1)
class FNOBlock(nn.Module):
"""Single Fourier Neural Operator block."""
def __init__(self, channels: int, modes: int):
super().__init__()
self.spectral_conv = SpectralConv1d(channels, channels, modes)
self.pointwise = nn.Conv1d(channels, channels, kernel_size=1)
self.norm = nn.InstanceNorm1d(channels)
def forward(self, x: torch.Tensor) -> torch.Tensor:
return F.gelu(self.norm(self.spectral_conv(x) + self.pointwise(x)))
class FNO1d(nn.Module):
"""
Fourier Neural Operator for 1D PDE problems.
Learns the mapping: PDE parameters -> solution function
"""
def __init__(
self,
in_channels: int = 3, # e.g., sigma(S), payoff(S), grid(S)
out_channels: int = 1, # V(S)
hidden_channels: int = 64,
modes: int = 32,
num_layers: int = 4,
):
super().__init__()
self.lift = nn.Linear(in_channels, hidden_channels)
self.blocks = nn.ModuleList(
[FNOBlock(hidden_channels, modes) for _ in range(num_layers)]
)
self.proj = nn.Sequential(
nn.Linear(hidden_channels, 128),
nn.GELU(),
nn.Linear(128, out_channels),
)
def forward(self, x: torch.Tensor) -> torch.Tensor:
x = self.lift(x) # -> (batch, spatial, hidden)
x = x.permute(0, 2, 1) # -> (batch, hidden, spatial)
for block in self.blocks:
x = block(x)
x = x.permute(0, 2, 1) # -> (batch, spatial, hidden)
return self.proj(x) # -> (batch, spatial, out_channels)
حلقة التدريب
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset
def train_fno_black_scholes():
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
N_samples = 5000
N_S = 256
S_max = 300.0
S_grid = np.linspace(0, S_max, N_S + 1)
inputs, targets = [], []
for _ in range(N_samples):
sigma = np.random.uniform(0.05, 0.80)
r = np.random.uniform(0.01, 0.10)
K = np.random.uniform(50, 150)
T = np.random.uniform(0.1, 2.0)
_, V = black_scholes_fd(sigma, r, K, T, S_max=S_max, N_S=N_S)
sigma_field = np.full(N_S + 1, sigma)
payoff = np.maximum(S_grid - K, 0)
grid_norm = S_grid / S_max
inp = np.stack([sigma_field, payoff, grid_norm], axis=-1)
inputs.append(inp)
targets.append(V[:, None])
X = torch.tensor(np.array(inputs), dtype=torch.float32)
Y = torch.tensor(np.array(targets), dtype=torch.float32)
dataset = TensorDataset(X, Y)
loader = DataLoader(dataset, batch_size=64, shuffle=True)
model = FNO1d(in_channels=3, out_channels=1, hidden_channels=64, modes=32).to(device)
optimizer = optim.AdamW(model.parameters(), lr=1e-3, weight_decay=1e-4)
scheduler = optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=200)
for epoch in range(200):
model.train()
total_loss = 0.0
for batch_x, batch_y in loader:
batch_x, batch_y = batch_x.to(device), batch_y.to(device)
pred = model(batch_x)
loss = torch.mean(
torch.norm(pred - batch_y, dim=1)
/ torch.norm(batch_y, dim=1).clamp(min=1e-8)
)
optimizer.zero_grad()
loss.backward()
optimizer.step()
total_loss += loss.item()
scheduler.step()
if (epoch + 1) % 20 == 0:
avg = total_loss / len(loader)
print(f"Epoch {epoch+1:3d} | Relative L2 Loss: {avg:.6f}")
return model
الاستدلال: التسعير في الوقت الحقيقي
@torch.no_grad()
def price_option(model, sigma, K, S_grid, device="cuda"):
"""
Price a European call for given sigma and strike.
Returns prices for all S in S_grid — single forward pass.
"""
S_max = S_grid[-1]
payoff = np.maximum(S_grid - K, 0)
grid_norm = S_grid / S_max
sigma_field = np.full_like(S_grid, sigma)
inp = np.stack([sigma_field, payoff, grid_norm], axis=-1)
x = torch.tensor(inp, dtype=torch.float32).unsqueeze(0).to(device)
pred = model(x)
return pred.squeeze().cpu().numpy()
FNO مقابل PINNs: مقارنة عملية
تمثل الشبكات العصبية المستنيرة بالفيزياء ومشغلي فورييه العصبيين فلسفات مختلفة بشكل أساسي لحل أجهزة PDE مع الشبكات العصبية. إن فهم المفاضلات الخاصة بهم هو السبب العملي للاهتمام بتعلم المشغلين على الإطلاق.
أرقام التعريف الشخصية (PINNs): تحسين لكل مثيل
تضع أرقام PINN بقايا PDE مباشرة في الخسارة - مشكلة Navier-Stokes تغطي الآلية، والفرق التلقائي physics_loss التنفيذ، ونتائج بحث التفرد في DeepMind. الخاصية الوحيدة المهمة هنا هي الخاصية الهيكلية: يتم تدريب رقم التعريف الشخصي (PINN) لكل مجموعة معلمات. التغيير , , أو وقمت بالتحسين مرة أخرى من الصفر.
نقاط القوة: لا توجد بيانات مصنفة مطلوبة. يفرض مباشرة هيكل PDE. يعمل مع أي PDE يمكنك كتابته.
** نقاط الضعف **: يجب إعادة التدريب لكل مجموعة معلمات جديدة . يتضمن التدريب موازنة شروط الخسارة المتعددة (PDE المتبقية، وشروط الحدود، والشروط الأولية) والتي غالبًا ما تؤدي إلى أمراض التحسين. يمكن أن يكون التقارب بطيئًا — عادةً ما يتراوح بين 10000 إلى 100000 خطوة متدرجة لكل حالة مشكلة. يفشل في الأنظمة متعددة النطاق والفوضوية حيث يصبح مشهد الخسارة غير محدب إلى حد كبير.
FNO: تعلم المشغل المطفأ
يتعلم FNO مشغل الحل من البيانات. يتطلب الأمر مجموعة بيانات تدريبية تم إنشاؤها بواسطة حل كلاسيكي، ولكن بمجرد التدريب، يتم تعميمها عبر مساحة المعلمة بأكملها.
نقاط القوة: استنتاج أقل من مللي ثانية في المعايير المنشورة. تعميم على المعلمات غير المرئية دون إعادة التدريب. الدقة الثابتة — التدريب على دقة منخفضة، والتقييم على دقة عالية. يتعامل بشكل طبيعي مع حلول PDE السلسة عبر التحيز الطيفي.
نقاط الضعف: تتطلب بيانات تدريب من أحد الحلول الكلاسيكية (مسألة الدجاجة والبيضة لأجهزة PDEs الجديدة حقًا). خطأ التقريب محدود ولكنه غير صفري. أقل قابلية للتفسير من الأساليب المقيدة بـ PDE. والتحيز الطيفي الذي يساعد في إيجاد حلول سلسة هو مسؤولية عند نقطة المكافأة.
مقارنة وجها لوجه
الجدول أدناه ** تم الإبلاغ عنه في الأدبيات، ولم يتم قياسه هنا ** — تأتي صفوف الدقة والتسريع على وجه الخصوص من Li et al. (2021) ومتابعة العمل على معايير مرنة، وليس من تسعير الخيارات على أجهزتنا. اقرأ الصفوف الهيكلية (البيانات المطلوبة، التعميم، ثبات الدقة) باعتبارها الصفوف الموثوقة.
| المعيار | رقم التعريف الشخصي | فنو |
|---|---|---|
| بيانات التدريب المطلوبة | لا شيء (غير خاضع للرقابة) | أزواج تم إنشاؤها بواسطة Solver |
| تكلفة الاستدلال | إعادة التدريب الكامل لكل مثيل | تمريرة أمامية فردية |
| التعميم | مجموعة معلمات واحدة | عائلة المعلمة بأكملها |
| ثبات القرار | لا | تمت المطالبة بنعم - انظر جدول الأعمال أدناه |
| PDEs متعدد النطاق | كثيرا ما يفشل | ذكرت قوية |
| الدقة (نسبية ، الأدب) | ل | ل |
الهجين: المشغلون العصبيون المطلعون على الفيزياء (PINO)
يجمع بينو (لي وآخرون، 2024) بين كلا النهجين. يستخدم بنية FNO ولكنه يزيد من الخسارة المستندة إلى البيانات بمصطلح PDE المتبقي:
التحلل هو الجزء المفيد. يثبت المشغل لحل مشكلة الإخراج أينما كان لديك؛ يقيدها في كل مكان لا تفعله، بما في ذلك مناطق مساحة المعلمة التي لم تقم بأخذ عينات منها مطلقًا. بالنسبة لتسعير الخيارات، يعتبر هذا المصطلح الثاني جذابا لسبب خاص بالتمويل: إن المتبقي من PDE هو قيد * صعب * يمكنك أيضا تقييمه في وقت الاستدلال كفحص ذاتي، وهو أساس احتياطي المراقبة المتبقية أدناه.
الاعتبارات العملية لنشر الإنتاج
النصف العام من هذا - ميزانيات زمن الوصول الاستدلالي، وبناء خط أنابيب البيانات، ومراقبة الانجراف، وإعادة التدريب الدوري - تمت تغطيته بالفعل لنموذج عصبي في نظام التداول في قسم الإنتاج من [DeepLOB: التعلم العميق على كتب أوامر الحد] (/ar/blog/post/deeplob-deep-learning-order-book)، وينطبق دون تغيير. ما يلي هو فقط ما هو خاص بالمشغل.
خط أنابيب البيانات: أخذ عينات من مساحة المعلمة
إن توليد بيانات التدريب هو عنق الزجاجة الرئيسي، وعلى عكس نموذج بيانات السوق، فإنك تختار التوزيع الخاص بك - مما يعني أنه يمكنك أن تخطئ بطريقة غير مرئية في الخسارة. بالنسبة لمشغل بلاك سكولز مع 4 معلمات، يكفي 5000-10000 عينة. بالنسبة إلى Heston مع 5 معلمات بالإضافة إلى مجال مكاني ثنائي الأبعاد، فإن 20.000 إلى 50.000 عينة نموذجية. استخدم أخذ العينات التكيفية: قم بتركيز العينات في مناطق المعلمات حيث يختلف الحل بسرعة - قريب من المال، وآجال استحقاق قصيرة، وتقلبات عالية - لأن أخذ العينات الموحدة للصندوق ينفق معظم ميزانيته على مناطق ITM العميقة ومناطق OTM العميقة حيث يكون المشغل خطيًا تقريبًا ويتعلم جيدًا من أمثلة قليلة جدًا.
ضبط الهندسة المعمارية
- الأوضاع (): ابدأ ب أين هو حجم الشبكة المكانية. ل ، استخدم 32-64 وضعًا. هناك أوضاع قليلة جدًا تفقد التفاصيل بالقرب من حدود الضربة؛ الكثير من الإفراط في الضوضاء.
- الطبقات: 4 طبقات فورييه قياسية. تساعد الشبكات الأعمق (6-8) في حل المشكلات ثنائية الأبعاد مثل Heston ولكنها تزيد الذاكرة.
- القنوات الخفية: 64 لـ 1D بلاك سكولز، 128 لـ 2D هيستون. مقياس مع تعقيد المشكلة.
الدقة: سؤال fp32
SpectralConv1d يخصص torch.cfloat - مجمع أحادي الدقة - وكل رحلة FFT ذهابًا وإيابًا تعمل بهذه الدقة. لقد شاهدت هذه المدونة بالفعل خط أنابيب مالي fp32 يعيد القمامة الصامتة في The GPU Precision Trap، حيث فقدت صيغة مجموع البادئة الصحيحة رياضيًا بشكل كارثي عند مقادير fp32. السؤال المماثل هنا مباشر: في مع الأسعار المقتبسة إلى المائة، هل تصمد رحلة ذهابًا وإيابًا طيفية FP32 إلى مطلق، أم أن النمو المتوسط الحجم لـ FFT يأكل آخر الأرقام المهمة؟
التحكم في الأخطاء
بالنسبة لتسعير خيارات الإنتاج، تحتاج إلى حدود الخطأ التي يمكنك الدفاع عنها.
- عدم اليقين المُعيَّر: الانحراف المعياري للمجموعة ليس ضمانًا للتغطية، وهذه المدونة لديها الآلية اللازمة للقيام بذلك بشكل صحيح — تقسيم التوافقي على شبكة معلمات محتجزة، مع ACI/DtACI للحالة غير القابلة للتبديل، في التنبؤ المطابق لتحديد حجم مركز التداول مع مراعاة المخاطر. التفاف FNO في انقسام مطابق على توفر الشبكة فترات زمنية خالية من التوزيع على السعر.
- المراقبة المتبقية: قم بحساب المتبقي من PDE للتنبؤ FNO كفحص لاحق. لو ، ارجع إلى الحل الكلاسيكي. هذا مجاني عند الاستدلال - الباقي عبارة عن استنسل ذو فروق محدودة في مصفوفة لديك بالفعل.
- التعلم النشط: قم بتوجيه المدخلات ذات درجة عدم اليقين العالية إلى أداة الحل الكلاسيكية، ثم أضف النتائج إلى مجموعة التدريب، وأعد التدريب بشكل دوري. عرض الفاصل الزمني المطابق من (1) هو إشارة التوجيه الطبيعية.
جدول أعمال القياس
هذا هو الجزء الذي يقرر ما إذا كانت البنية المذكورة أعلاه تستحق النشر أم لا، ولم يتم تنفيذ أي منها بعد. لقد تم إدراجه هنا بدلاً من دفنه لأن البديل - التأكيد على تسريع العنوان - هو على وجه التحديد السجل الذي توجد هذه المدونة لتجنبه.
1. التسريع عبارة عن منحنى، وليس رقمًا. عندما تؤتي وحدة معالجة الرسومات ثمارها تحدد الشكل: ، يرتفع من النفقات العامة التي يهيمن عليها عند إلى هضبة مرتبطة بالحوسبة، ويظهر عنوانًا رئيسيًا يتحلل 167x إلى 27x من الخوارزمية مضروبًا في 6.2x من الأجهزة. يجب أن يتبع قياس FNO هذا القالب: ساعة الحائط عند التمريرة الأمامية والإبلاغ عن المنحنى بأكمله. والأهم من ذلك، أن خط الأساس يجب أن يكون متجهًا ومتعدد النواة لحل الفروق المحدودة — black_scholes_fd أعلاه عبارة عن حلقة مزدوجة مفسرة، وهو خط الأساس الدقيق "لأسوأ تنفيذ لوحدة المعالجة المركزية" الذي تذكره المقالة، ومقارنة مشغل GPU المُجمّع به سيؤدي إلى إنتاج رقم لا يعني شيئًا.
**2. الدقة مقابل النموذج المغلق. ** هذه هي التجربة التي أجراها بلاك سكولز تقريبًا مجانًا والتي لا تستطيع معايير ديناميكيات الموائع القيام بها على الإطلاق: التدرب على البيانات التي تم إنشاؤها بواسطة FD، ثم التسجيل مقابل الدقة norm.cdf الأسعار عبر صندوق. الإبلاغ عن قريب ، وأبلغ عن الخطأ توزيع - على وجه التحديد بالقرب من الإضراب وقرب انتهاء الصلاحية، حيث يكون الحل أقل سلاسة ويجب أن يعاني الأساس الطيفي المقطوع أكثر من غيره.
3. انتهاكات عدم المراجحة. ليس لدى المشغل المتعلم أي سبب هيكلي لاحترام قيود الشكل التي يجب أن يفي بها سطح السعر: الرتابة في ، التحدب في ، و . يؤدي قياس معدل الانتهاك عبر مربع المعلمة إلى تحويل السؤال المفتوح الخاص بهذه المقالة - *هل يمكننا ضمان شروط عدم المراجحة في المشغل المتعلم؟ * - من التلويح باليد إلى رقم.
**4. ثبات التمييز، تم اختباره وليس تأكيده. ** تدرب في ، تقييم في ، الإبلاغ عن الخطأ. وضع الفشل المتوقع مسمى ومحدد: Gibbs Ringing at the kink . إن أساس فورييه المقطوع الذي يعيد بناء دالة بمشتق أول متقطع يتأرجح حولها، ويمكن للدقة الفائقة ذات اللقطة الصفرية أن تجعل ذلك أسوأ وليس أفضل من خلال تعريض الأوضاع التي لم تشهدها دقة التدريب مطلقًا. إذا انخفضت الدقة الفائقة بالقرب من الإضراب، فإن هذه النتيجة السلبية تكون أكثر قيمة من الادعاء التسويقي الذي تحل محله - لا أحد في أدبيات FNO يقوم بتسعير الخيارات بعلاقة مربحة.
إذا تعذر تشغيل التجارب 1-4، فلا ينبغي شحن هذه المقالة. ما تبقى بدونها هو عرض مكتوب جيدًا لورقة ICLR الخاصة بشخص آخر.
ما وراء خيارات الفانيليا
بافتراض أن جدول الأعمال أعلاه يظل على قيد الحياة مع القياس، فإن إطار FNO يمتد بشكل طبيعي إلى أدوات أكثر تعقيدًا:
- الخيارات الأمريكية: أضف حدود التمرين المبكر كقناة إخراج إضافية. يتعلم FNO كلاً من سطح السعر وحدود التمرين المثالية في وقت واحد.
- خيارات الحاجز: تشفير مستويات الحاجز كقنوات إدخال. لاحظ أن الحاجز هو انقطاع ثانٍ، وأن مخاوف جيبس من أجندة القياس تنطبق بقوة أكبر، وليس أقل.
- سلال متعددة الأصول: استخدم FNO ثنائي أو ثلاثي الأبعاد لخيارات السلة المكونة من 2-3 عناصر أساسية. تعتبر لعنة الأبعاد أقل حدة من الحلول القائمة على الشبكة لأن FNO يعمل على عدد ثابت من الأوضاع.
- التقلبات المحلية: أدخل كامل سطح التقلبات المحلية في Dupire كوظيفة مكانية. هذه هي حالة الاستخدام الأكثر طبيعية لتعلم المشغلين - الإدخال هو دالة، وليس معلمة عددية.
الخلاصة
إن مساهمة مشغل فورييه العصبي هي مساهمة مفاهيمية قبل أن تكون حسابية: فبدلاً من حل PDE واحد في كل مرة، يمكنك تحديد معلمات مشغل الحل نفسه، والقيام بذلك في مساحة فورييه يؤدي إلى بنية ، عالمية على المشغلين المستمرين، ومرنة في الدقة من خلال البناء. هذا يتبع كثيرًا من Li et al. (2021) ومن الكود أعلاه الذي يجري.
ما لا يتبع هو رقم التسريع. يتم قياس الأرقام من 100x إلى 1000x في الأدبيات وفقًا لمعايير سلسة مقابل خطوط الأساس التي نادرًا ما يتم ذكر جودتها، وقد أمضت هذه السلسلة مقالًا كاملاً يوضح مقدار هذا العنوان الذي عادة ما يكون خوارزمية وليس أجهزة. إن الادعاءات التي تبرر وضع المشغل في محرك تسعير - دقة fp32 على مستوى السنت، ومعدل انتهاك عدم المراجحة المحدود، والدقة الفائقة التي تنجو من عوائق المردود، ومنحنى التسريع مقابل حل وحدة المعالجة المركزية المختص - كلها قابلة للقياس، وكلها رخيصة على نظام بلاك سكولز لأن النموذج المغلق موجود، وكلها لا تزال غير قابلة للقياس هنا.
هذه هي حالة هذه المسودة: الآلية حقيقية، والوعد معقول، والأدلة معلقة.
المراجع والقراءات الإضافية:
- لي، ز.، كوفاشكي، ن.، عزيززادينيشيلي، ك.، وآخرون. "مشغل فورييه العصبي للمعادلات التفاضلية الجزئية البارامترية." ICLR 2021. arXiv:2010.08895
- لو، إل، جين، بي، بانغ، جي، تشانغ، زي، وكارنياداكيس، جي.إي. "تعلم العوامل غير الخطية عبر DeepONet." ذكاء آلة الطبيعة، 2021. دوي:10.1038/s42256-021-00302-5
- لي، Z.، وآخرون. "المشغل العصبي المستنير بالفيزياء لتعلم المعادلات التفاضلية الجزئية." مجلة ACM/IMS لعلوم البيانات، 2024. مراجعة مفتوحة
neuraloperatorمكتبة باي تورش: github.com/neuraloperator/neuraloperator- سلفادور، م، وآخرون. "تعلم الشبكة العصبية لمعادلة بلاك سكولز لتسعير الخيارات." arXiv:2405.05780
- باي، Y.، وآخرون. “إن الذكاء الاصطناعي بلاك سكولز: الشبكة العصبية المستنيرة للتمويل.” arXiv:2412.12213
Authors
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.