gEcon packages of R

gEcon is the package of R to model both Dynamic Stochastic General Equilibrium (DSGE) and Static General Equilibrium. Static General Equilibrium is also called Computable General Equilibrium(CGE). The computational solvers of traditional econometric modeling software packages such as GAMS, GEMPACK and Dynare are based on the first order conditions (FOCs) and linearization equations. Different from them, the computational solver of gEcon is an algorithm for automatic derivation of FOCS with symbolic computations library. gEcon can handle large-scale (100+ variables) models.

Demontration:

Sample scripts of Epstein-Zin Model

# ############################################################################
# (c) Chancellery of the Prime Minister 2012-2015                            #
#                                                                            #
# Authors: Grzegorz Klima, Karol Podemski, Kaja Retkiewicz-Wijtiwiak         #
# ############################################################################
# Stochastic growth model with Epstein-Zin preferences
# ############################################################################

options
{
    output logfile = TRUE;
    output LaTeX = TRUE;
};

tryreduce
{
    pi[], L_s[], K_d[], L_d[];
};

block CONSUMER
{
    definitions
    {
        u[] = (C[]^(1 - eta) - 1) / (1 - eta);
    };
    controls
    {
        K_s[], C[], I[];
    };
    objective
    {
        U[] = u[] + beta * E[][U[1]^(1 - theta_EZ)]^(1 / (1 - theta_EZ));
    };
    constraints
    {
        I[] + C[] = pi[] + r[] * K_s[-1] + W[] * L_s[];
        K_s[] = (1 - delta) * K_s[-1] + I[];
    };
    identities
    {
        L_s[] = 1;
    };
    calibration
    {
        delta = 0.025;
        beta = 0.99;
        eta = 2;
        theta_EZ = 0.05;
    };
};

block FIRM
{
    controls
    {
        K_d[], L_d[], Y[];
    };
    objective
    {
        pi[] = Y[] - L_d[] * W[] - r[] * K_d[];
    };
    constraints
    {
        Y[] = Z[] * K_d[]^alpha * L_d[]^(1 - alpha);
    };
    calibration
    {
        r[ss] * K_s[ss] = 0.36 * Y[ss] -> alpha;
    };
};

block EQUILIBRIUM
{
    identities
    {
        K_d[] = K_s[-1];
        L_d[] = L_s[];
    };
};

block EXOG 
{
    identities
    {
        Z[] = exp(phi * log(Z[-1]) + epsilon_Z[]);
    };
    shocks
    {
        epsilon_Z[];
    };
    calibration
    {
        phi = 0.95;
    };
};

run Epstein-Zin Model with gEcon

library(gEcon)
ez = make_model("epstein_zin.gcn")
## model parsed in 0.05s
## model loaded in 0.06s
ez = initval_calibr_par(ez, c(alpha = 0.4))
ez = steady_state(ez)
## Steady state has been FOUND
get_ss_values(ez)
## Steady-state values:
## 
##               Steady-state value
## q__CONSUMER_1            51.7476
## r                         0.0351
## C                         2.7543
## I                         0.9497
## K_s                      37.9893
## U                        63.6935
## W                         2.3706
## Y                         3.7041
## Z                         1.0000
get_par_values(ez)
## Model parameters:
## 
##          Value
## alpha    0.360
## beta     0.990
## delta    0.025
## eta      2.000
## phi      0.950
## theta_EZ 0.050
ez = initval_calibr_par(ez, c(alpha = 0.4))
ez = steady_state(ez, calibration = FALSE)
## Steady state has been FOUND
get_ss_values(ez, to_tex = TRUE)
## Steady-state values:
## 
##               Steady-state value
## q__CONSUMER_1            58.4346
## r                         0.0351
## C                         3.6213
## I                         1.4427
## K_s                      57.7077
## U                        72.3856
## W                         3.0384
## Y                         5.0640
## Z                         1.0000
## 
## 
## results written to: 'C:/Users/Heatfront/Desktop/blibtexfolder/dynarefolder/dynareA001/epstein_zin.results.tex'
get_par_values(ez, to_tex = TRUE)
## Model parameters:
## 
##          Value
## alpha    0.400
## beta     0.990
## delta    0.025
## eta      2.000
## phi      0.950
## theta_EZ 0.050
## 
## 
## results written to: 'C:/Users/Heatfront/Desktop/blibtexfolder/dynarefolder/dynareA001/epstein_zin.results.tex'
ez = solve_pert(ez, loglin = TRUE)
## Model has been SOLVED
get_pert_solution(ez, to_tex = TRUE)
## 
## Matrix P:
## 
##       K_s[-1]  Z[-1]
## K_s[]  0.9781 0.0578
## Z[]    0.0000 0.9500
## 
## 
## Matrix Q:
## 
##     epsilon_Z
## K_s    0.0608
## Z      1.0000
## 
## 
## Matrix R:
## 
##                 K_s[-1]  Z[-1]
## q__CONSUMER_1[]  0.0424 0.0542
## r[]             -0.4897 0.7270
## C[]              0.3793 0.2084
## I[]              0.1223 2.3122
## U[]              0.0456 0.0572
## W[]              0.3265 0.8616
## Y[]              0.3061 0.8077
## 
## 
## Matrix S:
## 
##               epsilon_Z
## q__CONSUMER_1    0.0570
## r                0.7652
## C                0.2193
## I                2.4339
## U                0.0602
## W                0.9069
## Y                0.8503
## 
## 
## results written to: 'C:/Users/Heatfront/Desktop/blibtexfolder/dynarefolder/dynareA001/epstein_zin.results.tex'
ez = set_shock_cov_mat(ez, matrix(c(1), 1, 1), shock_order = "epsilon_Z")
ez = compute_model_stats(ez, ref_var="Y")

get_model_stats(model = ez, variables = c("C", "K_s", "W", "I", "r", "Y"),
                var_dec = FALSE, to_tex = TRUE)
## Basic statistics:
## 
##     Steady-state value Std. dev. Variance Loglin
## C               3.6213    0.2991   0.0895   Y   
## K_s            57.7077    0.2842   0.0807   Y   
## W               3.0384    1.1799   1.3922   Y   
## I               1.4427    3.1705  10.0520   Y   
## r               0.0351    1.0158   1.0318   Y   
## Y               5.0640    1.1062   1.2236   Y   
## 
## Correlation matrix:
## 
##     r     C     I   K_s     W     Y
## r   1 0.875 0.989 0.082 0.977 0.977
## C         1 0.937 0.554 0.958 0.958
## I               1 0.228 0.998 0.998
## K_s                   1 0.293 0.293
## W                           1 1.000
## Y                             1.000
## 
## Cross correlations with the reference variable (Y):
## 
##       Std. dev. rel. to Y  Y[-5]  Y[-4]  Y[-3]  Y[-2] Y[-1]   Y[]  Y[1]  Y[2]
## r[]                 0.918  0.102  0.222  0.368  0.542 0.745 0.977 0.641 0.366
## C[]                 0.270 -0.154 -0.028  0.142  0.359 0.630 0.958 0.769 0.594
## I[]                 2.866  0.026  0.152  0.309  0.501 0.730 0.998 0.697 0.445
## K_s[]               0.257 -0.493 -0.439 -0.341 -0.193 0.015 0.293 0.480 0.593
## W[]                 1.067 -0.008  0.119  0.280  0.479 0.718 1.000 0.718 0.479
## Y[]                 1.000 -0.008  0.119  0.280  0.479 0.718 1.000 0.718 0.479
##        Y[3]   Y[4]   Y[5]
## r[]   0.147 -0.022 -0.147
## C[]   0.436  0.297  0.177
## I[]   0.239  0.075 -0.052
## K_s[] 0.645  0.649  0.619
## W[]   0.280  0.119 -0.008
## Y[]   0.280  0.119 -0.008
## 
## Autocorrelations:
## 
##     Lag 1 Lag 2 Lag 3 Lag 4  Lag 5
## r   0.713 0.470 0.270 0.109 -0.017
## C   0.759 0.544 0.356 0.196  0.063
## I   0.714 0.472 0.272 0.111 -0.016
## K_s 0.960 0.864 0.731 0.577  0.415
## W   0.718 0.479 0.280 0.119 -0.008
## Y   0.718 0.479 0.280 0.119 -0.008
## 
## 
## results written to: 'C:/Users/Heatfront/Desktop/blibtexfolder/dynarefolder/dynareA001/epstein_zin.results.tex'
plotirf = compute_irf(ez, variables = c("C", "K_s", "W", "I", "r", "Y"))
print(plotirf)
## Impulse response functions
## Simulation horizon: 40
## Variables (6):
##     C, K_s, W, I, r, Y
## Shocks (1):
##     epsilon_Z
summary(ez)
## 
## Steady state:
##                        
## q__CONSUMER_1 58.434570
## r              0.035101
## C              3.621306
## I              1.442693
## K_s           57.707726
## U             72.385650
## W              3.038399
## Y              5.063999
## Z              1.000000
## 
## ----------------------------------------------------------
## 
## Parameter values:
##               
## alpha    0.400
## beta     0.990
## delta    0.025
## eta      2.000
## phi      0.950
## theta_EZ 0.050
## 
## ----------------------------------------------------------
## 
## Linearisation:
## x_t = P x_{t-1} + Q epsilon_t
## y_t = R x_{t-1} + S epsilon_t
## 
## P:
##        K_s[-1]    Z[-1]
## K_s[] 0.978058 0.057806
## Z[]   0.000000 0.950000
## 
## Q:
##     epsilon_Z
## K_s  0.060848
## Z    1.000000
## 
## R:
##                   K_s[-1]    Z[-1]
## q__CONSUMER_1[]  0.042383 0.054157
## r[]             -0.489749 0.726970
## C[]              0.379305 0.208369
## I[]              0.122324 2.312240
## U[]              0.045615 0.057232
## W[]              0.326499 0.861595
## Y[]              0.306093 0.807745
## 
## S:
##               epsilon_Z
## q__CONSUMER_1  0.057008
## r              0.765232
## C              0.219335
## I              2.433937
## U              0.060245
## W              0.906942
## Y              0.850258
## 
## ----------------------------------------------------------
## 
## Shock covariance matrix:
## 
##           epsilon_Z
## epsilon_Z         1
## 
## Basic statistics:
## 
##               Steady-state value Std. dev.  Variance Loglin
## q__CONSUMER_1            58.4346    0.0745    0.0056   Y   
## r                         0.0351    1.0158    1.0318   Y   
## C                         3.6213    0.2991    0.0895   Y   
## I                         1.4427    3.1705    10.052   Y   
## K_s                      57.7077    0.2842    0.0807   Y   
## U                        72.3856    0.0788    0.0062   Y   
## W                         3.0384    1.1799    1.3922   Y   
## Y                          5.064    1.1062    1.2236   Y   
## Z                              1    1.3034     1.699   Y   
## 
## Correlation matrix:
## 
##               q__CONSUMER_1     r     C     I   K_s     U     W     Y     Z
## q__CONSUMER_1             1 0.956 0.979 0.989 0.372     1 0.997 0.997 0.987
## r                               1 0.875 0.989 0.082 0.955 0.977 0.977 0.991
## C                                     1 0.937 0.554 0.979 0.958 0.958 0.933
## I                                           1 0.228 0.988 0.998 0.998     1
## K_s                                               1 0.375 0.293 0.293 0.217
## U                                                       1 0.996 0.996 0.986
## W                                                             1     1 0.997
## Y                                                                   1 0.997
## Z                                                                         1
## 
## Autocorrelations:
## 
##               Lag 1 Lag 2 Lag 3 Lag 4  Lag 5
## q__CONSUMER_1 0.726 0.491 0.295 0.134  0.006
## r             0.713 0.470 0.270 0.109 -0.017
## C             0.759 0.544 0.356 0.196  0.063
## I             0.714 0.472 0.272 0.111 -0.016
## K_s           0.960 0.864 0.731 0.577  0.415
## U             0.726 0.492 0.296 0.135  0.007
## W             0.718 0.479 0.280 0.119 -0.008
## Y             0.718 0.479 0.280 0.119 -0.008
## Z             0.713 0.471 0.271 0.110 -0.016
## 
## Cross correlations with reference variable (Y):
## 
##                  Y[-5]  Y[-4]  Y[-3]  Y[-2] Y[-1]   Y[]  Y[1]  Y[2]  Y[3]
## q__CONSUMER_1[] -0.051  0.077  0.242  0.448 0.698 0.997 0.739 0.516 0.328
## r[]              0.102  0.222  0.368  0.542 0.745 0.977 0.641 0.366 0.147
## C[]             -0.154 -0.028  0.142  0.359 0.630 0.958 0.769 0.594 0.436
## I[]              0.026  0.152  0.309  0.501 0.730 0.998 0.697 0.445 0.239
## K_s[]           -0.493 -0.439 -0.341 -0.193 0.015 0.293 0.480 0.593 0.645
## U[]             -0.053  0.075  0.240  0.447 0.698 0.996 0.740 0.518 0.329
## W[]             -0.008  0.119  0.280  0.479 0.718 1.000 0.718 0.479 0.280
## Y[]             -0.008  0.119  0.280  0.479 0.718 1.000 0.718 0.479 0.280
## Z[]              0.032  0.157  0.314  0.504 0.732 0.997 0.694 0.440 0.233
##                   Y[4]   Y[5]
## q__CONSUMER_1[]  0.172  0.046
## r[]             -0.022 -0.147
## C[]              0.297  0.177
## I[]              0.075 -0.052
## K_s[]            0.649  0.619
## U[]              0.174  0.048
## W[]              0.119 -0.008
## Y[]              0.119 -0.008
## Z[]              0.068 -0.059
## 
## Variance decomposition:
## 
##               epsilon_Z
## q__CONSUMER_1         1
## r                     1
## C                     1
## I                     1
## K_s                   1
## U                     1
## W                     1
## Y                     1
## Z                     1