Estoy intentando calibrar un proceso de reverberación media de un factor en Python 3. El proceso está definido como:
\begin{equation} dX = k(\alpha - X)dt + \sigma dW , \end{equation}
donde $\alpha = \mu - \frac{\sigma^2}{2k}$ es el precio logarítmico a largo plazo y $k$ es la velocidad de ajuste. Bajo la probabilidad neutral al riesgo $Q$ escribimos la ecuación anterior como
\begin{equation} dX = k(\alpha^* - X)dt + \sigma dW^*. \end{equation}
Aquí $\alpha^*= \alpha - \lambda$, donde $\lambda$ es el precio del riesgo de mercado. Basado en el Teorema de Girsanov, $dW^*$ es una Movimiento Browniano bajo la medida martingala $Q$.
Mis ecuaciones de medición y transición son:
- La ecuación de medición relaciona la serie de tiempo de variables observables, en mi caso los precios futuros para diferentes vencimientos, con la variable de estado no observable, el precio spot:
\begin{equation} y_{t} = Z_{t}X_{t} + d_{t} + \epsilon_{t}, \qquad t = 1, ..., NT \end{equation}
donde
$y_{t}=\left[\ln F\left(T_{i}\right)\right]$, $i=1,...,N$, $N\times 1$ vector de observables,
$d_{t}=\left[\left(1-e^{-\kappa T_{1}}\right) \alpha^{*}+\frac{\sigma^{2}}{4 \kappa}\left(1-e^{-2 k T_{1}}\right)\right], \quad i=1, \ldots, N, \quad N \times 1$ vector,
$Z_{t}=\left[e^{-\kappa T_{i}}\right], \quad i=1, \ldots, N, \quad N \times 1$ vector,
$\epsilon_{t}, \quad N\times 1$ vector de perturbaciones no correlacionadas en serie con $\mathbb{E}(\epsilon_{t}) = 0$ y $Var(\epsilon_{t}) = H$.
- La ecuación de transición es una versión discreta en tiempo del proceso estocástico de precios del petróleo O-U:
\begin{equation} X_{t}=c_{t}+Q_{t} X_{t-1}+\eta_{t}, \quad t=1, \ldots, N T \label{eq:38}, \end{equation}
donde
$c_{t}=\kappa \alpha \Delta t$
$Q_{t}=1-\kappa \Delta t$
$\eta_{t}$, perturbaciones no correlacionadas en serie con $\mathbb{E}(\eta_{t}) = 0$ y $Var(\eta_{t}) = \sigma^2 \Delta t$.
El objetivo es calibrar los parámetros del modelo utilizando la serie de tiempo de precios futuros de diferentes vencimientos a través de MLE. ¡Cualquier ayuda con la parte de programación (en Python 3) sería muy apreciada!
1 votos
¿Qué tienes hasta ahora?
0 votos
Matemáticas se han hecho, pero realmente no sé por dónde empezar con el código.