¿Hay software de elementos finitos que maneja más de cinco dimensiones?

10

Soy un principiante con FE. Mi aplicación es la fijación de precios de derivados financieros donde el espacio es de cinco dimensiones. Entonces, agregando tiempo, el problema tiene seis dimensiones.

Traté de mirar alrededor (Fenics, escript, deal.II, ...), pero entiendo que esos programas están limitados a 3 + 1 (espacio 3d + tiempo 1d). ¿Es esto correcto?

Mi lenguaje objetivo es Python o C ++.

Descripción de mi problema
Me gustaría fijar el precio de un producto de inversión donde, cada mes, el inversionista tiene la libertad de reinvertir o no. Me gustaría hacerlo con la volatilidad estocástica, la tasa de interés estocástica y la mortalidad estocástica.
Los PDE estocásticos se ven así Donde es una constante dependiente del tiempo asociada al precio de la acción , y B ^ S_t μ S t SB S t

reSt=μtSret+σtresitS(valores)reσt=μtσret+νtσresitσ(volatilidad)rert=μtrret+νtrresitr(tasa de interés)reqt=μtqret+νtqresitq(mortalidad)
μtSSsitSLevy es un proceso independiente que crea ruido en el precio de las acciones . De manera similar para las otras cantidades: \ nu ^ \ sigma_t es una cantidad dependiente del tiempo asociada a la volatilidad \ sigma . Deje C_ \ tau denota las inversiones admisibles en el momento \ tau . El problema de control estocástico se ve como V_ \ tau = max \ left \ {c \ en C_ \ tau: P (\ text {death}) E (r_ \ tau f (S _ {\ tau + 1})) + P (vivo ) E (r_ \ tau V _ {\ tau + 1}) \ right \}. Los PDE anteriores son continuos, pero el valor del producto V_ \ tau se resuelve solo en tiempos predefinidos \ tau , digamos cada mes.ν σ t σ C τ τ V τ = m a x { c C τ : P ( muerte ) E ( r τ f ( S τ + 1 ) ) + P ( a l i v e ) E ( r τ V τ + 1 ) } . V τ τSνtσσ
Cττ
Vτ=metrounaX{CCτ:PAG(muerte)mi(rτF(Sτ+1))+PAG(unalyovmi)mi(rτVτ+1)}.
Vττ

Supongo que Montecarlo siempre puede hacer fuerza bruta a mi problema, pero es muy lento.

Forma determinista de las PDEs estocásticas
Para esta parte, suponga que el valor de la opción se define en el tiempo natural , no the -times, con la inversión en el tiempo . Defina el operador diferencial donde la constante dependiente del tiempot τ c t t L t

V:(t,St,σt,rt,qt,Ct)(t,Vt),
tτCtt
Lt=r,S+r,σ+σ,SLtS=σtS+rtS,SLtr=r+r,rLtσ=σ+σ,σLtq=q+q,q
{μtS,...}son ignorados El PDE determinista es entonces que puede adaptarse al problema de control óptimo en los times .
tVt+(Lt+LtS+Ltσ+Ltr+Ltq)Vt=0 0,
τ

fuente
3
¿Estás seguro de que necesitas usar elementos finitos para este problema? Sería útil si puede describir el problema un poco más (en particular, el PDE que desea resolver).
Victor Liu
@Liu agregué más detalles. Pensé en FE porque MC es muy lento.
1
¿Puedes aclarar la notación? ¿ implica una derivada en ? vpagpag
Jesse Chan
3
Creo que obtendrá mejores respuestas si también publica las PDE deterministas que va a resolver. ¿Podría aclarar cuáles son las variables independientes? En este momento, parece que la única variable independiente es el tiempo. ¿Estás resolviendo estas ecuaciones diferenciales estocásticas usando expansiones de caos polinomiales, y es por eso que tendrás un sistema de ecuaciones diferenciales deterministas?
Geoff Oxberry
1
Por un lado, puede lidiar con las complicaciones de usar FE en dimensiones moderadas y la maldición de la dimensionalidad, o puede trabajar en métodos de aceleración para MC o QMC mejor. El último mundo no es necesariamente peor, en realidad es el enfoque de elección en el mundo cuantitativo por muchas razones, así que tenga cuidado al descartarlo tan fácilmente.
Quartz

Respuestas:

8

Suponiendo que desea resolver las ecuaciones de Black-Scholes o una variante en una cartera de 5 activos, entonces tiene 5 dimensiones espaciales más una de tiempo. No conozco ningún paquete de FEM que pueda hacer eso fuera de mi alcance (acuerdo. II no puedo hacerlo fácilmente, pero mira a continuación) pero creo recordar que algunas personas del grupo de Chris Schwab en ETH Zurich resolvieron tal problemas al usar mallas dispersas. Puede tener suerte mirando sus publicaciones.

Hay otras ecuaciones que tienen dimensiones adicionales. Un ejemplo es la ecuación de transferencia radiativa que tiene 3 espacios + 1 tiempo + 2 dimensiones angulares + 1 de energía. La forma en que esto generalmente se resuelve es discretizar el espacio tridimensional como de costumbre, luego discretizar las dimensiones angular y de energía en mallas separadas de 2 y 1 dimensiones y en cada punto nodal de la malla espacial simplemente tiene muchas variables (una para cada cada nodo de la malla angular multiplicado por el número de nodos en la malla de energía). Utilizamos este esquema en deal.II implementaciones con éxito. Esto tiene sentido para la ecuación de transferencia radiativa, y puede ser emulada para su ecuación incluso si no es natural allí.

Wolfgang Bangerth
fuente
5

DUNE, el entorno numérico distribuido y unificado http://www.dune-project.org , presenta algunas cuadrículas estructuradas de dimensión arbitraria (SGrid y Yaspgrid), consulte las características de DUNE . Actualmente, hay una rama que convierte yaspgrid, una de las cuadrículas anteriores, en una cuadrícula de productos tensoriales, si eso es de interés. Desde el lanzamiento 2.0 (el actual es 2.2.1, y 2.3 está por llegar) tenemos elementos de referencia para varios métodos de elementos finitos que admiten dimensiones arbitrarias. Por lo tanto, debería ser posible configurar discretizaciones de elementos finitos de dimensiones arbitrarias con, por ejemplo, el módulo de rectificación dune-pdelab . Aunque esto podría no probarse a menudo.

Dicho esto, todavía existe la maldición de la dimensionalidad como señaló Wolfgang.

Para más información, lo remito a las listas de correo de DUNE .

Markus Blatt
fuente
0

Ok, entonces parece que lo que tienes es un conjunto acoplado de EDO, ya que, por lo que puedo decir, solo hay derivadas con respecto al tiempo y ninguna derivada con respecto a cualquier otra cosa. Existen bastantes paquetes para resolver sistemas de EDO de dimensión arbitraria (Matlab tiene cosas como ode45). Para Python, mira esta pregunta para algunas sugerencias. Finalmente, hay un viejo código Fortran en netlib que puede interactuar con C ++ con bastante facilidad (la facilidad de uso es otra cuestión). Probablemente hay mejores alternativas por ahí ya que ha pasado un tiempo desde que he buscado (otros deberían intervenir).

Victor Liu
fuente
1
Al agregar las PDE deterministas, veo que mi pregunta no estaba clara. Lo siento y gracias por intentar ayudar.