SDE-распределения методом Монте-Карло#
Этот учебник показывает практический рабочий процесс SDE в pyna:
определить модель Ито с
BrownianMotion,GeometricBrownianMotionилиItoSDE;сгенерировать воспроизводимый выборочный путь как
Trajectory;запустить векторизованный ансамбль Монте-Карло для оценки распределений;
сравнить эмпирические среднее, дисперсию и квантили с аналитическими формулами, когда они доступны.
Используйте SDE-классы pyna для описания модели и геометрии одиночного пути. Используйте векторизованные массивы NumPy для больших ансамблей, пока в pyna не появится выделенный класс геометрии ансамбля. Так математическая объектная модель остается честной: одна реализация - это выборочная траектория, а облако реализаций - статистический оцениватель.
Note
Исполняемый ноутбук ниже сохранён в репозитории с готовыми выводами, а
выполнение nbsphinx отключено. Перезапускайте его локально при изменении
численных параметров; сборка документации отрендерит сохраненные выводы на
GitHub Pages.
Исполняемый ноутбук:
Шаблон для копирования#
import numpy as np
from pyna.dynamics import GeometricBrownianMotion
gbm = GeometricBrownianMotion(mu=[0.08], sigma=[0.20])
one_path = gbm.euler_maruyama([100.0], (0.0, 1.0), dt=1/252, rng=7)
print(one_path.final) # TimeSeriesSolution is a pyna Trajectory
n_paths = 200_000
rng = np.random.default_rng(20260701)
z = rng.normal(size=n_paths)
log_terminal = (
np.log(100.0)
+ gbm.expected_log_growth()[0] * 1.0
+ gbm.sigma[0] * np.sqrt(1.0) * z
)
terminal = np.exp(log_terminal)
print(np.mean(terminal), np.quantile(terminal, [0.05, 0.5, 0.95]))
Заметки по расширению#
ItoSDE.diffusion_matrixпринимает скалярную, векторную или матричную диффузию.ItoSDE.euler_maruyamaпринимает внешне предоставленные приращенияdW, поэтому эксперименты с common-random-number и регрессионные тесты могут быть детерминированными.Повышайте один выборочный путь через топологические объекты только тогда, когда геометрическое утверждение имеет смысл. Выборки Монте-Карло оценивают распределения; они не становятся автоматически инвариантными множествами.