The User Interface
Figure 58 shows how Minsky appears when you first run the program.
Figure 58: Minsky's interface

Minsky ’s user interface has five main components:
- The menu bar, with options File/Edit/Bookmarks/Insert/Options/Simulation/Help;

- The simulation control toolbar with tools to reset a simulation, run it, stop it, step through it, change the speed of the simulation, reverse its direction (simulate backwards in time rather than forwards), zoom out/in/reset/full scale, record the construction of a model, and replay its construction;

- Tabs for various aspects of the user interface. The main tab is Wiring , where you lay out your model using the visual design elements in Minsky ; Equations shows the equations generated by your model; Parameters shows the names and values for model parameters; Variables lists the definition of the variables in a model; Plots shows selected graphs from a simulation on a separate canvas; and Godleys shows the double-entry bookkeeping tables used to build the financial aspects of any model you construct;
The User Interface
- The Toolbar for designing a model. From left to right, the tools: import data; attach data to a Ravel (a commercial extension to Minsky ); insert a plot; insert a spreadsheet; from a dropdown menu, insert either a variable, a parameter, or a constant; lock an operation (so that the locked variable doesn’t change when the model is altered); insert a text note; and insert a time widget. The next six icons activate a series of drop-down menus to insert mathematical operators on the canvas. Finally, there is a logical switch operator, the Godley Table icon, integral block icon, and differential operator;
- And finally, the design canvas, where the contents depend on which Tab is active—see Figure 59. The main Wiring tab presents you with a design surface that is 100,000 by 100,000 pixels large—in terms of modern computer screens, that’s equivalent to an array of 4K monitors 25 monitors wide and 50 monitors deep—each with 4,000 pixels horizontally and 2,000 pixels vertically. You are unlikely to design a model that uses even 1% of that design space, but the room is there if needed to build truly gargantuan models.
Figure 59: Minsky's interface, open on the "Wiring" Tab.

You will spend most of your time on the Wiring Tab when designing a Minsky model. As is standard in system dynamics programs, you create equations using wires that connect one or more entities to each other. A simple equation like, for example, a + b = c , looks like this in Minsky :
The User Interface

We have endeavoured to make entering equations as easy as possible, so you can just type anywhere on the canvas to add a variable to your model. For example, if you wish to define GDP, you can simply start typing “GDP” on the canvas. When you hit the “G” key, the “textInput” dialog box will pop up, where you can complete typing the expression: see Figure 61.
Figure 61

When you press the Enter key, or click on “OK”, the variable GDP will be entered on the canvas, and the Edit dialog box will pop up where, if you wish, you can give it an initial value, specify its units, give it a short description, etc.—see Figure 62.
Figure 62
The User Interface

You can also change its type, from “flow” to “parameter”, “constant”, “integral” or “stock” (we’ll meet the latter two types in the next chapter). Parameters differ from flow variables by (a) having a different colour (blue rather than red) and (b) having only an output, whereas flow variables have both an input and an output.
You can see the input and output ports if you put your mouse pointer above an object on the canvas. These are circles on the right and left ends of a Variable, and the right end only of Parameters and Constants—see Figure 63, where my mouse pointer was hovering over Variable , so that both its input and output ports are visible.
Figure 63: Variables, parameters, and constants

If you click anywhere apart from inside one of these circles, then you can drag the entity to somewhere else on the canvas. If you click inside one of the output circles—those on the right-hand side—then a “wire” will come out of it, which will attach to the nearest input port (you don’t have to click on an input port precisely)—see Figure 64, where I’ve started dragging a wire out of the output port from Parameter towards the input port for Variable .
The User Interface

When you release the mouse button, the wire “snaps” to the nearest input port, which is that for Variable —see Figure 65. From now on, Variable ’s value will be whatever Parameter ’s value is.
Figure 65: Parameter output wired to Variable input

Of course, you’ll want to use mathematical operators to create more complicated definitions, and in Minsky you can simply type simple mathematical operators—addition, multiplication, division and subtraction—directly onto the canvas: you don’t have to use the drop-down menus on the icon bar.[17]
Let’s see what the equation for GDP looks like in Minsky , using the standard symbols economists use:
In Minsky , this looks like Figure 66:[18]
Figure 66

1818 This isn’t to say that Minsky ’s layout is better: I think it’s actually harder to read than a standard equation in this example. However, it can be more intuitive to use a flowchart format when you’re laying out causal relationships, as I do later. We also hope to enable both ways of displaying equations on the canvas in future versions of Minsky : both flowchart and standard mathematics. That, as always, is dependent on getting more funding to write the necessary code.
The User Interface
You will notice one unusual thing about Figure 66: there are two inputs to the bottom input port of the “+” key that defines Y . This is a common theme in Minsky , called “overloading”: if an operator can sensibly accept more than one input, then it does. The reason we do this is that system dynamics diagrams—which are effectively flowcharts that map across to equations—can get very messy, with lots of wires which can ultimately produce a “spaghetti diagram” effect. We aim to minimize clutter on the canvas, so you can replace the four addition and subtraction operators in Figure 66 with just one, as shown in Figure 67.
Figure 67

You may also have noticed the black dot on top of the Variable and Parameter blocks. This enables you to change the values of a parameter during a simulation. There are two ways to do this: by using the mouse to drag the dot to the left to reduce the value, and to the right to increase it; and by pressing the up key to increase the value, or the down key to reduce it, while the mouse cursor is hovering over the parameter. The maximum, minimum and step size are all set on the Edit dialog box—see Figure 68.
Figure 68: The edit dialog box for v, showing the slider Max, Min and Step Size

For example, you might use a “Leontief” production function, where output Y is defined as minimum of the capital stock K divided by a capital-output ratio , and an output—to-labour ratio times labor L: v T
The User Interface

Post-Keynesian models generally treat the capital-output ratio as a constant with a value of between 2 and 4. However, economic data implies that this is a variable with a decreasing trend over time (within a very small range), and that it rises during recessions—see Figure 69.
Figure 69: Capital stock at 2017 prices divided by GDP at 2012 prices ( www.myf.red/g/DhPF )

I’ll explain what the capital-output ratio ( COR ) actually is, and give an explanation for this trend, in the Energy chapter. For now, this implies that the practice of treating the ratio as a constant is generally defensible—the range is small, and the measurement of capital stock is compromised anyway (Sraffa 1960; Pasinetti 1969; Harcourt 1972)—but it would be wise to be able to vary the parameter and see what happens. Figure 70 shows the effect of varying the value of v from 4 to 3 during a simulation.
The User Interface


5.1 Text Formatting Minsky supports text formatting, including Subscripts,Superscripts , and Greek letters , etc., using the LaTeX mathematical formatting conventions. The basic formatting codes are: α, β
LaTeX mathematical formatting conventions. The basic formatting codes are:
- Underscore _, which subscripts the next character;
- Caret ^, which superscripts the next character;
- Brackets { } , which apply the underscore and caret to a string of characters; and
- Backslash \, which initiates a Greek character, using the English-language expression for the Greek letter. So typing \lambda into the text input dialog box and pressing Enter will generate the Greek letter .
- For example, if you wish to distinguish Real GDP from Nominal GDP, you can create variables λ GDPRealReal
For example, if you wish to distinguish Real GDP from Nominal GDP, you can create variables GDPRealReal and GDPNominal using these conventions. This improves the readability of the model, compared to standard text-only systems, which to my knowledge are all that are provided by the other system dynamics programs. Figure 71 shows some examples of LaTeX formatting in Minsky .
Figure 71: Some examples of LaTeX formatting in Minsky

Figure 72 shows the most commonly used Greek characters supported by Minsky , and the English word that LaTeX displays as a Greek letter if you precede it by a backslash key (\).
The User Interface
Figure 72: A partial list of Greek characters supported by Minsky & the English word used for it__19



5.2 Multiple copies of variables and parameters
Once you’ve defined a variable or parameter, you can copy it and use it anywhere else on a diagram. So, for example, if you use the Greek letter lambda to indicate the employment rate, then you can make a copy of and use it elsewhere in your model as an input to a wage determination (λ) model—a so-called “Phillips Curve”. λ
5.3 The Browser Window
The number of constants, parameters, and variables can grow rapidly in a large model. To enable easy navigation and selection of them, we have implemented a browser window—shown below in Figure 73. To insert a model entity somewhere else on the canvas, just click on it in the browser window, and then click on where you would like to insert it on the canvas.
Figure 73: The Browser window

The browser window is one of the options on the Var button on the toolbox. If you click on the Var button, then the menu shown in Figure 74 will appear:
19 For the full list, see https://github.com/highperformancecoder/minsky/blob/master/engine/latexMarkup.cc.
The User Interface

The first three options let you insert a Variable, Constant and Parameter respectively onto the canvas; the window shown in Figure 68 will appear, and once you have filled out the entries and pressed Enter or clicked on OK, the new entity will appear on the canvas.
The fourth option brings up the Browser window, as shown in Figure 73. By default, the browser window shows all the entities in a model, but you can control the displayed entities using the checkboxes at the top of the Browser window.
Figure 75: A moderately complex Minsky model with its browser window open, and only parameters selected

5.3.1 A Keen Rant : Rehabilitating Bill Phillips
Before I illustrate building a Phillips Curve in Minsky , it’s important to rehabilitate the reputation of the man behind the name of the curve, the New Zealand engineer-turned-economist Bill Phillips.
Few people have been as badly misrepresented by Neoclassical economists as Bill Phillips: a courageous and innovative man has been reduced to a caricature of the empirical study he undertook over one weekend, to validate a hypothesis he made about a nonlinear relationship between the intensity of economic activity and the rate of change of input prices (Phillips 1958). Frankly, the Neoclassical caricature of Phillips is probably worse than their caricature of Keynes (Hicks 1937).
At least with Keynes, Neoclassicals couldn’t completely ignore his outstanding contributions to the politics and economics of his time. As a leading civil servant, Keynes attended the Treaty of
The User Interface
Versailles , witnessed its distortion by France into a means to destroy its long-standing enemy Germany, and raised the alarm that the Treaty’s onerous terms would almost certainly lead to another war in The Economic Consequences of the Peace (Keynes 1920). He was a scion of English society, and while Hicks’s IS-LM model eviscerated Keynes’s General Theory (Keynes 1936), it didn’t eviscerate the man himself.
Phillips, on the other hand, had a unremarkable birth as the son of a New Zealand farmer, trained as an engineer, and spent most of WWII in a Japanese prisoner-of-war camp. But in that camp, among many other outstanding deeds, he risked his life to fashion a radio out of parts he stole from the commandant’s office, so that his fellow prisoners could hear British and American news reports on the progress of the War, rather than merely being force fed Japanese propaganda (Leeson 1994, pp. 606-608).
On his release, Phillips decided to use his engineering training to bring economics out of its Dark Ages of equilibrium thinking—using precisely the same modelling techniques that are now used in system dynamics programs like Minsky . The paper from which the model in Figure 73 is taken, “Stabilisation Policy in a Closed Economy” (Phillips 1954), pre-dates Forrester’s initial proposal of system dynamics by 2 years (Forrester 2003 [1956]), and the practical development of system dynamics software by about six years. Phillips was well ahead of his time, and, of course , his innovative work was ignored by mainstream economists.
Phillips’s hypothesized relationship between the level of economic activity and the rate of change of money wages (not prices!) was supposed to fit into the dynamic model shown in Figure 73, where there would not be a simple “trade-off” between inflation and unemployment, as his statistical work was bowdlerized down to,[20] but a dynamic feedback process that would be difficult, though not necessarily impossible, to stabilize.
The User Interface
Figure 76: Phillips's engineering diagram layout of an economic model with his hypothesized Phillips curve relationship inset (Phillips 1954, p. 309)


5.4 Plots in Minsky
To illustrate the Phillips Curve in Minsky , we need to plot the input (for which I’ll use the employment rate, rather than the unemployment rate) and the output (the rate of change of wages). That requires adding a plot widget to the canvas, and there are two ways to do this: click on

the icon on the toolbar; or press the @ key while on the canvas. We borrow a trick from Mathcad here: the @ symbol “looks like” a plot (use your imagination!; it’s not as obvious as using * for “multiply”, but it will do), so we use that as a keyboard shortcut.
Figure 74 shows the default shape of the plot widget after you’ve either clicked on the plot icon, or typed the @ key on the canvas. Also shown, in left to right order from the toolbox, are: the spreadsheet widget; the other toolbox icons that generate a single object (lock, note, and time at the left hand end of the toolbox; switch, Godley Table, integral and differential at the right hand end), plus all the drop-down menus shown as “tear-offs”. Notice the dotted line at the top of the
fundamental constants drop-down menu? There’s one for each, you “tear off” the menu, so that it remains permanently available while you work on a model, and it can be located anywhere on your screen.
The User Interface
Figure 77: The "fundamental constants" menu on the toolbar, with the other menus as tear-offs

Figure 75 shows a plot with its resize arrows visible: these are four arrows, one on each corner. If you click and drag on one of them, you can resize the plot (a similar feature exists on all objects in a Minsky model: look for a mini-arrow when your mouse hovers over any element on the canvas).
The coloured input ports are also highlighted (you can see this yourself by hovering your mouse over a plot). These are used to determine the upper and lower bounds for each axis (the angled inputs) and to attach variables for plotting (the horizontally aligned port on the two Y-axes, and the vertical one on the X-axis).
The User Interface

Plots are labelled using the “Options” element on the right-click mouse menu—see Figure 76. Minsky makes very heavy use of the right mouse button: right-click while hovering over a plot, and this menu will appear.
Figure 79: The right-click menu for Plots

“Options” and “Pen Styles” control the appearance of the Plot—see Figure 77.
The User Interface

Figure 78 uses the inputs of time , and the two functions sine and cosine from
the functions drop-down menu. Wire the output from t to the inputs to sine and cosine as shown, then attach them to the plots. As illustrated, more than one output wire can be dragged from an output port and attached to input ports elsewhere in a model.
The top plot in Figure 78 illustrates the default behaviour of a plot: if a variable is wired up to one of the four input ports on the left hand side of a plot, but nothing is wired to one of the eight input ports on the bottom, then “time” is treated as the input on the x-axis and the behaviour of the variable over time is plotted. The bottom plot shows that if you attach an input to the black input on the x-axis, and another to the black input on the y-axis, Minsky plots x against y, as shown in Figure 80. You can create xy plots of different colours by using matching colour inputs on the horizontal and vertical axes.
Notice also that several of the connecting lines in Figure 78 are curved. Lines can be turned into curves by clicking and dragging the blue dot that will appear when your mouse hovers over a line. Multiple points of curvature can be added to create any curve shape, by clicking and dragging somewhere on the line away from the existing blue dot(s).
The User Interface

5.5 Creating and using constants, parameters and variables There are two ways to create constants, parameters and variables in Minsky:
- Simply start typing on the design canvas. If you type a number, Minsky will interpret that as a constant, and enter that number into the canvas once you press the Enter key; if you type text, Minsky will default to creating a variable. In both cases, when you press the Enter key, Minsky will bring up the dialog box for further fine-tuning of the constant, parameter or variable; and
The User Interface
- Click on Var on the Toolbar. This will generate a drop-down menu with 4 choices:
- Constant;
- Parameter;
- Variable; and
- Browser
The first three options bring up the dialog box for creating a constant, parameter or variable. Fill out the form, press Enter or click on OK, and the entity will be placed on the canvas at the current mouse position.
The fourth brings up a separate window in which all the currently defined entities in the model are listed. You can then click on one of these and drag it onto the canvas for use elsewhere in the model.
5.6 Building a “Phillips Curve” in Minsky
Now back to the “Phillips Curve”. Phillips insisted that the function relating the rate of change of money wages to the level of unemployment would be nonlinear, and that it would have three causal factors—the level of unemployment, the rate of change of unemployment, and “the rate of change of retail prices, operating through cost of living adjustments in wage rates” (Phillips 1958, p. 283). The model in Figure 80 is a linear model with only one input, but these limitations are easily overcome later. For now, I’m just using a linear model here to keep it simple early on. You should build this model yourself in Minsky before continuing.
The model introduces one more feature of Minsky , the percent operator: this takes an input and multiplies it by 100. It’s the last entry on the “fundamental constants” toolbar dropdown, which is headed by the operator e for the value of the transcendental number e . Click on e and the drop-
down menu shown in Figure 74 will appear; click on and that will be attached to the mouse pointer; move to where you want to place it on the canvas and click the mouse, and it will be inserted there.
Then wire the model up as shown in Figure 80, using the parameter values shown in Figure 79.
Figure 82: Parameter values in the model in Figure 80 (this Figure was generated by choosing Export Canvas while on the Parameters Tab)

Table 1 shows what you have to type to get the elements shown on the canvas in Figure 80
Table 1: Variable and parameter names and how to type them
What is displayed on the canvas | Whatyou type toget it |
|---|---|
λ | \lambda |
λt | |
Sλ | S_λ |
Zλ | Z_λ |
Δw | \Delta_w |
The User Interface
To simulate this equation, vary the value of the parameter t t using the arrow keys or the mouse. As you do, the line shown in the plot in Figure 80 will be drawn. λ
Figure 83: A linear "Phillips Curve" in Minsky

Minsky generates the equations of its models in LaTeX . You can export these from the program via the File menu option “Export Canvas”, which has six options: SVG (a generic vector graphics format that I’m using to produce the Figures in this book); PDF ; EPS (Postscript); EMH (Enhanced Metafile, a Windows vector graphics format); LaTeX ; and Matlab . Choose LaTeX and you’ll save a file with a *.tex suffix, which you can load into a LaTeX -aware mathematics formatting application (which includes Word itself as of 2017). The equations behind Figure 80 are shown in Equation (3):

This takes us about as far as we can go without discussing how to handle time in dynamic modeling.
The User Interface
Footnotes
17 The one complication here is that a minus sign (-) is firstly treated as a text entry, because we realise that sometimes modelers want to enter a negative constant: so if you want to enter a minus operator on the canvas, press “-“ followed by pressing the Enter key or clicking on OK. To enter a negative constant, say -42, type -42 in the text entry box and then press the Enter key.
20 I have to concede that Phillips did make one statement in his statistical paper that was easily interpreted as offering politicians a “menu” trading off unemployment against inflation: “Ignoring years in which import prices rise rapidly enough to initiate a wage-price spiral, which seem to occur very rarely except as a result of war, and assuming an increase in productivity of 2 per cent per year, it seems from the relation fitted to the data that if aggregate demand were kept at a value which would maintain a stable level of product prices the associated level of unemployment would be a little under 2 ½ per cent. If, as is sometimes recommended, demand were kept at a value which would maintain stable wage rates the associated level of unemployment would be about 5 ½ per cent” (Phillips 1958, p. 299). But the overall context of his paper, and of his macroeconomic modelling, was one of dynamic feedbacks, and the difficulty of stabilizing the economy.