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
reStreσtrertreqt= μStret+ σt--√resiSt= μσtret + νσtresiσt= μrtret + νrtresirt= μqtret + νqtresiqt(valores)(volatilidad)(tasa de interés)(mortalidad)
μStSsiStLevy 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τ= m a x { c ∈ Cτ: P( muerte ) E( rτF( Sτ+ 1) ) + P( a l i v e ) E( 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τCttLtLStLrtLσtLqt= ∂r , S+ ∂r , σ+ ∂σ, S= σt∂S+ rt∂S, S= ∂r+ ∂r , r= ∂σ+ ∂σ, σ= ∂q+ ∂q, q
{ μSt, ... }son ignorados El PDE determinista es entonces
que puede adaptarse al problema de control óptimo en los times .
∂tVt+ ( Lt+ LSt+ Lσt+ Lrt+ Lqt) Vt= 0 ,
τ
Respuestas:
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í.
fuente
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 .
fuente
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).fuente