### Overall Design

- IRIS is a collection of objects (such as models, time series, simulation plans, databases, or VAR models) and functions.
- Object-oriented both back-end and front-end: you write your own m-files combining standard Matlab functions and IRIS objects to perform the modeling tasks.
- Integrated: all IRIS objects and functions are designed to support each other; see examples at the end of this section.
- Easily extensible: with basic knowledge of Matlab programming language, you can extend IRIS functionality.
- Glass box, not black box: everything is m-files, with clear internal structure.

### Novel Algorithms and Solutions

- Parallelized adaptive random-walk Metropolis posterior simulator.
- Particle swarm optimizer, PSO, a global optimization method.
- System priors, i.e. priors on the system properties of a model as a whole (such as shock responses, frequency responses, correlations or spectral densities).
- Equation-selective nonlinear simulator with Shanks acceleration.
- Symbolic/automatic differentiator, SYDNEY.
- Analyzer of block-recursive steady-state structure, BLAZER.
- Steady state calculated simultaneously for levels and growth characteristics in models with stochastic and/or deterministic trends.
- Triangular representation of rational-expectations model solution with forward expansion including anticipated shocks.
- Two patches to handle numerical failures of the Schur decomposition: Sum-of-Eigenvalues-Near-2, and Eigenvalues-Too-Close-To-Swap.
- Automatic detection and treatment of unit roots.
- Kalman filter with an exact non-linear prediction step.
- Combined conditioning and exogenizing with anticipated and unanticipated shocks in simulations and forecasts.
- Frequency-domain calculation of the Fisher information matrix.
- Multivariate distribution estimation using k-harmonic means

### Model File Language

- Model files only describe the model structure, not the tasks you want to perform.
- You can use any Matlab functions or you own m-file functions in model files.
- Two types of variables and shocks:
`!transition_variables`

,`!transition_shocks`

,`!measurement_variables`

,`!measurement_shocks`

. - Four types of equations:
`!transition_equations`

,`!measurement_equations`

, deterministic trend equations`!dtrend`

, dynamic`!links`

. - Modular structure: you can combine any number of declaration blocks and files.
- Descriptions and labels attached to any of the variables and equations kept in the model object for future reference.
- Control over which variables to be linearized and which variables to be log-linearized.
- Flexible control commands:
`!if`

,`!switch`

,`!for`

,`!import`

,`!export`

. - Steady-state reference operator:
`&`

. - Steady-state versions of equations for streamlining steady-state computation:
`!!`

. - Loss function for computing optimal policies under discretion,
`min()`

,`min#()`

. - Symbols denoting equations selected for exact non-linear mode:
`=#`

,`min#`

. - Pseudo-functions for ease of equation writing:
`diff`

,`dot`

,`difflog`

,`movavg`

,`movsum`

,`movprod`

. - Loss function operators
`min`

and`min#`

. - Matlab-style line and block comments.
- Any Matlab function or your own m-file function can be used in the model code.
- Syntax highlighting in the Matlab editor.

### Model Objects

- Simulations and forecasts with any possible combinations of anticipated or unanticipated, reduced-form or structural, hard or soft, exactly determined or underdetermined judgment.
- Full support for balanced-growth-path models with any number of unit roots: no need to stationarize, transform, or pre-specify anything.
- Steady-state or balanced-growth-path solution: computing both levels and growth rates, exploring block-recursive structure of the model steady state, swapping the endogeneity and exogeneity of variables and parameters.
- Advanced Kalman filtering: exact non-linear prediction step, missing observations, time-varying std deviations and correlation coefficients, anticipated and unanticipated judgmental adjustments, stochastic and deterministic trends in both transition and measurement variables, k-step-ahead predictions, exclusion of some periods and/or some measurement variables from the likelihood function.
- Optimal policy under commitment or discretion, with non-negativity constraints.
- Automatic and computationally efficient handling of missing observations.
- Monte-Carlo and bootstrap resampling methods.
- Analysis of parameter identification using data-independent asymptotic Fisher information matrix.
- Classical and bayesian estimation methods: ML in time and frequency domains, prediction error minimization, posterior mode, parameters concentrated out of the likelihood function.
- Priors imposed on individual parameters, and/or combinations and transformations of system properties and parameters.
- Switch between Optim Tbx and user-supplied optimization routines.
- Serial and parallelized adaptive random-walk Metropolis posterior simulator.
- Prior distribution function package.
- Wide range of diagnostics for stochastic properties: Autocovariance/correlation functions with time- and frequency-domain filters, power spectrum functions, forecast mean square errors, forecast error variance decomposition, Beveridge-Nelson trends, frequency response functions, moving average representation.
- Support for multiple parameterizations within one model object, and for multiple data sets.
- Automatic creation of steady-state or zero input databases.
- Change parameters and re-compute model at any time.
- Easy and instant access to the inside of model objects.
- User comments and any kind of user data attached to model objects.

### Multivariate Time Series Analysis

- Reduced-form and structural VARs with exogenous variables and time trends.
- Simple panel VARs with fixed effects.
- Several identification methods for SVARs, including generalized sign restrictions.
- Bayesian estimation of VARs and SVARs using prior dummy observations: Litterman, sum of coefficients, unconditional mean, covariance matrix.
- Factor-augmented VARs.
- Conditional and judgmentally adjusted simulations and forecasts.
- Wide range of diagnostics for stochastic properties: Autocorrelation functions with time- and frequency-domain filters, power spectrum functions, forecast mean square errors, forecast error variance decomposition, moving average representation.
- Support for multiple parameterizations within one
- Monte-Carlo and bootstrap resampling methods.
- Easy and instant access to the inside of VAR objects.
- User comments and any kind of user data attached to VAR objects.

### Database and Time Series Management

- IRIS own time series (tseries) objects supporting eight frequencies/periodicities: yearly, half-yearly, quarterly, bi-monthly, monthly, weekly, daily, and indeterminate, tailored to macroeconomic data management.
- Support for multivariate time series (no limitation on the number of dimensions, or the size of each dimension).
- Easy and flexible indexing and assigning to tseries objects.
- Standard Matlab visualization and graphics functions implemented for tseries objects.
- Univariate filtering with judgmental adjustments: Hodrick-Prescott with tunes, local linear filter with tunes, Butterworth filter with tunes.
- Built-in X12-ARIMA program for seasonal adjustment and ARIMA based decomposition.
- User comments and user data attached
- Basic database management functions based on Matlab structs.
- Importing and exporting databases in CSV format.
- Support for batch data processing within databases.
- User comments and any kind of user data attached to tseries objects.

### Reporting

- Both quick-report functions and command-oriented reporting system based on PDFLaTeX.
- Reports to include tables, graphs, matrices, arrays, texts, code listings.
- User-defined conditional formatting of individual table and array cells, rows, columns.
- User-defined graphics styles.

### Integrated Design

- Reports handle and display tseries objects and the corresponding dates and date ranges.
- Databases and time series are the standard inputs and outputs in model, VAR, and FAVAR simulations and forecasts.
- You can create a VAR object for a subset of model variables based on their model-implied asymptotic stochastic properties.
- Autocovariance/correlation and power spectrum functions have the same structure and functionality in both model objects and VAR objects.
- You can assign comments (text) and userdata (any kind of data) to each of the IRIS objects, using exactly the same syntax.

### Third Party Software

- X13-ARIMA-SEATS, a seasonal adjustment program. Courtesy of the US Census Bureau.
- KDE, a kernel smoothed density estimator. Courtesy of Z. Botev. See
`+thirdparty/kde.m`

for license. - xls2csv, a converter of Excel files. Courtesy of Christopher West. See
`thirdparty/xls2csv.js`

for license