Related:

Compare with AREMOS

This section compares AREMOS (version 5.4.1) modules and functionality with Gekko 2.0 (as of December 2015). Note that Gekko 3.0 has been released, with a lot of new features.

The comparison is focused on overall functionality, and not so much on particular details. So this is not a command-by-command comparison.

The following two comparisons are provided:

  • Checking which AREMOS components are available/missing in Gekko
  • Describing Gekko components not available in AREMOS

Conclusion: Gekko implements almost all relevant features regarding data management projects. Regarding modeling and solving models, Gekko is superior to AREMOS. Regarding econometrics, Gekko lacks a lot of these features, but these features are not the main point of Gekko (for the time being at least). Instead, users are advised to use R or other statistics/econometrics packages.

Components

Note in general that econometrics is skipped in the comparison. AREMOS contains quite a lot of econometrics functionality, but it is not the intention to emulate this part of AREMOS in Gekko (but instead provide good interfaces to econometrics packages like R etc.)

AREMOS

component

Status in Gekko 2.0 Comment
Program structure ok Like AREMOS, Gekko is timeseries and databank oriented, allowing any number of open databanks containing timeseries with any frequency. Since OPEN<prim>, local time settings like <2010 2020>, etc. are implemented similarly, the overall structure of a Gekko program will typically be very similar to the structure of a corresponding AREMOS program.
Syntax ok Related to program structure, the basic Gekko syntax (abstracting from concrete command names) is also basically similar to AREMOS syntax, albeit with some differences.

  • Lists of items are separated by commas (‘,’), for instance “PRINT x1, x2 x3;”
  • All lines end with semicolon (‘;’)
  • Indexing uses square brackets (‘[‘ and ‘]’), including lags. For instance gdp[-1], gdp[2020], #m[2, 3]. Ranges are ‘..’ instead of ‘-‘ in Gekko: #m[2..3, 1..5].
  • Lists use ‘#’ prefix, for instance #m. Contrary to AREMOS, Gekko matrices also use ‘#’ prefix to distinguish them from timeseries.
  • Scalars STRING, NAME, DATE and VAL use ‘%’ as prefix, to distinguish them from lists. These scalars correspond to the equivalent ASSIGN variables in AREMOS.
  • Timeseries are without prefix as in AREMOS. Name/string scalars can be used for name composition, including the use of the ‘|’ concatenator.
  • Banks are referred to by colon (‘:’), as in AREMOS.
  • Local options are set inside a ‘<‘ and ‘>’ braces, for instance “PRT <2010 2020> gdp;”. This complies with AREMOS.
  • Loops (FOR) and conditionals (IF) work more or less in the same way as AREMOS. REPEAT and WHILE will be added.
  • Comments use ‘//’ instead of ‘!’
  • Strings use single quotes (‘) only, AREMOS accepts double quotes too (“)
  • Dot (.) can be used for frequencies, to distinguish gdp.q from gdp.a. Dots will probably be possible in variable names, but are not allowed at the moment. Dots can also be used for lags, for instance x.2 = x[-2].
  • Mathematical and logical operators work like in AREMOS. Many of the same in-built functions are provided.

 

Databanks ok Gekko provides the same functionality, with a list of open databanks, searchable for timeseries. The concept of the primary databank is extended with a ‘reference’ databank concept. This makes many kinds of comparisons much easier. Databanks are closed with CLOSE and written to automatically if changed, and protected banks are supported. Banks are referred to with single colon, and all AREMOS functionality regarding timeseries copying, clearing, indexing, renaming, counting etc. is available.

Gekko does not have a support bank, but it is intended to put procedures/functions into a general ‘support’ folder instead.

Gekko includes READ/WRITE for dealing with databanks. This is often practical. IMPORT/EXPORT is also supported.

At the moment, Gekko databanks contain series only (annual, quarterly, monthly or undated). It is considered to allow scalars, matrices and lists into databanks, whereas procedures/functions and equations/models are kept outside.

Advanced structures and documents are not supported, but there is a DOC command to handle label and source for timeseries.

Contrary to AREMOS, searching for a name in a Gekko databank always takes the same amount of time, regardless of the databank size (Gekko uses hash tables internally).

Speed ok Gekko runs models and command files much quicker than AREMOS. For command files, AREMOS uses interpretation on a line-by-line basis, whereas Gekko compiles the commands into machine code.
Timeseries and frequencies partial Gekko supports annual, quarterly, monthly or undated frequencies, with the same codes (A, Q, M, U). Higher frequencies could be added if necessary. Gekko does not use colon for dates, for instance 2015:3. Instead the more informative 2015q3 notation is used (which AREMOS also uses).

Like AREMOS, the time period and frequency can be set globally, and is used implicitly in many commands. Gekko timeseries can have any number of observations, and Gekko uses missings to avoid the dreaded “** Observation outside current period” message in AREMOS.

COLLAPSE, SMOOTH, SPLICE, TRUNCATE and ANALYZE are supported. Seasonal adjustment (X12A) is provided.

Transformation series are not supported.

Lists ok Gekko supports almost precisely the same components for list manipulation, including listfiles.
Wildcards ok Gekko also uses ‘*’ and ‘?’ for wildcards, but uses ‘..’ for ranges instead of ‘-‘.
Matrices ok Basically all of AREMOS’ matrix functions are provided, including indexing of sub-matrices etc. The syntax is a little bit different, since Gekko refers to matrices with ‘#’ prefix, and matrix construction uses the [1, 2 || 3, 4] pattern rather than [1, 2]||[3, 4]. In addition, ranges are ‘..’, not ‘-‘.

Pack/unpack regarding timeseries is provided.

A matrix editor is not provided, but copy/pasting a matrix to Excel is easy (just use the copy-button in the Gekko interface).

Scalars ok STRING, NAME, VAL and DATE provide most of the functionality of the ASSIGN command. In Gekko, STRING corresponds to ASSIGN … STRING …, whereas NAME corresponds to ASSIGN … LITERAL … . Note that Gekko scalars are referred to by ‘%’ prefix, not ‘#’ like AREMOS. There are quite a lot of string functions available.
Models ok Models and equations are done a bit differently from AREMOS. In Gekko, only one model can be loaded at the time, but on the other hand models solve much faster. Gekko’s solvers and modeling facilities are more powerful than AREMOS’, and Gekko also solves with leads. The Gekko concept of a ‘reference’ databank alongside the primary databank eases comparisons of scenarios.
Econometrics limited Only simple OLS (and ANALYZE) is implemented in Gekko. It is not the intention to provide advanced econometrics in Gekko, but rater focus on interfaces to R, TSP, etc. (cf. R_RUN).
Graphs partial Gekko implements graphs via the gnuplot engine. Compared to AREMOS graphs with large template files (.gra), Gekko graphs are lacking. But still, normal graphs work fine in Gekko, and exporting data to Excel for further graphing possibilities is easy.
Reports almost Printing of timeseries, lists, matrices, scalars, etc. is implemented, including TELL. TABULATE is not implemented.
Tables different Gekko has rich features regarding the production of timeseries tables and menus from config files (including html tables). But Gekko does not have an Excel-like TABLE editor like AREMOS, and some of the advanced features like mixing frequencies in tables are missing in Gekko (Gekko tables are mostly used for annual data).
File transfer ok Besides Gekko’s own open gbk format, Gekko supports formats like tsd, csv, prn, xlsx, etc. for data interchange.
Options ok Gekko operates with globals option settings in the same way as AREMOS. The syntax is OPTION rather than SET, however.
Functions/procedures almost User defined functions are supported in Gekko. Library logic regarding functions/procedures will soon be added.
Store/restore settings ok Settings can be stored in gekko.ini similar to aremos.opt, and will be loaded when using RESTART rather than RESET. The content of the Work bank, sample, frequency, etc., is not automatically stored from session to session (this can be done manually if needed). Local options inside <…> angle brackets are implemented like in AREMOS.
Client/server no Gekko is one component, and there is one main window. Gekko can be called silently in batch mode if needed.
Editor no Gekko does not contain an inbuilt editor for command files or procedures, but the EDIT command calls Notepad. External editors like Kedit or Notepad work fine with the RUN command.
Structure/document/write no This is not implemented in general (only label/source, see DOC), but Gekko stores the last SERIES command inside the source field of individual timeseries. Some AREMOS users are happy to use custom designed documentation fields in AREMOS, and something similar (and perhaps a bit more modern) will be added to Gekko.
INTERPOLATE no This command is missing in Gekko (creating a higher-frequency timeseries from a lower-frequency one).
RANK no This command is missing in Gekko (sorting timeseries).
REBASE no Rebasing a timeseries = 1 in a particular period, missing as a command in Gekko.
REPEAT/WHILE no You can use FOR loops with IF instead, but REPEAT/WHILE will be added.
UNASSIGN no There is actually no way to delete scalars in Gekko. This will be done.

 

The following section highlights some of the functionality that Gekko provides, but AREMOS does not.

 

Gekko component Comment
Open source Gekko is open source, and hence free to download (including all source code files), use and alter (under the GNU GPL license). Everything in Gekko is C#.NET + external modules like gnuplot, 7zip and x12a. Easy installation of Gekko with all-inclusive installer. The only thing to worry about is wheather one should install R, too – this can be done separately, before or after the Gekko installation.
Databanks Gekko 2.0 introduces the concept of a ‘reference’ databank, opening up all the advantages of commands/printcodes like PRT<m>, PRT<q>, MULPRT<pch> etc. The default databank format (gbk) is a fast and open/nonproprietary format (zipped protobuf files). All data and internal representations are in double-precision (64 bit, around 15 significant digits).
Reading READ/WRITE for easier data loading into the primary or reference databank. This can be cumbersome in AREMOS via OPEN, COPY, etc.
Models Gekko has better and faster solvers, including solvers for goals-means, and solvers for leaded endogenous variables. Models can be signed, and you can use dlog() etc. in the equations (also on the left hand side). Automatic handling of add-factors, exogenization etc. Model signatures implemented.
Translators Gekko can translate from the older Gekko 1.8, and from AREMOS (see the TRANSLATE command). The translators are pretty advanced, using a parser internally, so they do much more than simple search & replace.
Statistikbanken AREMOS has a QuickData component for linking up to Global Insight’s databases. Gekko has a similar component for linking up to the Danish ‘Statistikbanken’ database, via its new API. Meta-data regarding the timeseries is imported as labels.
R interface Easy interface to R, so that you can manipulate your timeseries in R and get them back again.
Tables/menus The Gekko menu and table generator is actually quite powerful, using xml and html. You can use html menus to organize the tables.
Suggestions Suggestions pop up when the user types OPTION values. There will also be syntax suggestions from the translators, if the command entered looks like Gekko 1.8 or AREMOS syntax.
String/name Gekko provides a cleaner string/name distinction, and conversion possibilities (name to string: ‘%n’ or $n, and string to name: {%s} or {s}).
HP-Filter In-built HP-Filter function
Run status

window

(Double-click the green/yellow/red light in the lower bottom of the main window.) This window tracks the progression of Gekko jobs = .gcm files running. It is practical for larger time-consuming jobs, and to see which jobs have finished.
Databank window (Click F2). In this window, you can change the position of Gekko databanks in the search list via drag and drop.
Decomposition The DECOMP command has no equivalent in AREMOS. Used to track effects from equation to equation in models, and decompose these effects into contributions from precedents. User-defined informative labels for the timeseries are supported.
Equation browser The equation browser has no equivalent in AREMOS. It is used to click through and show the equations and data in the model (via precedents and dependents). User-defined informative labels for the timeseries are supported.
MULPRT and print-codes Using the concept of primary and reference databanks, a lot of comparisons are easy to perform. “MULPRT y;” will print the difference between y in the two databanks, but more complicated transformations are possible via so-called print codes. You may for instance use “PRINT <p> x, y, z <m q>;”, where the first <p> tells Gekko to print out x, y in growth percentages (<p>), whereas z is treated individually and is printed out as absolute and relative multiplier (<m q>). This way, you avoid tedious expressions like “PRINT 100*(x/x[-1]-1), 100*(y/y[-1]-1), z – ref:z, 100*(z/ref:z-1);”. The print-code transformations also work on expressions and lists. There are even ‘long’ and ‘short’ print codes, to suit different purposes. The SERIES command also supports the ‘short’ printcodes, so you may state, for instance, “SERIES <p> x = 15;” to set the growth rate of x to 15%. The printcodes work for tables, too.
Time filters Gekko supports time filters (see TIMEFILTER). Using these, observations may be skipped or aggregated when reported. This is useful regarding long samples.
Modes Via the MODE command, Gekko can run in sim-, data-, or mixed mode. For instance, databank searching is switched off in simulation mode, but active in databank mode. Mixed mode synthesizes sim- and data-mode, that is, mixes model simulation and data handling.
Unlimited There are no limits on any datastructures in Gekko, other than what available RAM permits.