Lonergan's Diagram of Rates of Flow (v0.14)

This applet is a simple demonstration of Lonergan's model from his "Essay on Circulation Analysis".
Currently, this diagram computes the flows between nodes according to the following equations:
1. Basic Demand ( I' ) = c'O' + D' + c''O''
2. Basic Supply ( O' ) = E' + S'
3. Surplus Demand ( I'' ) = i''O'' + D'' +i' O'
4. Surplus Supply( O'' ) = E'' + S''
5. Redistributive Function ( F ) = so'O' + so''O'' + si'I' + si''I''
At each step (after the first), each node:
1. reads the current value of its incoming edges,
2. computes the new value of each node (see below), and
3. outputs new values on its outgoing edges according to the coefficients.
The values displayed on the diagram are the values in the system at the end of a step.  Each node shows the current value (amount of money?) contained in each node, and its outgoing links show how this value will be distributed among the outputs in the next cycle.  The values are color coded as follows:  Red represents flows from a demand node, Green represents flows from a supply node, and Blue represents flows from the redistributive function.  These values represent the total amount that will move through that channel during one time interval.  It is therefore a measure of flow -- i.e., "so much every so often" -- where the time interval (the "so often") is one simulation step.

Nodes and Parameters

Each node has a set of variable parameters, which one can set by clicking on the desired node.  These are described below.

Demand Nodes
The demand nodes, I' and I'' have 3 main parameters, s, Mul, and AccMul and Acc are used to determine the amount available to the node based on the amount flowing into it as follows:

1. At the beginning of the step, the values in the channels going into the node are summed up.
2. This value is then multiplied by the multiplier factor Mul.  In this way we can express a multiplicative (geometric) form of acceleration, e.g., node I' outputs 1.1 times the amount of flow it receives.
3. We then add Acc to the result of this multiplication.  This allows us to express an additive (arithmetic) acceleration, e.g., node I' generates 100 new units of flow per cycle.
In summary, the current amount available to the node is computed as:
value = (sum of inputs)*Mul + Acc

After computing this value, we use the coefficient s to determine which fraction of the value goes to the redistributive function (this value may represent "savings").  The rest of the available amount (1-s) goes to the demand node's corresponding supply node.

In addition to these parameters, one can also control the value of a node in 3 ways:

1. The ForceVal parameter allows one to set the value at the node.  If the checkbox is checked, then in the next cycle, the value at the node will be taken from the value typed in the text field.  The input values going into the node (from the current cycle) will be ignored, as will the Mul and Acc parameters.  The output flows in the next cycle will be computed as fractions of the forced value.
2. The MaxVal parameter specifies the maximum value that a node is allowed to have.  The value is computed normally as described above, but if the resulting value is greater than the maximum, then the value is capped at the maximum amount.  (One thing this implies is that if one of the nodes has a maximum value, then the system cannot accelerate forever since any additional incoming flows in excess of the maximum value will be ignored.)
3. The MinVal parameter is similar to the MaxVal parameter but sets the minimum value instead.
Supply Nodes
The supply node parameters are just like the demand node parameters except that each node now has 3 output coefficients, c, i, and s, instead of just s.  These correspond to the fractions of the flows going to the basic ("consumption"), surplus ("investment"), and redistributive ("savings") subcircuits of the system, respectively.

These coefficients must add up to 1.  Thus, if you change the value of one of the 3 coefficients, another one will be adjusted accordingly. To control which coefficient will be adjusted automatically, select it by clicking the appropriate radio button.

Redistributive Node
The redistributive node has the following parameters for each for the 4 output channels (S',S'',D',D''):

1. f  denotes the fraction of the sum of the input flows into the redistributive node that will go to the particular channel.
2. Acc denotes a value added to this fraction.
3. Forceval overrides f and Acc and allows one to specify a fixed value to be put in the particular channel.
Note that this is only one of infinitely many different functions that can be implemented by the redistributive node.  In fact, it may be that most of the future research in using Lonergan's model would be on how to design the redistributive node so that it can help maintain and encourage dynamic equilibrium in the system.  Meanwhile, however, the current formulation allows us to perform very simple experiments.  In particular, the redistributive function can be used to induce acceleration into the system by setting the channels to positive values.  It can also induce deceleration by setting the channels to negative values.

System Status Display

On the lower left corner of the screen, several values are displayed indicating the current status of the system in terms of the values of flows and amounts.  Among these are:
• total: total amount of money in the system
• total accel: change in the amount of amount in the last step (acceleration)
• totalIO: total amount of money in income and outlay nodes only (not including the F node)
• total demand: I'+I''
• total supply: O'+O''
• total basic: total amount in basic subcircuit = I'+O'
• total surplus: total amount in surplus subcircuit = I''+O''
• basic acceleration: acceleration of basic subcircuit.  This is equal to the amount of money that flowed into the basic subcircuit in the cycle which just ended (i.e., this is M' of the previous cycle).
• surplus acceleration: acceleration of surplus subcircuit. This is equal to the amount of money that flowed into the surplus subcircuit in the cycle which just ended (i.e., this is M'' of the previous cycle).
• G: crossover difference (c''O'' - i'O')
• G' accel: acceleration of crossover flow from surplus to basic (c''O'')
• G'' accel: acceleration of crossover flow from basic to surplus (i'O')
• G accel: (G'accel - G''accel), also the same as acceleration of G

Things To Try

This demo is still very simple compared to what Lonergan originally had in mind, and some key elements in the theory behind it are still unimplemented.  Thus, we are still not sure what its results mean at this point in time.  However, we have noticed some patterns in its behavior which may be interesting to study further.  Here are a few things that you can try that produce some interesting results.  (Note, for more accurate results, it is best to stop the simulation first behavior changing the parameters.)
• No acceleration, no redistributive function.  Try changing the c and i coefficients of the supply (O) nodes.  Notice that changing the coefficients causes money to be redistributed, but the system then eventually stabilizes to a new static equilibrium, where the total amount of money in the system stays constant, and the two crossover flows (c''O'' and i'O') cancel each other out (on average).
• Add an acceleration or deceleration through a supply or demand node.  This can be done in two ways:
• Put a non-zero Acc parameter.
• Set the Mul parameter to something other than 1.
Notice that when you do this, the total amount of money in the system starts changing.  In general, if you have a negative total acceleration, then eventually, the system gets "drained" and the money approaches 0.  If you have a positive acceleration, however, then the total amount of money increases constantly.  This may be a demonstration of "dynamic equilibrium", although we are not sure right now.
• Add an acceleration or deceleration through the redistributive function.  This has an effect similar to that above, but it may cause an imbalance in the crossovers (a non-zero average G value).  Note, however, that an imbalance in the crossovers in this case does not cause a crash in the system.
• Experiment with Max, Min, and Forced values.  Notice how specifying a maximum value for a node effectively prevents accelerations from going on forever and causes the system to stabilize at a certain point.
Note that these are just a few things that you can do with this demo.  Please let us know if you make any other interesting discoveries.

Disclaimer and an Invitation to Help with Future Research

Please note that the current demo is very much incomplete and therefore does not really do justice to Lonergan's model.  At present, our main intent is not come up with concrete practical results, but to encourage interest in this research topic by helping people visualize the dynamics of flow and acceleration in Lonergan's model.  Thus, please do not expect this demo to be able to help economists make predictions or decisions yet.

This demo is written in Java and has a modular structure which allows users to change the behavior of each node by writing a Node-type class.  You are most welcome to experiment with different node behaviors by writing your own Java code.  Please email Luis Sarmenta if you want to receive the Java source code.

Currently, a major shortcoming of this demo is its failure to demonstrate the "crashes" that Lonergan wants to avoid.  The system right now seems to tend to stabilize itself under most conditions, and the only way to cause it to crash (i.e., cause some nodes to have values of 0 or less) is to intentionally explicitly insert a negative net acceleration into the system by setting the parameters of some nodes.  We suspect that this problem is due to the incompleteness of our model.  In particular, here are some things that we think may be interesting topics for future research:

• Modelling Lonergan's equations more fully.  Currently, the equations implemented at each node are very simple.  Lonergan actually mentions possible equations which are a lot more complex.
• Implementing time lags.  Currently, the time lag is fixed and small -- i.e., one cycle.  It may be that if the flows undergo a time lag, then it may be possible for a system to crash if some parts cannot react "fast enough".
• Modelling inflation and other economic effects.  These are other factors that may induce a crash, if for example we insert too much money too quickly into the system.
Finally, note that we, the authors, are primarily computer scientists and mathematicians. Unfortunately, are not economists, and thus are not experts in the interpretation of Lonergan's model.  Thus, if you have any insights here that may help, you are most welcome to contact us about it!