diff --git a/ComputingTasks.cc b/ComputingTasks.cc
index a4084a52d703ae450f7f2c337e7c955473c99532..40e7a86fa5cc62bfe69aa4f692258e568e69c744 100644
--- a/ComputingTasks.cc
+++ b/ComputingTasks.cc
@@ -236,6 +236,17 @@ VarModelStatement::createVarModelMFunction(ostream &output, const map<string, se
   output << ");" << endl;
 }
 
+VarEstimationStatement::VarEstimationStatement(const string &var_model_name_arg) :
+  var_model_name(var_model_name_arg)
+{
+}
+
+void
+VarEstimationStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
+{
+  output << "oo_ = var_estimation('" << var_model_name << "', M_, options_, oo_);" << endl;
+}
+
 VarRestrictionsStatement::VarRestrictionsStatement(const string &var_model_name_arg,
                                                    const map<int, map<int, SymbolList> > &exclusion_restrictions_arg,
                                                    const equation_restrictions_t &equation_restrictions_arg,
diff --git a/ComputingTasks.hh b/ComputingTasks.hh
index 5175d7cd5d8e2dd3cd710ec66b9b1973575707cd..ea4228b73d8d7f313d605080e1a9eb3efdda7752 100644
--- a/ComputingTasks.hh
+++ b/ComputingTasks.hh
@@ -148,6 +148,15 @@ public:
   virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
 };
 
+class VarEstimationStatement : public Statement
+{
+private:
+  const string &var_model_name;
+public:
+  VarEstimationStatement(const string &var_model_name_arg);
+  virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
+};
+
 class ForecastStatement : public Statement
 {
 private:
diff --git a/DynareBison.yy b/DynareBison.yy
index e8c3d87155b2ac77e12d8b489465b29ddeee961b..298764f9caf5dc7cbe6d8dec43b573939a665255 100644
--- a/DynareBison.yy
+++ b/DynareBison.yy
@@ -140,7 +140,7 @@ class ParsingDriver;
 %left UMINUS UPLUS
 %nonassoc POWER
 %token EXP LOG LN LOG10 SIN COS TAN ASIN ACOS ATAN SINH COSH TANH ERF
-%token ASINH ACOSH ATANH SQRT NORMCDF NORMPDF STEADY_STATE EXPECTATION
+%token ASINH ACOSH ATANH SQRT NORMCDF NORMPDF STEADY_STATE EXPECTATION VAR_ESTIMATION
 /* GSA analysis */
 %token DYNARE_SENSITIVITY MORRIS STAB REDFORM PPRIOR PRIOR_RANGE PPOST ILPTAU MORRIS_NLIV
 %token MORRIS_NTRA NSAM LOAD_REDFORM LOAD_RMSE LOAD_STAB ALPHA2_STAB LOGTRANS_REDFORM THRESHOLD_REDFORM
@@ -219,6 +219,7 @@ statement : parameters
           | simul
           | stoch_simul
           | estimation
+          | var_estimation
           | estimated_params
           | estimated_params_bounds
           | estimated_params_init
@@ -451,6 +452,11 @@ restriction_exclusion_equation : EQUATION '(' symbol ')' symbol_list ';'
                                  { driver.add_VAR_restriction_exclusion_equation($3); }
                                ;
 
+var_estimation : VAR_ESTIMATION '(' symbol ')' ';'
+                 { driver.run_var_estimation($3); }
+               ;
+
+
 nonstationary_var_list : nonstationary_var_list symbol
                          { driver.declare_nonstationary_var($2); }
                        | nonstationary_var_list COMMA symbol
diff --git a/DynareFlex.ll b/DynareFlex.ll
index 46b24dea9729528541e41ef2789ca7a6cf0e177c..462e689364c353aafb945321323919832846ee2a 100644
--- a/DynareFlex.ll
+++ b/DynareFlex.ll
@@ -114,6 +114,7 @@ DATE -?[0-9]+([YyAa]|[Mm]([1-9]|1[0-2])|[Qq][1-4]|[Ww]([1-9]{1}|[1-4][0-9]|5[0-2
 <INITIAL>periods 	{BEGIN DYNARE_STATEMENT; return token::PERIODS;}
 <INITIAL>model_info {BEGIN DYNARE_STATEMENT; return token::MODEL_INFO;}
 <INITIAL>estimation {BEGIN DYNARE_STATEMENT; return token::ESTIMATION;}
+<INITIAL>var_estimation {BEGIN DYNARE_STATEMENT; return token::VAR_ESTIMATION;}
 <INITIAL>set_time {BEGIN DYNARE_STATEMENT; return token::SET_TIME;}
 <INITIAL>data {BEGIN DYNARE_STATEMENT; return token::DATA;}
 <INITIAL>varobs 	{BEGIN DYNARE_STATEMENT; return token::VAROBS;}
diff --git a/ParsingDriver.cc b/ParsingDriver.cc
index e3e7e4ba94d5f446db3d2439e5f27957674c3983..49a6bd3984bee92d1ff6bf4696b3f751aac03995 100644
--- a/ParsingDriver.cc
+++ b/ParsingDriver.cc
@@ -624,6 +624,12 @@ ParsingDriver::add_VAR_covariance_pair_restriction(string *name11, string *name1
   delete name22;
 }
 
+void
+ParsingDriver::run_var_estimation(string *model_name)
+{
+  mod_file->addStatement(new VarEstimationStatement(*model_name));
+}
+
 void
 ParsingDriver::periods(string *periods)
 {
diff --git a/ParsingDriver.hh b/ParsingDriver.hh
index af6a6865606db21846785ebde1f541af2fd23721..16193c743330b91b58a9239c69ba9948e80f9283 100644
--- a/ParsingDriver.hh
+++ b/ParsingDriver.hh
@@ -792,6 +792,8 @@ public:
   void add_VAR_restriction_equation_or_crossequation_final(string *name1, string *name2);
   void add_VAR_covariance_number_restriction(string *name1, string *name2, string *valuestr);
   void add_VAR_covariance_pair_restriction(string *name11, string *name12, string *name21, string *name22);
+  //! Runs VAR estimation process
+  void run_var_estimation(string *model_name);
 };
 
 #endif // ! PARSING_DRIVER_HH