Я новичок в FE. Мое приложение - оценка финансовых производных, где пространство является пятимерным. Итак, добавляя время, проблема имеет шесть измерений.
Я пытался осмотреться (Fenics, escript, deal.II, ...), но, насколько я понимаю, эти программы ограничены 3 + 1 (трехмерное пространство + 1d время). Это правильно?
Мой целевой язык Python или C ++.
Описание моей проблемы
Я хотел бы оценить инвестиционный продукт, в котором каждый месяц инвестор имеет право реинвестировать или нет. Я хотел бы сделать это со стохастической волатильностью, стохастической процентной ставкой и стохастической смертностью.
Стохастические PDE выглядят следующим образом
где - зависящая от времени константа, связанная с ценой акции , а μ S t SB S t
dSTdσTdрTdQT= μSTdT+ σT--√dВST= μσTdt + νσTdВσT= μрTdt + νрTdВрT= μQTdt + νQTdВQT(акции)(Летучесть)(процентная ставка)(Смертность)
μSTSВSTявляется самостоятельным процессом Леви , который создает шум в цене акций . Аналогично для других величин: является от времени величиной, связанной с волатильностью .
Пусть обозначает допустимые вложения в момент времени . Стохастическая задача управления выглядит как
Вышеуказанные PDE являются непрерывными, но значение произведения определяется только в заранее определенные значения times, скажем, каждый месяц.
ν σ t σ C τ τ V τ = m a x { c ∈ C τ : P ( смерть ) E ( r τ f ( S τ + 1 ) ) + P ( a l i v e ) E ( r τ V τ + 1 ) } . V τ τSνσTσСττВτ= m a x { c ∈ Cτ: P( смерть ) E( гτе( Sτ+ 1) ) + P( A L I V E ) E( гτВτ+ 1) } .
Вττ
Я думаю, что Монте-Карло всегда может грубо заставить мою проблему, но это очень медленно.
Детерминированная форма стохастических PDE
Для этой части предположим, что значение опции
определяется в естественное время , а не шрифт Times, с инвестиций в момент времени .
Определите дифференциальный оператор
где постоянная времениt τ c t t L t
В: ( т , сT, σT, гT, дT, сT) ↦ ( т , ВT) ,
TτсTTLTLSTLрTLσTLQT= ∂r , S+ ∂r , σ+ ∂σ, S= σT∂S+ рT∂S, S= ∂р+ ∂г , г= ∂σ+ ∂σ, σ= ∂Q+ ∂Q, д
{ μST, ... }игнорируются В этом случае детерминированный PDE имеет
который можно адаптировать к задаче оптимального управления в times ,
∂TВT+ ( LT+ LST+ LσT+ LрT+ LQT) VT= 0 ,
τ
Ответы:
Предполагая, что вы хотите решить уравнения Блэка-Шоулза или вариант для портфеля из 5 активов, тогда у вас действительно есть 5 пространственных и одно временное измерение. Я не знаю ни одного пакета FEM, который мог бы сделать это из головы (сделка. Я не могу с готовностью сделать это, но смотри ниже), но я думаю, что я помню, что некоторые люди из группы Криса Шваба в ETH Zurich решили такие проблемы с использованием разреженных сеток. Вам может повезти, просматривая его публикации.
Есть и другие уравнения, которые имеют дополнительные измерения. Одним из примеров является уравнение переноса излучения, которое имеет 3 пространственных + 1 временных + 2 угловых + 1 энергетическое измерение. Способ, который обычно решается, состоит в том, чтобы как обычно дискретизировать трехмерное пространство, затем дискретизировать угловые и энергетические измерения в отдельных 2-х и 1-мерных сетках, и в каждой узловой точке пространственной сетки просто есть много переменных (по одной для каждого каждый узел угловой сетки умножается на количество узлов в энергетической сетке). Мы используем эту схему в реализациях deal.II успешно. Это имеет смысл для уравнения переноса излучения, и оно может быть эмулировано для вашего уравнения, даже если оно не является естественным.
источник
DUNE, распределенная и унифицированная числовая среда http://www.dune-project.org , содержит некоторые структурированные сетки произвольного измерения (SGrid и Yaspgrid), см . Функции DUNE . В настоящее время существует ветка, которая превращает yaspgrid, одну из вышеупомянутых сеток, в тензорную сетку продуктов, если это представляет интерес. Начиная с версии 2.0 (текущая версия 2.2.1 и 2.3 скоро появятся) у нас есть справочные элементы для различных методов конечных элементов, которые поддерживают произвольные измерения. Следовательно, должна быть возможность настроить дискретизацию конечных элементов произвольной размерности, например, с помощью модуля дискретизации dune-pdelab . Хотя это не может быть проверено часто.
Сказав это, все еще есть проклятие размерности, как указал Вольфганг.
Для получения дополнительной информации я отсылаю вас к спискам рассылки DUNE .
источник
Итак, похоже, что у вас есть связанный набор ODE, поскольку, насколько я могу судить, существуют только производные по времени и никаких производных по чему-либо еще. Существует немало пакетов для решения систем ОДУ произвольной размерности (в Matlab есть что-то вроде
ode45
). Для Python, посмотрите на этот вопрос для некоторых предложений. Наконец, в netlib есть старый код на Фортране, который можно довольно легко связать с C ++ (другое дело в простоте использования). Вероятно, есть лучшие альтернативы, так как прошло много времени с тех пор, как я посмотрел (другие должны вмешаться).источник