diff --git a/matlab/reporting/@graph/createGraph.m b/matlab/reporting/@graph/createGraph.m
index 763e3f3486a4040c5f6f0183555b0c553d3798e1..02cc716fc1d220b41b817f1548856c14d136e41e 100644
--- a/matlab/reporting/@graph/createGraph.m
+++ b/matlab/reporting/@graph/createGraph.m
@@ -29,7 +29,6 @@ function o = createGraph(o)
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
 assert(~isempty(o.data));
-assert(isa(o.data, 'dynSeries')) ;
 
 if ~isempty(o.figname)
     warning('@graph.createGraph: will overwrite %s with new graph\n', ...
@@ -50,13 +49,13 @@ end
 %set(h, 'PaperPositionMode', 'auto');
 %set(h, 'units', 'normalized', 'outerposition', [0 0 1 1]);
 
-if strcmpi(o.seriestouse, 'all')
+if isempty(o.seriestouse)
     ds = o.data;
 else
     ds = o.data{o.seriestouse{:}};
 end
 
-if ~strcmp(o.xrange, 'all')
+if ~isempty(o.xrange)
     dd1 = dynDate(o.xrange{1});
     dd2 = dynDate(o.xrange{2});
     ds  = ds(dd1:dd2);
@@ -68,7 +67,7 @@ xlabels = getDatesCellStringArray(ds.time);
 
 plot(x, data);
 
-if ~strcmp(o.yrange, 'all')
+if ~isempty(o.yrange)
     ylim([o.yrange{:}]);
 end
 
diff --git a/matlab/reporting/@graph/graph.m b/matlab/reporting/@graph/graph.m
index 4c9d8c14d1abbd4d37d1e67da9db45c3fab8a0ac..87f66ff850ca71dbccf970d00a72020685841452 100644
--- a/matlab/reporting/@graph/graph.m
+++ b/matlab/reporting/@graph/graph.m
@@ -38,15 +38,14 @@ o.config = '';
 o.title = '';
 o.ylabel = '';
 o.xlabel = '';
-o.zlabel = '';
 o.footnote = '';
 
 o.figname = '';
 o.data = '';
-o.seriestouse = 'all';
+o.seriestouse = '';
 o.shade = '';
-o.xrange = 'all';
-o.yrange = 'all';
+o.xrange = '';
+o.yrange = '';
 
 o.grid = true;
 
@@ -79,6 +78,60 @@ elseif nargin > 1
     end
 end
 
+% Check options provided by user
+assert(ischar(o.title), '@graph.graph: title must be a string');
+assert(ischar(o.footnote), '@graph.graph: footnote must be a string');
+assert(ischar(o.config), '@graph.graph: config file must be a string');
+assert(ischar(o.xlabel), '@graph.graph: xlabel file must be a string');
+assert(ischar(o.ylabel), '@graph.graph: ylabel file must be a string');
+assert(ischar(o.figname), '@graph.graph: figname must be a string');
+assert(islogical(o.grid), '@graph.graph: grid must be either true or false');
+assert(islogical(o.legend), '@graph.graph: legend must be either true or false');
+assert(isint(o.legend_font_size), '@graph.graph: legend_font_size must be an integer');
+valid_legend_locations = ...
+    {'North', 'South', 'East', 'West', ...
+     'NorthEast', 'SouthEast', 'NorthWest', 'SouthWest', ...
+     'NorthOutside', 'SouthOutside', 'EastOutside', 'WestOutside', ...
+     'NorthEastOutside', 'SouthEastOutside', 'NorthWestOutside', 'SouthWestOutside', ...
+     'Best', 'BestOutside', ...
+    };
+assert(any(strcmp(o.legend_location, valid_legend_locations)), ...
+       ['@graph.graph: legend_location must be one of ' strjoin(valid_legend_locations, ' ')]);
+
+valid_legend_orientations = {'vertical', 'horizontal'};
+assert(any(strcmp(o.legend_orientation, valid_legend_orientations)), ...
+       ['@graph.graph: legend_orientation must be one of ' strjoin(valid_legend_orientations, ' ')]);
+
+assert(isempty(o.shade) || (iscell(o.shade) && length(o.shade) == 2 && ...
+                            ischar(o.shade{1}) && ischar(o.shade{2})), ...
+       ['@graph.graph: yrange is specified as ''{''1999q1'',''1999q2''}''.']);
+assert(isempty(o.xrange) || (iscell(o.xrange) && length(o.xrange) == 2 && ...
+                             ischar(o.xrange{1}) && ischar(o.xrange{2})), ...
+       ['@graph.graph: xrange is specified as ''{''1999q1'',''1999q2''}''.']);
+assert(isempty(o.yrange) || (iscell(o.yrange) && length(o.yrange) == 2 && ...
+                             ischar(o.yrange{1}) && ischar(o.yrange{2})), ...
+       ['@graph.graph: yrange is specified as ''{''1999q1'',''1999q2''}''.']);
+
+assert(~isempty(o.data), '@graph.graph: must provide data');
+msg = ['@graph.graph: data must either be a dynSeries or a cell array of ' ...
+       'dynSeries'];
+if length(o.data) == 1
+    assert(isa(o.data, 'dynSeries'), msg);
+else
+    assert(iscell(o.data), msg);
+    for i=1:length(o.data)
+        assert(isa(o.data{i}, 'dynSeries'), msg);
+    end
+end
+
+msg = ['@graph.graph: series to use must be a cell array of string(s)'];
+if ~isempty(o.seriestouse)
+    assert(iscell(o.seriestouse), msg);
+    for i=1:length(o.seriestouse)
+        assert(ischar(o.seriestouse{i}), msg);
+    end
+end
+
 % Create graph object
 o = class(o, 'graph');
 end
\ No newline at end of file