148 lines
4.9 KiB
Text
148 lines
4.9 KiB
Text
\documentclass{report}
|
|
\usepackage{Sweave}
|
|
\usepackage{graphicx}
|
|
\usepackage[francais]{babel}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage[T1]{fontenc}
|
|
\usepackage{amsmath}
|
|
\usepackage{amsfonts}
|
|
\usepackage{verbatim}
|
|
\usepackage{float}
|
|
\usepackage{hyperref}
|
|
\usepackage{scrtime}
|
|
|
|
\begin{document}
|
|
\SweaveOpts{concordance=TRUE}
|
|
|
|
\title{GAL Buckle 95}
|
|
\author{François Pelletier}
|
|
\maketitle
|
|
\tableofcontents
|
|
|
|
\section{Chargement des paquets}
|
|
<<>>=
|
|
setwd("~/git/GAL-Buckle95/")
|
|
library(actuar)
|
|
library(MASS)
|
|
library(xtable)
|
|
library(multicore)
|
|
library(moments)
|
|
library(TTR)
|
|
library(FourierStuff)
|
|
library(GeneralizedAsymmetricLaplace)
|
|
library(GMMStuff)
|
|
library(OptionPricingStuff)
|
|
library(QuadraticEstimatingEquations)
|
|
@
|
|
|
|
\section{Constantes et données}
|
|
|
|
<<>>=
|
|
#Nombre de décimales affichées
|
|
options(digits=6)
|
|
#Marge pour intervalles de confiance
|
|
alpha.confint <- 0.05
|
|
#Marge pour test d'hypothèses
|
|
alpha.test <- 0.05
|
|
#Chargement des données
|
|
RETURNS <- head(read.csv("abbeyn.csv",sep="\t",header=TRUE)[,1],-1)
|
|
#Taille de l'échantillon
|
|
n <- length(RETURNS)
|
|
@
|
|
|
|
\section{Test de normalité}
|
|
|
|
<<>>=
|
|
EppsPulley.test(RETURNS)
|
|
@
|
|
|
|
\section{Données mises à l'échelle}
|
|
|
|
<<>>=
|
|
scaledRETURNS <- as.vector(scale(RETURNS))
|
|
@
|
|
|
|
\section{Première estimation par QEE}
|
|
|
|
<<>>=
|
|
## Point de départ
|
|
pt.depart <- startparamGAL(scaledRETURNS)
|
|
## Fonctions pour les moments
|
|
meanQEE <- function(param) mGAL(param,1)
|
|
varianceQEE <- function(param) cmGAL(param,2)
|
|
sdQEE <- function(param) sqrt(cmGAL(param,2))
|
|
skewnessQEE <- function(param) cmGAL(param,3)
|
|
kurtosisQEE <- function(param) cmGAL(param,4)
|
|
## Fonctions pour les dérivées
|
|
dmeanQEE <- function(param) dmGAL(param,1)
|
|
dsdQEE <- function(param) dmGAL(param,2)
|
|
## Estimation gaussienne
|
|
optim1 <- optim(pt.depart,obj.gauss,gr=NULL,scaledRETURNS,meanQEE,varianceQEE,dmeanQEE,dsdQEE)
|
|
pt.optim1 <- optim1$par
|
|
## Estimation de crowder
|
|
optim2 <- optim(pt.depart,obj.Crowder,gr=NULL,scaledRETURNS,meanQEE,varianceQEE,skewnessQEE,kurtosisQEE,dmeanQEE,dsdQEE)
|
|
pt.optim2 <- optim2$par
|
|
## Estimation de crowder modifiée
|
|
optim3 <- optim(pt.depart,obj.Crowder.Mod,gr=NULL,scaledRETURNS,meanQEE,varianceQEE,dmeanQEE,dsdQEE)
|
|
pt.optim3 <- optim3$par
|
|
@
|
|
|
|
\section{Résultats de la première estimation par QEE}
|
|
|
|
<<>>=
|
|
cov.optim1 <- covariance.QEE(M.gauss(pt.optim1,scaledRETURNS,meanQEE,varianceQEE,dmeanQEE,dsdQEE),
|
|
V.gauss(pt.optim1,scaledRETURNS,meanQEE,varianceQEE,skewnessQEE,kurtosisQEE,dmeanQEE,dsdQEE),n)
|
|
cov.optim2 <- covariance.QEE(M.Crowder(pt.optim2,scaledRETURNS,varianceQEE,skewnessQEE,kurtosisQEE,dmeanQEE,dsdQEE),
|
|
V.Crowder(pt.optim2,scaledRETURNS,varianceQEE,skewnessQEE,kurtosisQEE,dmeanQEE,dsdQEE),n)
|
|
cov.optim3 <- covariance.QEE(M.Crowder.Mod(pt.optim3,scaledRETURNS,varianceQEE,skewnessQEE,kurtosisQEE,dmeanQEE,dsdQEE),
|
|
V.Crowder.Mod(pt.optim3,scaledRETURNS,varianceQEE,dmeanQEE,dsdQEE),n)
|
|
confidence.interval.QEE(pt.optim1,cov.optim1,n)
|
|
confidence.interval.QEE(pt.optim2,cov.optim2,n)
|
|
confidence.interval.QEE(pt.optim3,cov.optim3,n)
|
|
@
|
|
|
|
\section{Seconde estimation par QEE}
|
|
|
|
<<>>=
|
|
## Estimation gaussienne
|
|
optim4 <- optim(pt.optim1,obj.gauss,gr=NULL,scaledRETURNS,meanQEE,varianceQEE,dmeanQEE,dsdQEE,
|
|
ginv(V.gauss(pt.optim1,scaledRETURNS,meanQEE,varianceQEE,skewnessQEE,kurtosisQEE,dmeanQEE,dsdQEE)))
|
|
pt.optim4 <- optim4$par
|
|
## Estimation de crowder
|
|
optim5 <- optim(pt.optim2,obj.Crowder,gr=NULL,scaledRETURNS,meanQEE,varianceQEE,skewnessQEE,kurtosisQEE,dmeanQEE,dsdQEE,
|
|
ginv(V.Crowder(pt.optim2,scaledRETURNS,varianceQEE,skewnessQEE,kurtosisQEE,dmeanQEE,dsdQEE)))
|
|
pt.optim5 <- optim5$par
|
|
## Estimation de crowder modifiée
|
|
optim6 <- optim(pt.optim3,obj.Crowder.Mod,gr=NULL,scaledRETURNS,meanQEE,varianceQEE,dmeanQEE,dsdQEE,
|
|
ginv(V.Crowder.Mod(pt.optim3,scaledRETURNS,varianceQEE,dmeanQEE,dsdQEE)))
|
|
pt.optim6 <- optim6$par
|
|
@
|
|
|
|
\section{Résultats de la seconde estimation par QEE}
|
|
|
|
<<>>=
|
|
cov.optim4 <- covariance.QEE(M.gauss(pt.optim4,scaledRETURNS,meanQEE,varianceQEE,dmeanQEE,dsdQEE),
|
|
V.gauss(pt.optim4,scaledRETURNS,meanQEE,varianceQEE,skewnessQEE,kurtosisQEE,dmeanQEE,dsdQEE),n)
|
|
cov.optim5 <- covariance.QEE(M.Crowder(pt.optim5,scaledRETURNS,varianceQEE,skewnessQEE,kurtosisQEE,dmeanQEE,dsdQEE),
|
|
V.Crowder(pt.optim5,scaledRETURNS,varianceQEE,skewnessQEE,kurtosisQEE,dmeanQEE,dsdQEE),n)
|
|
cov.optim6 <- covariance.QEE(M.Crowder.Mod(pt.optim6,scaledRETURNS,varianceQEE,skewnessQEE,kurtosisQEE,dmeanQEE,dsdQEE),
|
|
V.Crowder.Mod(pt.optim6,scaledRETURNS,varianceQEE,dmeanQEE,dsdQEE),n)
|
|
confidence.interval.QEE(pt.optim4,cov.optim4,n)
|
|
confidence.interval.QEE(pt.optim5,cov.optim5,n)
|
|
confidence.interval.QEE(pt.optim6,cov.optim6,n)
|
|
@
|
|
|
|
\section{Estimation par GMM}
|
|
|
|
<<>>=
|
|
## GMM régulier
|
|
optim7 <- optim.GMM(pt.depart,conditions.vector=meanvariance.gmm.vector,data=scaledRETURNS,W=diag(2),
|
|
meanf=meanQEE,variancef=varianceQEE)
|
|
|
|
## GMM itératif
|
|
optim8 <- iterative.GMM(pt.depart,conditions.vector=meanvariance.gmm.vector,data=scaledRETURNS,W=diag(2),
|
|
meanf=meanQEE,variancef=varianceQEE)
|
|
@
|
|
|
|
|
|
\end{document}
|