SYM - the model definition language
A G-Cubed model describes various entities (firms, households, governments etc.) and the economic relationships between them using equations. The equations defining the model are expressed using the SYM language, developed by Peter Wilcoxen.
Together, the SYM declarations of the model equation, and the supporting variables, parameters and sets that they are defined over, are referred to as a SYM model definition and they are stored in one or more SYM files that have a .sym
file extension by convention.
The SYM files for a given model are included in the set of files needed to run a model.
Software is needed to process the SYM model definition. That software is referred to as the SYM processor. It analyses a model definition to produce lists of variables and parameters as well as a library of Python functions, one for each equation in the model. The output from the SYM processor are also included in the set of files needed to run a model.
The SYM processor is an executable file. It is available in a version that can be run on:
To change a model’s equations, you need to edit the SYM model definition and then run the model definition through the SYM processor again.
Changes to a model definition are also likely to require alterations to the model database and other inputs, depending on the changes that have been made. If the changes are fundamental enough, them may require modifications to the Python package used to run the G-Cubed model.
SYM model documentation
The SYM processor can also transform the model definitions into a single HTML page that documents the model. An example of the documentation is available for the teaching version of the G-Cubed model.
The HTML documentation sets out:
- definitions of various sets
- definitions of the model variables and their type and their units etc.
- the model parameters
- the model equations
The various links between the model elements facilitate rapid exploration of the G-Cubed model. This documentation is key to understanding the model and to designing your own simulations. But before using the model documentation, it is helpful to understand a bit more about the SYM model definition language and what to expect in a model definition. That understanding can be developed by reviewing the SYM language.
Sets
A given variable can be required in a model for various combinations of sectors and regions etc.
For example, in the teaching model, region UU
, the United States and region NN
, all other countries, both track their nominal GDP. Thus, the nominal GDP variable must be defined over the regions set.
Nominal GDP for the USA will be named GDPN(UU)
and nominal GDP for all other countries combined will be named GDPN(NN)
.
A set is a collection of distinct objects or elements, which are used to define variables, parameters and equations.
In larger models, for example, with many sectors and many regions, these sets can be subsetted in various ways as part of the model definition. This subsetting is evident in the documentation of the model definition.
Region and sector codes
Two types of sets are central to G-Cubed models, a set for regions and a set for sectors.
The regions set
In the teaching model the regions
set contains 2 regions:
UU
, United States
NN
, Not United States
The sectors set
In the teaching model the sectors
set contains 2 sectors:
a01
The sector that produces energya02
The sector that produces all other material goods and services (but not capital for production or households)
All G-Cubed models have two additional sectors built into them:
Y
The sector that produces capital for firmsZ
The sector that produces capital for households
Care needs to be taken because these two capital-producing sectors are not explicitly included in the sectors set of G-Cubed models.
Variables
G-Cubed models include many different variables. The name of each variable has two components:
- A prefix, starting with a letter and then followed by zero or more letters and digits.
- An optional suffix, contained within round brackets,
()
, that specifies which members of associated sets, the variable relates to, e.g.GDPN(UU)
is nominal GDP, identified by the prefix, for the United States, identified by the suffix that contains the regions set member for the United States.
Variable Types
The variables have different types.
end
= normal endogenous variablesets
= expected next period values of endogenous variablescos
= costate (or jumping variables - that depend on expectations of the future)sta
= state variablesstl
= state variables lagged by one periodexo
= exogenous variables.
Only exogenous variables do not have their own equations in the SYM model definition. Their values, in all years, are determined outside of the system.
Variable Names
Variable names consist of the main name followed by relevant qualifier based on predefined sets enclosed within parentheses.
Examples:
Government debt in the USA is BOND(UU) where BOND is the main variable identifier and the qualifier contained in () is UU which is the country code for the USA.
The capital stock in sector 1 in the USA is defined as CAP(a01,UU) where CAP is the main variable idenitifier the first qualifier in () is the sector number and the second qualifier in the country code UU.
Parameters
Unlike variables, parameters remain constant throughout the projections generated by a model.
Like variables, parameters can also be defined over sets. The syntax for parameter names is the same as that for variables.
When users adjust parameters, (usually) the entire dynamic of the model will change. Thus, (some) parameters can be altered when users design their own experiments. Those user-defined parameters can be altered in setparameters.csv.
Equations
Like variables, equations are also defined over one or more sets.
The sets associated with an equation are explicit in the model documentation.
Model equations are divided into 4 groups:
- State variable equations
- Costate variable equations
- Equations describing the formation of expected next-period values for endogenous variables
- Endogenous variables
These groups of equations and the way that they are expressed and manipulated to solve the model are explained in the G-Cubed model solution documentation.