Skip to content
Snippets Groups Projects
Select Git revision
  • 61fd9d7c7dda870144dfbcbb1e606129b10885c0
  • master default
  • nlf-fixes
  • newton-quadratic-equation-solver
  • nlf-fixes-r
  • nls-fixes
  • sep-fixes
  • sep
  • use-dprior
  • ep-sparse
  • rebase-1
  • parfor
  • reset-seed-in-unit-tests
  • remove-persistent-variables
  • nonlinear-filter-fixes
  • pac-mce-with-composite-target
  • 6.x
  • dprior
  • covariance-quadratic-approximation
  • benchmark-ec
  • kalman_mex
  • 5.5
  • 5.4
  • 5.3
  • 5.2
  • 5.1
  • 5.0
  • 5.0-rc1
  • 4.7-beta3
  • 4.7-beta2
  • 4.7-beta1
  • 4.6.4
  • 4.6.3
  • 4.6.2
  • 4.6.1
  • 4.6.0
  • 4.6.0-rc2
  • 4.6.0-rc1
  • 4.6-beta1
  • 4.5.7
  • 4.5.6
41 results

rplot.m

Blame
  • Forked from Dynare / dynare
    Source project has a limited visibility.
    the-model-file.rst 627.11 KiB

    The model file

    Conventions

    A model file contains a list of commands and of blocks. Each command and each element of a block is terminated by a semicolon (;). Blocks are terminated by end;.

    If Dynare encounters an unknown expression at the beginning of a line or after a semicolon, it will parse the rest of that line as native MATLAB code, even if there are more statements separated by semicolons present. To prevent cryptic error messages, it is strongly recommended to always only put one statement/command into each line and start a new line after each semicolon. [1]

    Lines of codes can be commented out line by line or as a block. Single-line comments begin with // and stop at the end of the line. Multiline comments are introduced by /* and terminated by */.

    Examples

    // This is a single line comment
    var x; // This is a comment about x
    /* This is another inline comment about alpha */  alpha = 0.3;
    /*
     This comment is spanning
     two lines.
    */

    Note that these comment marks should not be used in native MATLAB code regions where the % should be preferred instead to introduce a comment. In a verbatim block, see :ref:`verbatim`, this would result in a crash since // is not a valid MATLAB statement).

    Most Dynare commands have arguments and several accept options, indicated in parentheses after the command keyword. Several options are separated by commas.

    In the description of Dynare commands, the following conventions are observed:

    • Optional arguments or options are indicated between square brackets: ‘[]’;
    • Repeated arguments are indicated by ellipses: “...”;
    • Mutually exclusive arguments are separated by vertical bars: ‘|’;
    • INTEGER indicates an integer number;
    • INTEGER_VECTOR indicates a vector of integer numbers separated by spaces, enclosed by square brackets;
    • DOUBLE indicates a double precision number. The following syntaxes are valid: 1.1e3, 1.1E3, 1.1d3, 1.1D3. In some places, infinite Values Inf and -Inf are also allowed;
    • NUMERICAL_VECTOR indicates a vector of numbers separated by spaces, enclosed by square brackets;
    • EXPRESSION indicates a mathematical expression valid outside the model description (see :ref:`expr`);
    • MODEL_EXPRESSION (sometimes MODEL_EXP) indicates a mathematical expression valid in the model description (see :ref:`expr` and :ref:`model-decl`);
    • MACRO_EXPRESSION designates an expression of the macro processor (see :ref:`macro-exp`);
    • VARIABLE_NAME (sometimes VAR_NAME) indicates a variable name starting with an alphabetical character and can’t contain: ()+-\*/^=!;:@#. or accentuated characters;
    • PARAMETER_NAME (sometimes PARAM_NAME) indicates a parameter name starting with an alphabetical character and can’t contain: ()+-\*/^=!;:@#. or accentuated characters;
    • LATEX_NAME (sometimes TEX_NAME) indicates a valid LaTeX expression in math mode (not including the dollar signs);
    • FUNCTION_NAME indicates a valid MATLAB function name;
    • FILENAME indicates a filename valid in the underlying operating system; it is necessary to put it between quotes when specifying the extension or if the filename contains a non-alphanumeric character;
    • QUOTED_STRING indicates an arbitrary string enclosed between (single) quotes;
    • DATE indicates a time period which can be either a year (e.g. 2024Y or 2024A), a half-year (2024S1 or 2024H1), a quarter (2024Q2) or a month (2024M3) (see :ref:`dates in a mod file`). Optionally, the time period can be followed by a plus sign and a number of periods, in which case the date is shifted accordingly (e.g. 2023Q1+6 is accepted and is equivalent to 2024Q3).

    Variable declarations

    While Dynare allows the user to choose their own variable names, there are some restrictions to be kept in mind. First, variables and parameters must not have the same name as Dynare commands or built-in functions. In this respect, Dynare is not case-sensitive. For example, do not use Ln or shocks to name your variable. Not conforming to this rule might yield hard-to-debug error messages or crashes. Second, when employing user-defined steady state files it is recommended to avoid using the name of MATLAB functions as this may cause conflicts. In particular, when working with user-defined steady state files, do not use correctly-spelled greek names like alpha, because there are MATLAB functions of the same name. Rather go for alppha or alph. Lastly, please do not name a variable or parameter i. This may interfere with the imaginary number i and the index in many loops. Rather, name investment invest. Using inv is also not recommended as it already denotes the inverse operator. Commands for declaring variables and parameters are described below.

    On-the-fly Model Variable Declaration

    Endogenous variables, exogenous variables, and parameters can also be declared inside the model block. You can do this in two different ways: either via the equation tag (only for endogenous variables) or directly in an equation (for endogenous, exogenous or parameters).

    To declare an endogenous variable on-the-fly in an equation tag, simply write endogenous followed by an equal sign and the variable name in single quotes. Hence, to declare a variable c as endogenous in an equation tag, you can type [endogenous='c'].

    To perform on-the-fly variable declaration in an equation, simply follow the symbol name with a vertical line (|, pipe character) and either an e (for endogenous), an x (for exogenous), or a p (for parameter). For example, to declare a parameter named alphaa in the model block, you could write alphaa|p directly in an equation where it appears. Similarly, to declare an endogenous variable c in the model block you could write c|e. Note that in-equation on-the-fly variable declarations must be made on contemporaneous variables.