Tuesday, 3 February 2015

An SFC Version of the Diamond Growth Model

A number of my posts have attempted to compare and draw parallels between very different approaches in economics.  It is an exercise I find very interesting and informative.  In this vein, I have recently gone about constructing a Stock-Flow Consistent (SFC) version of the Diamond growth model set out in the paper National Debt in a Neoclassical Growth Model.

The first thing to make clear is that the stocks and flows in Diamond's model are perfectly consistent, so I don't mean that I am somehow correcting accounting errors.  Rather, what I have attempted to do is to restructure the model into the format typically used in post-Keynesian stock-flow models.  This looks like the models that appear in Godley & Lavoie's Monetary Economics.  With appropriate choice of parameter values, however, it is structurally equivalent to Diamond's neoclassical model and produces the same results.

The purpose of this exercise was to focus on the behavioural assumptions of the model and see where post-Keynesian and neoclassical views might diverge.  Doing so requires "padding out" the original model a bit.  Most notably, Diamond's model involves only real values - there is a real wage level, but no separate price and nominal wage levels.  This doesn't fit well with a post-Keynesian worldview, so a major innovation is to turn this into a monetary model with nominal values, as well as real. 

As it turns out, this is quite a useful exercise.  One of Diamond's main themes is the impact of national debt, and including prices and inflation allow us to examine some dynamics in a richer way than what is covered in that paper.  This was also part of my purpose in undertaking this exercise and I intend to devote a separate post to examining the role of national debt within this model and saying something about Diamond's conclusions.

As usual I have relegated the equations and variable listing to the end of the post, but the schematic below illustrates the structure of this model.  The policy tools are shown by the dotted boxes and the arrows show the direction of causation.  The dotted arrows show causation through expected future values.

There are two assets in this model: government bonds and physical capital.  Firms hold capital and households own the firms.  I have assumed that households fund firms' capital investment by making capital contributions.  Households hold bonds directly.  I have not include banks and bank money.  I could easily do so but it would add complexity, and it would only make a difference if I wanted to start making additional assumptions about how banks behave.  If you worry about the lack of money, imagine there's a bank that holds all the government bonds, funded by interest bearing deposits held by households.

The table below then shows the flow of funds matrix for the model.

Consumer spending

Investment expenditure

-I, I

Government spending

Wage bill

Operating surplus


Bond interest

Capital contribution

Bond issuance


Although the causal structure illustrated in the schematic is essentially post-Keynesian, the model can still produce the same results as those of Diamond's neoclassical model.  However, this does depend on what we assume about certain parameters.  There are also a few particular points about the way the model is drawn up.  I want to look at these now.

Where expected future values are used in SFC models, these are usually based on some form of adaptive expectation mechanism.  The Diamond model requires forward looking expectations, i.e. expected values have to be equal to the actual outcome.  This makes the solving process for an SFC model rather more complicated, but it is perfectly doable (see note on Solution Technique below)

Adjustment Periods
SFC models will typically involve a number of functions where values adjust incrementally towards target values.  I have included two here: the capital stock and nominal wages.  However, to conform with Diamond's model, we have to assume that the lag on adjustment is zero, i.e. these values adjust fully in the current period.  Because this applies to wages, it implies that there is no wage or price stickiness.  This must be the case, of course, in Diamond's model as nominal values do not figure.

As Diamond's time periods each represent half a lifetime, there is something to said for allowing full adjustment.

Production Functions
Diamond uses a Cobb-Douglas production function.  In my version, if the parameters are chosen appropriately, this is implicit in the labour demand function.  This function allows employment to follow from the level of aggregate demand and also provides that greater capital investment improves labour productivity.  Whilst this is generally OK, I think post-Keynesians would (rightly) be suspicious of this type of relationship in a model.  Whilst it is nice to be able to tie output, employment and capital investment together, I think that use of artificial production functions can throw up spurious results, which may then be taken for granted.

Pricing in this model is based on a mark-up to unit labour costs.  Diamond's version uses marginal cost pricing.  With Cobb-Douglas production and suitable choice of parameter, these are equivalent.

Consumption Coefficients
Consumption in this model is based on labour income, investment income and wealth.  Diamond's model is an overlapping generations model with two period lives, where generations work in the first period only and spend their savings in the second.  To conform with his model, the parameters for investment income and wealth therefore need to equal one.  A high parameter on wealth is not unreasonable given the length of the time period and this would reduce if we were to adapt the model to three period generations, for example.  However, many post-Keynesians would not like having a higher parameter on investment income than on labour income, pointing to the importance of recognising household heterogeneity beyond generational differences.

As is common in neo-classical models, Diamond assumes that taxes are lump sum.  Usually in SFC models, the policy tool is the rate of tax with the amount of tax determined endogenously.  This is much better, in my view, but I have used lump sum taxes here to conform with Diamond.  It actually makes little qualitative difference to the results.

Risk Premium
Diamond assumes that, in equilibrium, the same return applies on physical capital as on government bonds.  Typically SFC models would look to include some form of risk premium on the former.  Again, I don't think it qualitatively impacts much on the results.

Labour Supply
Diamond assumes labour is supplied inelastically, i.e. the amount people wish to work is fixed. I have allowed employment to vary, but used employment levels to affect the real wage target, as is conventional in SFC models.  In fact, as we allow the elasticity of the real wage target with respect to employment to tend to infinity, we approach the same position as in Diamond's model.  I could rearrange my model to achieve this exactly, but to keep it closer to the normal SFC structure, I have simply used a very high parameter, i.e. made target real wages very sensitive to employment variation.

Technical details follow.  I will do a post (probably my next), looking at some results of this model and showing how it gives some additional perspective on Diamond's conclusions on the impact of national debt.

Equation Listing

GDP is the sum of consumer expenditure, private investment and government expenditure.

(1)          yt = ct + it + gt

Real consumer expenditure is based on real values of  income and carried forward wealth.  Different coefficients are applied to post-tax wage income and to investment income.

(2)          ct  = α1 ( WBt / pt - tt ) + α2 ( OSt + rt Bt-1 ) / pt +  α3 ( kt-1 + Bt-1 / pt)                  0 <= α1, α2, α3 <= 1

Investment is some proportion of the difference between the target capital stock and the existing capital stock,

(3)          it = ε1 ( ktt - kt-1)                                                                                                         0<=ε1<=1

where the target level of the capital stock is based on expected future demand levels and the expected real rate of interest.

(4)          ln( ktt ) = β1 + β2 ln[ E( yt+1 ) ] + β3 ln[ E( rrt+1 ) ]                                                      β2 > 0 ; β3 < 0

The wage bill is the product of the wage rate and employment.

(5)          WBt = wt et

Operating surplus (profit) is nominal GDP less the wage bill.

(6)          OSt = yt pt - WBt

Employment is a (positive) function of output and a (negative) function of the capital stock.

(7)          ln( et ) = ψ1 + ψ2 ln( yt ) + ψ3 ln( kt-1 )                                                                         ψ2 > 0 ; ψ3 < 0

Nominal wages adjust incrementally towards the level that would achieve the target real wage, given the price level.

(8)          wt = ε2 wrtt pt  + ( 1- ε2 ) wt-1                                                                                                              0<=ε2<=1

where the target real wage is a function of the level of employment. 

(9)          ln( wrtt ) = φ1 + φ2 [ ln( et ) - ln( nt ) ]                                                                                              φ2 > 0

Prices are a fixed mark-up to unit labour costs.

(10)        pt = λ wt nt / yt                                                                                                                      λ>1

The expected real rate of interest is based on the nominal rate on government bonds and the expected price level for the next period.

(11)        E( rrt+1 ) = ( 1 + rt+1 ) pt / E( pt+1 ) - 1

Finally, two equations govern the development of the stock of government bonds and the stock of capital.

(12)        Bt = (1 + rt ) Bt-1 + gt pt - tt pt

(13)        kt = kt-1 + it                                                                                                                          


Real quantities are represented by lowercase letters and nominal quantities by uppercase letters.  Subscripts denote the time period.  The values for stocks (capital and bonds) are measured at the end of the period denoted by the subscript.  Interest rates are the rate paid in the period denoted by the subscript.  E(  ) denotes an expected value.


Consumer spending
Real government expenditure
Capital stock
Target capital stock
General price level
Nominal interest rate on government debt
Real rate of return on government debt
Nominal wage level
Target real wage
Government bonds
Operating surplus
Wage bill

Exogenous variables are the policy tools g, t and r and the workforce n.  In general n is assumed to grow at a fixed rate and g and t are assumed to grow at the same rate as n, apart from any shocks.

Solution Technique

The first step in solution was to determine per capita steady state values.  A simulation was then run over a long period by solving each period sequentially, using the steady state values to form expectations.  Subsequent simulations were then run using values from the previous simulation to derive expected values, until the difference between expectations and actual outcomes was negligible.

Pinning down the price level expectation can be quite tricky.  The technique used was to rely on the government budget constraint, using a form of Fiscal Theory of the Price Level.  Values for future real rates of return and government surpluses were taken from the previous simulation and compared with the nominal bond stock from the current period to determine an implied price level for the next period.  This technique proved very effective in facilitating rapid convergence.

[EDIT - equation 12 modified for typo spotted by Anton.]


  1. Hi Nick, interesting article! But I have some questions/remarks.

    First two remarks, it seems to me that there are some typos in the model:
    - equation 8: the second term should be ( 1- ε2 ) wt-1 pt-1, I assume
    - equation 12: the last term should be tt · pt (and if not, the first term in equation 2 should be α1 · ( WBt – tt ) /pt

    Second, maybe I do not properly understand the model, but it seems to me that the term α3 ( kt-1 + Bt-1 / pt) in equation 2 implies income of the retiring generation, from selling assets. But then, someone has to buy these assets, and I assume this can only be the working generation. Wouldn’t that imply the following, adapted equation 2 (with α1 = 1):

    ct = α1 · ( WBt/pt – tt - kt-1 + Bt-1 / pt ) + α2 · ( Ft + rt · Bt-1 ) / pt + α3 · (kt-1 + Bt-1 / pt)

    Or did you somehow correct that with a lower α1 value?


    1. Hi Anton,

      Thanks for your comments.

      Equation 8 is OK, I think. w is the nominal wage, so it doesn't need to be multiplied by a price level, whereas wrt is a real wage target.
      But, you are right on equation 12 - I'll amend that.

      The retirng generation fund their spending by selling their assets (note that this gives them cashflow, but is not their "income" in the usual sense of the word.) The working generation buy those assets, but this is just their way of saving, not a reduction in their income. They receive income of WB/p - t, and they spend part of that as consumption and save part. The part they save is equal to the assets they buy - K and B, but note that K and B is not only the K and B sold by the retired generation but also new capital invetsment and new bonds issued by the government.

  2. Nick, thanks for your reply.

    But I am afraid I still don't understand equation 2. Of course you are right on the terminology errors I made. But what I mean is that:
    - the retired generation can consume because they sell their assets, kt-1 + Bt-1 / pt
    - and the working generation can consume because receive income, WBt/pt – tt, plus operating surplus and interest, Ft + rt · Bt-1

    But the working generation also buys assets from the retired generation, kt-1 + Bt-1 / pt, and newly issued bonds and new capital investments, ΔB + Δk·pt. And the funds it uses for these purchases cannot be used for consuption. Thus, I would expect that the consumption function would be something like this:
    ct = wages - taxes - purchases of assets from retireds - new bond purchases (appears as g) - new capital purchases (appears as i) + sales of assets from retireds:

    ct = WBt/pt – tt – kt-1 + Bt-1 / pt + ΔB + Δk · pt + Ft + rt · Bt-1 / pt + kt-1 + Bt-1 / pt
    = WBt/pt – tt + ΔB + Δk · pt + Ft + rt · Bt-1 / pt

    It seems to me (but I am not sure) that if you use fixed parameters α1 and α2 to correct for these non-consumption purchases, your model may become stock-flow inconsistent. Or is this somehow corrected via price adaptations?


    1. I have lumped together the consumption function for workers and retireds here. Looking at them seperately:

      For each group their budget constraint requires that consumption plus closing assets equal income plus opening assets. Given income and opening assets, we have to decide how they split this between consumption and closing assets.

      For retireds, we say there are no closing assets. So their spending is equal to their income (operating surplus plus bond interest) plus their opening assets. This wold make alpha2 and alpha3 both equal to 1.

      Workers have no opening assets but have income (wages less taxes). We have to decide how they split this between consumption and closing assets. This is what the alpha1 parameter does. The value depends on the rate of time preference (it could also depend on the intetest rate, but itr doesn't here because of the functional form Diamond uses for the utility function).

      We could still change alphas 2 and 3 and retain stock-flow consistency, but not whilst being true to Diamond's model.

    2. OK, but if I am correct, that would mean that:

      α1 · ( WBt/pt – tt ) = WBt/pt – tt – Δkt – ΔBt / pt
      α1 · ( WBt/pt – tt ) = WBt/pt – tt – it – rt · Bt-1 / pt + gt – tt
      α1 · ( WBt/pt – tt ) = WBt/pt – tt – ε1 · ( kTt – kt-1 ) – rt · Bt-1 / pt + gt – tt
      α1 = ( WBt/pt – tt – ε1 · ( kTt – kt-1 ) – rt · Bt-1 / pt + gt – tt ) / ( WBt/pt – tt )
      α1 = 1 – ( tt + ε1 · ( kTt – kt-1 ) + rt · Bt-1 / pt – gt + tt ) / ( WBt/pt – tt )

      Maybe it is possible to further reduce the last equation to only exogenous parameters (which I doubt a little bit), but anyhow α1 will be dependent on the other exogenous parameters. And if this is not taken into account, the model may well be stock-flow inconsistent, as far as I can see.


    3. Your first line is wrong. Take away the delta signs and it is right. At the end of the period, the workers own all the assets.

  3. You're right. But it doesn't change the problem afaik, as the equation changes to:

    α1 = 1 – ( kt-1 + it + ( 1 + rt ) · Bt-1 / pt + gt – tt ) / ( WBt / pt – tt )

    1. I don't know whether that equation is correct, but I see no reason why the value of alpha1 should be constrained by accounting consistency. Even if that equation is correct, all it implies is that the relationship between the endogenous variables WB, i and p depend on alpha1, which is not suprising.

  4. The brain-dead blunder with profit
    Comment on Nick Edmonds on ‘An SFC Version of the Diamond Growth Model’

    Your profit equation (6) is false and because profit is the pivotal concept in economics it holds without exception: if profit is ill-defined the whole theoretical superstructure falls apart.

    For details see the related comment on David R. Richardson’ RWER No 73 article ‘What does “too much government debt” mean in a stock-flow consistent model?’

    For the comprehensive critique of the ubiquitous profit blunder and its final rectification see ‘How the intelligent non-economist can refute every economist hands-down’.

    Egmont Kakarot-Handtke

    1. You can't say it's false, because it's no more than a definition. I'm defining operating surplus as NGDP less the wage bill. In fact this definition is consistent with SNA definitions (look it up).

      I think maybe you object to the term "profit". Although I've suggested that OS can be thought of profit, I'm not using a defined term for profit here, so the best thing would be if you ignored that and stuck with OS as meaning NGDP less the wage bill. Then you can take "profit" to mean whatever you want.

  5. Urgent: your methodological check-up
    Comment on Nick Edmonds on ‘An SFC Version of the Diamond Growth Model’

    You maintain “You can’t say it’s false, because it’s no more than a definition.” This is what Humpty Dumpty always said, and it is pure methodological nonsense. See ‘The Humpty Dumpty methodology’

    and ‘Humpty Dumpty is back again’

    There is no such thing as freedom of definition. This freedom is restricted by the requirement of consistency. Logical consistency, though, has never been a strong point of economists. For more on scientific incompetence see the cross-references

    So, indeed, I can say it is false, because it is provably false. No room for the usual wish-wash.

    Egmont Kakarot-Handtke

    1. Doesn't it strike you as slightly ironic to use the Humpty-Dumpty criticism and then reject the common usage definition (as set out in the SNA) in favour of your own?

      If you have a problem with the meaning of the term "operating surplus" I suggest you take it up with the organisations responsible for the SNA (the EC, the IMF, the OECD, the UN and the World Bank) rather than me.

    2. ICYMI

      The common usage including SNA is provably false as demonstrated in ‘The Common Error of Common Sense: An Essential Rectification of the Accounting Approach’


      Your appeal to authority is beside the point. The fact of the matter is that ‘the EC, the IMF, the OECD, the UN and the World Bank’ employ Humpty Dumpty economists who even messed up the elementary mathematics of accounting. Ever wondered why economics never got above the level of silly model bricolage?

  6. Challenge and adversity are meant to help you know who you are. Storms hit your weakness, but unlock your true strength. Cara Menyembuhkan Tampek

  7. I like this information Thanks for sharing this. I would like to these articles and I have confusion but I read your news and I easy understood
    The asset value of diamonds