diff --git a/preprocessor/DynareBison.yy b/preprocessor/DynareBison.yy
index 0dcbffb64cc5f12739f94a1d3be7506cec6c0bd5..d23d5137d097deed650ffcd0fd66606a87f0bc15 100644
--- a/preprocessor/DynareBison.yy
+++ b/preprocessor/DynareBison.yy
@@ -218,6 +218,7 @@ statement : parameters
           | data
           | prior
           | subsamples
+          | subsamples_eq
           | varobs
           | observation_trends
           | unit_root_vars
@@ -1202,6 +1203,10 @@ subsamples : symbol '.' SUBSAMPLES '(' subsamples_name_list ')' ';'
              { driver.set_subsamples($1); }
            ;
 
+subsamples_eq : symbol '.' SUBSAMPLES EQUAL symbol '.' SUBSAMPLES ';'
+                { driver.copy_subsamples($1, $5); }
+              ;
+
 subsamples_name_list : subsamples_name_list COMMA o_subsample_name
                      | o_subsample_name
                      ;
diff --git a/preprocessor/ParsingDriver.cc b/preprocessor/ParsingDriver.cc
index c16e6fedd87e6264664b802fb5230e91c589a260..30ab3369dbedddfb02e8a14d3713a1a62ca3d308 100644
--- a/preprocessor/ParsingDriver.cc
+++ b/preprocessor/ParsingDriver.cc
@@ -1234,6 +1234,21 @@ ParsingDriver::estimation_data()
   options_list.clear();
 }
 
+void
+ParsingDriver::copy_subsamples(string *to_parameter, string *from_parameter)
+{
+  check_symbol_is_parameter(to_parameter);
+  check_symbol_is_parameter(from_parameter);
+  if (subsample_declarations.find(*to_parameter) != subsample_declarations.end())
+    error("Parameter " + *to_parameter + " has more than one subsample statement." +
+          "You may only have one subsample statement per parameter.");
+  if (subsample_declarations.find(*from_parameter) == subsample_declarations.end())
+    error("Parameter " + *from_parameter + " does not have an associated subsample statement.");
+  subsample_declarations[*to_parameter] = subsample_declarations[*from_parameter];
+  delete to_parameter;
+  delete from_parameter;
+}
+
 void
 ParsingDriver::set_subsamples(string *name)
 {
diff --git a/preprocessor/ParsingDriver.hh b/preprocessor/ParsingDriver.hh
index 0deebfd147909729e7efac6a9f3500fb9fd58544..74ba84409dbbdf6008abd573fcbd1d3bfba68f82 100644
--- a/preprocessor/ParsingDriver.hh
+++ b/preprocessor/ParsingDriver.hh
@@ -256,6 +256,8 @@ public:
   void set_subsample_name_equal_to_date_range(string *name, string *date1, string *date2);
   //! Adds a subsample range to the list of options for the prior statement
   void add_subsample_range(string *parameter, string *subsample_name);
+  //! Copies the set of subsamples from_parameter to_parameter
+  void copy_subsamples(string *to_parameter, string *from_parameter);
   //! Declares declare_optimal_policy_discount_factor as a parameter and initializes it to exprnode
   void declare_optimal_policy_discount_factor_parameter(expr_t exprnode);
   //! Adds a predetermined_variable