DISPLAY '*******************************************************' DISPLAY 'LES POLITIQUES MONETAIRES EUROPEENNES ET LA REGLE DE' DISPLAY 'TAYLOR' DISPLAY '*******************************************************' CALENDAR 70 1 4 *précise la fréquence des données et l'année de départ *données trimestrielles, départ 70 premier trimestre ALLOCATE 98:3 *précise la longueur des séries et alloue l'espace nécessaire en mémoire OPEN DATA chapitre5.xls *ouverture du fichier de données DATA(FORMAT=XLS,ORG=COLS) *description du fichier de données PRINT / *impression de toutes les séries du fichier SMPL 70:01 98:03 *déscription de la période utilisée dans l'analyse ******************************************************* * Intitulé des séries * ******************************************************* /* tc_fr = taux d'intérêt à court terme de la France tc_dm = taux d'intérêt à court terme de l'Allemagne tc_nl = taux d'intérêt à court terme des Pays-Bas tc_es = taux d'intérêt à court terme de l'Espagne tc_it = taux d'intérêt à court terme de l'Italie tc_uk = taux d'intérêt à court terme du Royaume-Uni pib_fr = PIB en volume de la France pib_dm = PIB en volume de l'Allemagne pib_nl = PIB en volume des Pays-Bas pib_es = PIB en volume de l'Espagne pib_it = PIB en volume de l'Italie pib_uk = PIB en volume du Royaume-Uni cpi_fr = Indice des prix à la consommation de la France cpi_dm = Indice des prix à la consommation de l'Allemagne cpi_nl = Indice des prix à la consommation des Pays-Bas cpi_es = Indice des prix à la consommation de l'Espagne cpi_it = Indice des prix à la consommation de l'Italie cpi_uk = Indice des prix à la consommation du Royaume-Uni */ DISPLAY '*******************************************************' DISPLAY 'Problème n°1 : Evaluation par simulation' DISPLAY '*******************************************************' DISPLAY 'QUESTION 1' DISPLAY 'QUESTION 1a' SET pibga_fr = 100 * (pib_fr - pib_fr{4}) / pib_fr{4} *création de la variable pibga_fr *pibga_fr = glissement annuel du PIB pour la France SET pibga_dm = 100 * (pib_dm - pib_dm{4}) / pib_dm{4} SET pibga_nl = 100 * (pib_nl - pib_nl{4}) / pib_nl{4} SET pibga_es = 100 * (pib_es - pib_es{4}) / pib_es{4} SET pibga_it = 100 * (pib_it - pib_it{4}) / pib_it{4} SET pibga_uk = 100 * (pib_uk - pib_uk{4}) / pib_uk{4} DISPLAY 'QUESTION 1b' SET cpiga_fr = 100 * (cpi_fr - cpi_fr{4}) / cpi_fr{4} *cpiga_fr = glissement annuel de l'indice des prix à la consommation *pour la France SET cpiga_dm = 100 * (cpi_dm - cpi_dm{4}) / cpi_dm{4} SET cpiga_nl = 100 * (cpi_nl - cpi_nl{4}) / cpi_nl{4} SET cpiga_es = 100 * (cpi_es - cpi_es{4}) / cpi_es{4} SET cpiga_it = 100 * (cpi_it - cpi_it{4}) / cpi_it{4} SET cpiga_uk = 100 * (cpi_uk - cpi_uk{4}) / cpi_uk{4} DISPLAY 'QUESTION 1c' SET ecinf_fr = cpiga_fr - 2 *ecinf_fr = écart à l'inflation cible pour la France SET ecinf_dm = cpiga_dm - 2 SET ecinf_nl = cpiga_nl - 2 SET ecinf_es = cpiga_es - 2 SET ecinf_it = cpiga_it - 2 SET ecinf_uk = cpiga_uk - 2 DISPLAY 'QUESTION 1d' SOURCE(noecho) hpfilter.src @HPFILTER(lambda=1600) pib_fr / hp_fr *application de la procédure "hpfilter.src pour obtenir le PIB potentiel" *hp_fr = PIB potentiel *une solution alternative consiste à utiliser la commande rats DLM @HPFILTER(lambda=1600) pib_dm / hp_dm @HPFILTER(lambda=1600) pib_nl / hp_nl @HPFILTER(lambda=1600) pib_es / hp_es @HPFILTER(lambda=1600) pib_it / hp_it @HPFILTER(lambda=1600) pib_uk / hp_uk SET hpga_fr = 100 * (hp_fr - hp_fr{4})/ hp_fr{4} *hpga_fr = glissement annuel du PIB potentiel pour la France SET hpga_dm = 100 * (hp_dm - hp_dm{4})/ hp_dm{4} SET hpga_nl = 100 * (hp_nl - hp_nl{4})/ hp_nl{4} SET hpga_es = 100 * (hp_es - hp_es{4})/ hp_es{4} SET hpga_it = 100 * (hp_it - hp_it{4})/ hp_it{4} SET hpga_uk = 100 * (hp_uk - hp_uk{4})/ hp_uk{4} SET gap_fr = 100 * (pib_fr - hp_fr) / hp_fr *gap_fr = output gap pour la France SET gap_dm = 100 * (pib_dm - hp_dm) / hp_dm SET gap_nl = 100 * (pib_nl - hp_nl) / hp_nl SET gap_es = 100 * (pib_es - hp_es) / hp_es SET gap_it = 100 * (pib_it - hp_it) / hp_it SET gap_uk = 100 * (pib_uk - hp_uk) / hp_uk SPGRAPH(HFIELDS=1,VFIELDS=3) *réunis les graphiques sur une même feuille, les 3 graphiques seront placés *les uns sous les autres GRAPH(KEY=upl,HEADER='PIB et PIB potentiel') 2 # pib_dm # hp_dm *création d'un graphique représentant les courbes du pib et du pib potentiel *pour l'Allemagne, avec comme titre "PIB et PIB potentiel". *La légende se situera en haut à gauche GRAPH(KEY=upl,HEADER='croissance et croissance potentielle') 2 # hpga_dm # pibga_dm GRAPH(KEY=upl,HEADER='inflation et output gap') 2 # gap_dm # cpiga_dm SPGRAPH(DONE) *fin de l'instruction SPGRAPH DISPLAY 'QUESTION 2' SET ts_fr = hpga_fr + cpiga_fr + 0.5*ecinf_fr + 0.5* gap_fr *ts = taux de Taylor SET ts_dm = hpga_dm + cpiga_dm + 0.5*ecinf_dm + 0.5* gap_dm SET ts_nl = hpga_nl + cpiga_nl + 0.5*ecinf_nl + 0.5* gap_nl SET ts_es = hpga_es + cpiga_es + 0.5*ecinf_es + 0.5* gap_es SET ts_it = hpga_it + cpiga_it + 0.5*ecinf_it + 0.5* gap_it SET ts_uk = hpga_uk + cpiga_uk + 0.5*ecinf_uk + 0.5* gap_uk SET tn_fr = hpga_fr + cpiga_fr *tn = taux neutre SET tn_dm = hpga_dm + cpiga_dm SET tn_nl = hpga_nl + cpiga_nl SET tn_es = hpga_es + cpiga_es SET tn_it = hpga_it + cpiga_it SET tn_uk = hpga_uk + cpiga_uk SPGRAPH(HFIELDS=1,VFIELDS=3) *réunis les graphiques sur une même feuille, les 3 graphiques seront placés *les uns sous les autres GRAPH(KEY=upl,HEADER='Allemagne') 3 # tc_dm # tn_dm # ts_dm *création d'un graphique représentant les courbes taux court, taux neutre et taux de Taylor *pour l'Allemagne *La légende se situera en haut à gauche GRAPH(KEY=upl,HEADER='France') 3 # tc_fr # tn_fr # ts_fr GRAPH(KEY=upl,HEADER='Royaume-Uni') 3 # tc_uk # tn_uk # ts_uk SPGRAPH(DONE) *fin de l'instruction SPGRAPH DISPLAY 'QUESTION 3' SET ec_fr = tc_fr-tn_fr SET ec2_fr = ec_fr**2 *ecn_fr = différence entre taux court et taux neutre SET ec_dm = tc_dm-tn_dm SET ec2_dm = ec_dm**2 SET ec_nl = tc_nl-tn_nl SET ec2_nl = ec_nl**2 SET ec_es = tc_es-tn_es SET ec2_es = ec_es**2 SET ec_it = tc_it-tn_it SET ec2_it = ec_it**2 SET ec_uk = tc_uk-tn_uk SET ec2_uk = ec_uk**2 SET RMSEC_fr 73:1 98:3 = 0.0 SET RMSEC_dm 73:1 98:3 = 0.0 SET RMSEC_nl 73:1 98:3 = 0.0 SET RMSEC_es 73:1 98:3 = 0.0 SET RMSEC_it 73:1 98:3 = 0.0 SET RMSEC_uk 73:1 98:3 = 0.0 DO i=70:1,95:04 SMPL i i+11 STAT(NOPRINT) ec2_fr SET RMSEC_fr i+11 i+11 = sqrt(%mean) STAT(NOPRINT) ec2_dm SET RMSEC_dm i+11 i+11 = sqrt(%mean) STAT(NOPRINT) ec2_nl SET RMSEC_nl i+11 i+11 = sqrt(%mean) STAT(NOPRINT) ec2_es SET RMSEC_es i+11 i+11 = sqrt(%mean) STAT(NOPRINT) ec2_it SET RMSEC_it i+11 i+11 = sqrt(%mean) STAT(NOPRINT) ec2_uk SET RMSEC_uk i+11 i+11 = sqrt(%mean) SMPL END DO i GRAPH(KEY=below,HEADER='Précision de la règle de Taylor simulée - lambda1=lambda2=0.0 ') 6 # RMSEC_fr 73:1 98:3 # RMSEC_dm 73:1 98:3 # RMSEC_nl 78:1 98:3 # RMSEC_es 73:2 98:3 # RMSEC_it 73:1 98:1 # RMSEC_uk 75:2 98:1 SET er_fr = tc_fr-ts_fr SET er2_fr = er_fr**2 *er_fr = différence entre taux court et taux de Taylor SET er_dm = tc_dm-ts_dm SET er2_dm = er_dm**2 SET er_nl = tc_nl-ts_nl SET er2_nl = er_nl**2 SET er_es = tc_es-ts_es SET er2_es = er_es**2 SET er_it = tc_it-ts_it SET er2_it = er_it**2 SET er_uk = tc_uk-ts_uk SET er2_uk = er_uk**2 SET RMSEE_fr 73:1 98:3 = 0.0 SET RMSEE_dm 73:1 98:3 = 0.0 SET RMSEE_nl 73:1 98:3 = 0.0 SET RMSEE_es 73:1 98:3 = 0.0 SET RMSEE_it 73:1 98:3 = 0.0 SET RMSEE_uk 73:1 98:3 = 0.0 DO i=70:1,95:04 SMPL i i+11 STAT(NOPRINT) er2_fr SET RMSEE_fr i+11 i+11 = sqrt(%mean) STAT(NOPRINT) er2_dm SET RMSEE_dm i+11 i+11 = sqrt(%mean) STAT(NOPRINT) er2_nl SET RMSEE_nl i+11 i+11 = sqrt(%mean) STAT(NOPRINT) er2_es SET RMSEE_es i+11 i+11 = sqrt(%mean) STAT(NOPRINT) er2_it SET RMSEE_it i+11 i+11 = sqrt(%mean) STAT(NOPRINT) er2_uk SET RMSEE_uk i+11 i+11 = sqrt(%mean) SMPL END DO i GRAPH(KEY=below,HEADER='Précision de la règle de Taylor simulée - lambda1=lambda2=0.5') 6 # RMSEE_fr 73:1 98:3 # RMSEE_dm 73:1 98:3 # RMSEE_nl 78:1 98:3 # RMSEE_es 73:2 98:3 # RMSEE_it 73:1 98:3 # RMSEE_uk 75:2 98:3 DISPLAY '*******************************************************' DISPLAY 'Problème n°2 : Evaluation par estimation et tests sur' DISPLAY 'longue période' DISPLAY '*******************************************************' DISPLAY 'QUESTION 1' DISP '*Estimation pour la France' LINREG ec_fr # constant ecinf_fr gap_fr *estimation avec les mco PRJ ecs_fr *calcul des valeurs estimées de ec_fr, la série de ces valeurs *est appelée ecs_fr SET te_fr = ecs_fr + tn_fr *te_fr = taux court estimé DISP '*Estimation pour l"Allemagne' LINREG ec_dm # constant ecinf_dm gap_dm PRJ ecs_dm SET te_dm = ecs_dm + tn_dm DISP '*Estimation pour les Pays-Bas' LINREG ec_nl # constant ecinf_nl gap_nl PRJ ecs_nl SET te_nl = ecs_nl + tn_nl DISP '*Estimation pour l"Espagne' LINREG ec_es # constant ecinf_es gap_es PRJ ecs_es SET te_es = ecs_es + tn_es DISP '*Estimation pour l"Italie' LINREG ec_it # constant ecinf_it gap_it PRJ ecs_it SET te_it = ecs_it + tn_it DISP '*Estimation pour le Royaume-Uni' LINREG ec_uk # constant ecinf_uk gap_uk PRJ ecs_uk SET te_uk = ecs_uk + tn_uk SPGRAPH(HFIELDS=1,VFIELDS=3) *réunis les graphiques sur une même feuille, les 3 graphiques seront placés *les uns sous les autres GRAPH(KEY=upl,HEADER='Allemagne') 3 # tc_dm # ts_dm # te_dm *création d'un graphique représentant les courbes taux court, taux neutre et taux de Taylor *pour l'Allemagne *La légende se situera en haut à gauche GRAPH(KEY=upl,HEADER='France') 3 # tc_fr # ts_fr # te_fr GRAPH(KEY=upl,HEADER='Royaume-Uni') 3 # tc_uk # ts_uk # te_uk SPGRAPH(DONE) *fin de l'instruction SPGRAPH DISPLAY 'QUESTION 4' DISP '*Tests sur les paramètres lambda1 et lambda2 pour la France' LINREG(NOPRINT) ec_fr # constant ecinf_fr gap_fr DISP 'test lambda1 - France = 0.5' COMPUTE t1_fr = (%BETA(2) - 0.5) / (sqrt(%SEESQ*%XX(2,2))) CDF TTEST t1_fr %ndf DISP 'test lambda2 - France = 0.5' COMPUTE t2_fr = (%BETA(3) - 0.5) / (sqrt(%SEESQ*%XX(3,3))) CDF TTEST t2_fr %ndf DISP 'test lambda1 =lambda2- France = 0.5 simultanément' TEST # 2 3 # 0.5 0.5 DISP '*Tests sur les paramètres lambda1 et lambda2 pour l"Allemagne' LINREG(NOPRINT) ec_dm # constant ecinf_dm gap_dm DISP 'test lambda1 - Allemagne = 0.5' COMPUTE t1_dm = (%BETA(2) - 0.5) / (sqrt(%SEESQ*%XX(2,2))) CDF TTEST t1_dm %ndf DISP 'test lambda2 - Allemagne = 0.5' COMPUTE t2_dm = (%BETA(3) - 0.5) / (sqrt(%SEESQ*%XX(3,3))) CDF TTEST t2_dm %ndf DISP 'test lambda1 =lambda2- Allemagne = 0.5 simultanément' TEST # 2 3 # 0.5 0.5 DISP '*Tests sur les paramètres lambda1 et lambda2 pour les Pays-Bas' LINREG(NOPRINT) ec_nl # constant ecinf_nl gap_nl DISP 'test lambda1 - Pays-BAS = 0.5' COMPUTE t1_nl = (%BETA(2) - 0.5) / (sqrt(%SEESQ*%XX(2,2))) CDF TTEST t1_nl %ndf DISP 'test lambda2 - Pays-BAS = 0.5' COMPUTE t2_nl = (%BETA(3) - 0.5) / (sqrt(%SEESQ*%XX(3,3))) CDF TTEST t2_nl %ndf DISP 'test lambda1 =lambda2- Pays-Bas = 0.5 simultanément' TEST # 2 3 # 0.5 0.5 DISP '*Tests sur les paramètres lambda1 et lambda2 pour les Pays-Bas' LINREG(NOPRINT) ec_es # constant ecinf_es gap_es DISP 'test lambda1 - Espagne = 0.5' COMPUTE t1_es = (%BETA(2) - 0.5) / (sqrt(%SEESQ*%XX(2,2))) CDF TTEST t1_es %ndf DISP 'test lambda2 - ESpagne = 0.5' COMPUTE t2_es = (%BETA(3) - 0.5) / (sqrt(%SEESQ*%XX(3,3))) CDF TTEST t2_es %ndf DISP 'test lambda1 =lambda2- Espagne = 0.5 simultanément' TEST # 2 3 # 0.5 0.5 DISP '*Tests sur les paramètres lambda1 et lambda2 pour l"Italie' LINREG(NOPRINT) ec_it # constant ecinf_it gap_it DISP 'test lambda1 - Italie = 0.5' COMPUTE t1_it = (%BETA(2) - 0.5) / (sqrt(%SEESQ*%XX(2,2))) CDF TTEST t1_it %ndf DISP 'test lambda2 - Italie = 0.5' COMPUTE t2_it = (%BETA(3) - 0.5) / (sqrt(%SEESQ*%XX(3,3))) CDF TTEST t2_it %ndf DISP 'test lambda1 =lambda2- Italie = 0.5 simultanément' TEST # 2 3 # 0.5 0.5 DISP '*Tests sur les paramètres lambda1 et lambda2 pour le Royaume-Uni' LINREG(NOPRINT) ec_uk # constant ecinf_uk gap_uk DISP 'test lambda1 - Royaume-Uni = 0.5' COMPUTE t1_uk = (%BETA(2) - 0.5) / (sqrt(%SEESQ*%XX(2,2))) CDF TTEST t1_uk %ndf DISP 'test lambda2 - Royaume-Uni = 0.5' COMPUTE t2_uk = (%BETA(3) - 0.5) / (sqrt(%SEESQ*%XX(3,3))) CDF TTEST t2_uk %ndf DISP 'test lambda1 =lambda2- Royaume-Uni = 0.5 simultanément' TEST # 2 3 # 0.5 0.5 DISPLAY '*******************************************************' DISPLAY 'Problème n°3 : Analyse de la stabilité' DISPLAY '*******************************************************' DISPLAY 'QUESTION 1' DEC VECTOR[SERIES] period(4) SET period(1) = t < 80:1 SET period(2) = t > 79:4 .and. t < 90:1 SET period(3) = t > 89:4 SET period(4) = t > 89:4 *construction de variables indicatrices pour chaque sous-période *print / period(1) period(2) period(3) DISP '*Estimation pour la France par sous période' DO i=1,4 DISP 'periode' i LINREG(SMPL=period(i)) ec_fr # constant ecinf_fr gap_fr DISP 'test lambda1 - France = 0.5' COMPUTE t1_fr = (%BETA(2) - 0.5) / (sqrt(%SEESQ*%XX(2,2))) CDF TTEST t1_fr %ndf DISP 'test lambda2 - France = 0.5' COMPUTE t2_fr = (%BETA(3) - 0.5) / (sqrt(%SEESQ*%XX(3,3))) CDF TTEST t2_fr %ndf DISP 'test lambda1 =lambda2- France = 0.5 simultanément' TEST # 2 3 # 0.5 0.5 END DO I DISP '*Estimation pour l"Allemagne par sous période' DO i=1,3 DISP 'periode' i LINREG(SMPL=period(i)) ec_dm # constant ecinf_dm gap_dm DISP 'test lambda1 - Allemagne = 0.5' COMPUTE t1_dm = (%BETA(2) - 0.5) / (sqrt(%SEESQ*%XX(2,2))) CDF TTEST t1_dm %ndf DISP 'test lambda2 - Allemagne = 0.5' COMPUTE t2_dm = (%BETA(3) - 0.5) / (sqrt(%SEESQ*%XX(3,3))) CDF TTEST t2_dm %ndf DISP 'test lambda1 =lambda2- Allemagne = 0.5 simultanément' TEST # 2 3 # 0.5 0.5 END DO I DISP '*Estimation pour les Pays-Bas par sous période' DO i=1,3 DISP 'periode' i LINREG(SMPL=period(i)) ec_nl # constant ecinf_nl gap_nl DISP 'test lambda1 - Pays-BAS = 0.5' COMPUTE t1_nl = (%BETA(2) - 0.5) / (sqrt(%SEESQ*%XX(2,2))) CDF TTEST t1_nl %ndf DISP 'test lambda2 - Pays-BAS = 0.5' COMPUTE t2_nl = (%BETA(3) - 0.5) / (sqrt(%SEESQ*%XX(3,3))) CDF TTEST t2_nl %ndf DISP 'test lambda1 =lambda2- Pays-Bas = 0.5 simultanément' TEST # 2 3 # 0.5 0.5 END DO I DISP '*Estimation pour l"Espagne par sous période' DO i=1,3 DISP 'periode' i LINREG(SMPL=period(i)) ec_es # constant ecinf_es gap_es DISP 'test lambda1 - Espagne = 0.5' COMPUTE t1_es = (%BETA(2) - 0.5) / (sqrt(%SEESQ*%XX(2,2))) CDF TTEST t1_es %ndf DISP 'test lambda2 - ESpagne = 0.5' COMPUTE t2_es = (%BETA(3) - 0.5) / (sqrt(%SEESQ*%XX(3,3))) CDF TTEST t2_es %ndf DISP 'test lambda1 =lambda2- Espagne = 0.5 simultanément' TEST # 2 3 # 0.5 0.5 END DO I DISP '*Estimation pour l"ITALIE par sous période' DO i=1,3 DISP 'periode' i LINREG(SMPL=period(i)) ec_it # constant ecinf_it gap_it DISP 'test lambda1 - Italie = 0.5' COMPUTE t1_it = (%BETA(2) - 0.5) / (sqrt(%SEESQ*%XX(2,2))) CDF TTEST t1_it %ndf DISP 'test lambda2 - Italie = 0.5' COMPUTE t2_it = (%BETA(3) - 0.5) / (sqrt(%SEESQ*%XX(3,3))) CDF TTEST t2_it %ndf DISP 'test lambda1 =lambda2- Italie = 0.5 simultanément' TEST # 2 3 # 0.5 0.5 END DO I DISP '*Estimation pour le Royaume-Uni par sous période' DO i=1,3 DISP 'periode' i LINREG(SMPL=period(i)) ec_uk # constant ecinf_uk gap_uk DISP 'test lambda1 - Royaume-Uni = 0.5' COMPUTE t1_uk = (%BETA(2) - 0.5) / (sqrt(%SEESQ*%XX(2,2))) CDF TTEST t1_uk %ndf DISP 'test lambda2 - Royaume-Uni = 0.5' COMPUTE t2_uk = (%BETA(3) - 0.5) / (sqrt(%SEESQ*%XX(3,3))) CDF TTEST t2_uk %ndf DISP 'test lambda1 =lambda2- Royaume-Uni = 0.5 simultanément' TEST # 2 3 # 0.5 0.5 END DO i DISPLAY 'QUESTION 2' SMPL 70:1 98:3 DISPLAY 'Test du CUSUM pour la France' LINREG(NOPRINT) ec_fr # constant ecinf_fr gap_fr *estimation avec les mco pour définir le nombre d'observations et de variables explicatives* COMPUTE nobs = %nobs ; *nombre d'observations COMPUTE nreg = %nreg ; *nombre de paramètres à estimer COMPUTE nvec = %NDF ; *degré de liberté, qui correspond au nombre d'itérations COMPUTE tfin = 1998:1 ; *date de fin des itérations COMPUTE nobsi = tfin -nvec ; *nombre d'observations utilisées pour la première régression = K si il y a des données dès 1970:1 pour toutes les séries COMPUTE tin = nobsi + 1 ; *date de départ de la série des résidus récursifs COMPUTE tfin = 1998:3 ; *date de fin des itérations DEC VECTOR[SERIES] PER(nvec) *déclaration de series PER(1) à PER(T-K) = au total il y a T-K séries SET er tin tfin = 0 ; * met à 0 de K+1 à T la série de résidu récursif SET wr tin tfin = 0 ; * met à 0 la série des résidus récursifs normalisée SET trend = t DO i=1,nvec *début de la boucle pour calculer les résidus récursifs, il faut réaliser un nombre de régression de K+1 à T SET per(i) = trend