A Simple SFC Model

Three-Sector Stock-Flow Consistent Model

Authors
Affiliations

Yannis Dafermos

University of the West of England

Maria Nikolaidi

University of Greenwich

Published

August 1, 2019

Brief Description

This is a simple SFC model that consists of three sectors: firms, households, and banks.

  • Firms undertake investment by using retained profits and loans
  • A part of firms’ profits is distributed to households
  • Households accumulate savings in the form of deposits
  • Banks provide firm loans by creating deposits
  • Banks’ profits are distributed to households

In the model, loans are endogenously created when firms receive credit from banks. The model is calibrated using data for the US economy over the period 1960-2010.

Balance Sheet Matrix

The balance sheet matrix shows the stock positions of all sectors:

Households Firms Commercial banks Total
Deposits +D -D 0
Loans -L +L 0
Capital +K +K
Total (net worth) +D +VF 0 +K

Key observations:

  • Household wealth consists entirely of deposits
  • Firm net worth (VF) equals capital minus loans: VF = K - L
  • Banks have zero net worth (assets = liabilities)
  • Total economy net worth equals physical capital stock

Transactions Flow Matrix

The transactions flow matrix shows all flows between sectors:

Households Firms Commercial banks Total
Current Capital Current Capital
Consumption -C +C 0
Investment +I -I 0
Wages +W -W 0
Firms’ profits +DP -TP +RP 0
Banks’ profits +BP -BP 0
Interest on deposits +intDD-1 -intDD-1 0
Interest on loans -intLL-1 +intLL-1 0
Change in deposits -ΔD +ΔD 0
Change in loans +ΔL -ΔL 0
Total 0 0 0 0 0 0

Key observations:

  • Every row sums to zero (stock-flow consistency)
  • Every column sums to zero (budget constraints satisfied)
  • Current and capital accounts are separated for firms and banks

Model Equations

Households

\[\text{Wage income: } W = s_w Y \tag{1}\]

\[\text{Capital income: } Y_C = DP + BP + int_D D_{-1} \tag{2}\]

\[\text{Consumption: } C = c_1 W_{-1} + c_2 Y_{C-1} + c_3 D_{-1} \tag{3}\]

\[\text{Deposits (identity): } D = D_{-1} + W + Y_C - C \tag{4}\]

Firms

\[\text{Output: } Y = C + I \tag{5}\]

\[\text{Total profits (identity): } TP = Y - W - int_L L_{-1} \tag{6}\]

\[\text{Retained profits: } RP = s_F TP_{-1} \tag{7}\]

\[\text{Distributed profits (identity): } DP = TP - RP \tag{8}\]

\[\text{Investment: } I = s_K K_{-1} \tag{9}\]

\[\text{Capital stock: } K = K_{-1} + I \tag{10}\]

\[\text{Loans (identity): } L = L_{-1} + I - RP \tag{11}\]

Banks

\[\text{Profits (identity): } BP = int_L L_{-1} - int_D D_{-1} \tag{12}\]

\[\text{Deposits (redundant identity): } D_{red} = L \tag{13}\]

Auxiliary Equations

\[\text{Potential output: } Y^* = vK \tag{14}\]

\[\text{Capacity utilisation: } u = Y / Y^* \tag{15}\]

\[\text{Growth rate of output: } g_Y = (Y - Y_{-1})/Y_{-1} \tag{16}\]

\[\text{Leverage ratio: } lev = L / K \tag{17}\]

Symbols and Values

Parameters

Symbol Description Value/Calibration
c1 Propensity to consume out of wage income 0.9
c2 Propensity to consume out of capital income 0.75
c3 Propensity to consume out of deposits 0.474
gK Growth rate of capital US 1960-2010 mean value of gY
intD Interest rate on deposits US 1960-2010 mean value
intL Interest rate on loans US 1960-2010 mean value
sF Retention rate of firms 0.179
sW Wage share US 1960-2010 mean value
v Capital productivity Calculated using equations (14) and (15)

Endogenous Variables

Symbol Description Calculation
W Wage income of households Equation (1)
YC Capital income of households Equation (2)
C Consumption expenditures Equation (3)
D Deposits Equation (4)
Y Output US 1960 value (trillion 2009 US$)
TP Total profits of firms Equation (6)
RP Retained profits Equation (7)
DP Distributed profits Equation (8)
I Investment Equation (9)
K Capital stock US 1960 value (trillion 2009 US$)
L Loans US 1960 value (trillion 2009 US$)
BP Profits of banks Equation (12)
Dred Deposits (redundant) Equation (13)
Y* Potential output Equation (14)
u Capacity utilisation US 1960 value
gY Growth rate of output US 1960-2010 mean value
lev Leverage ratio Equation (17)

R Implementation

Step 1: Setup

Clear the workspace and set the number of time periods:

rm(list=ls(all=TRUE))
T <- 51  # 51 periods for 1960-2010

Step 2: Load Data

Download US data for 1960-2010 (from FRED and BIS):

Data <- read.csv("Data.csv")

# To estimate the mean of a variable:
mean(Data[,c("g_Y")])

Step 3: Initialize Variables

Create vectors for all endogenous variables:

# Endogenous variables 
W <- vector(length=T)    
Y_C <- vector(length=T)    
CO <- vector(length=T)    
D <- vector(length=T)      
Y <- vector(length=T)      
TP <- vector(length=T)    
RP <- vector(length=T)    
DP <- vector(length=T)    
I <- vector(length=T)    
K <- vector(length=T)    
L <- vector(length=T)    
BP <- vector(length=T)    
D_red <- vector(length=T)    
Y_star <- vector(length=T)  # auxiliary variable   
u <- vector(length=T)       # auxiliary variable   
g_Y <- vector(length=T)     # auxiliary variable   
lev <- vector(length=T)     # auxiliary variable

Step 4: Set Parameters and Initial Values

# Parameters 
for (i in 1:T) { 
  if (i == 1) { 
    for (iterations in 1:10){ 
      c_1 <- 0.9  
      c_2 <- 0.75  
      c_3 <- 0.473755074
      g_K <- mean(Data[,c("g_Y")])  
      int_D <- mean(Data[,c("int_D")])  
      int_L <- mean(Data[,c("int_L")])  
      s_F <- 0.17863783
      s_W <- mean(Data[,c("s_W")])  
      v <- Y[i]/(K[i]*u[i])  
      
      # Initial values 
      W[i] <- s_W*Y[i]  
      Y_C[i] <- DP[i]+BP[i]+int_D*(D[i]/(1+g_K))  
      CO[i] <- Y[i]-I[i]  
      D[i] <- L[i]   
      Y[i] <- Data[1,c("Y")]  
      TP[i] <- Y[i]-W[i]-int_L*(L[i]/(1+g_K))  
      RP[i] <- s_F*TP[i]/(1+g_K) 
      DP[i] <- TP[i]-RP[i]  
      I[i] <- (g_K/(1+g_K))*K[i]  
      K[i] <- Data[1,c("K")]              
      L[i] <- Data[1,c("L")]  
      BP[i] <- int_L*(L[i]/(1+g_K))-int_D*(D[i]/(1+g_K))  
      D_red[i] <- L[i]  
      Y_star[i] <- v*K[i]  
      u[i] <- Data[1,c("u")]  
      g_Y[i] <- g_K  
      lev[i] <- L[i]/K[i]  
    } 
  }

Step 5: Run the Model

  # Equations 
  else { 
    for (iterations in 1:10){ 
      # Households 
      W[i] <- s_W*Y[i] 
      Y_C[i] <- DP[i]+BP[i]+int_D*D[i-1] 
      CO[i] <- c_1*W[i-1]+c_2*Y_C[i-1]+c_3*D[i-1] 
      D[i] <- D[i-1]+W[i]+Y_C[i]-CO[i] 
      
      # Firms 
      Y[i] <- CO[i]+I[i] 
      TP[i] <- Y[i]-W[i]-int_L*L[i-1] 
      RP[i] <- s_F*TP[i-1] 
      DP[i] <- TP[i]-RP[i] 
      I[i] <- g_K*K[i-1] 
      K[i] <- K[i-1]+I[i] 
      L[i] <- L[i-1]+I[i]-RP[i] 
      
      # Banks 
      BP[i] <- int_L*L[i-1]-int_D*D[i-1] 
      D_red[i] <- L[i] 
      
      # Auxiliary equations 
      Y_star[i] <- v*K[i] 
      u[i] <- Y[i]/Y_star[i] 
      g_Y[i] <- (Y[i]-Y[i-1])/Y[i-1] 
      lev[i] <- L[i]/K[i] 
    } 
  } 
}

Key Model Insights

Endogenous Money Creation

In this model, money (deposits) is created endogenously when banks extend loans to firms:

  1. Firms need external financing: I - RP (investment minus retained profits)
  2. Banks create deposits when they grant loans
  3. The redundant identity Dred = L confirms balance sheet consistency

Stock-Flow Consistency

The model maintains perfect accounting consistency:

  • Horizontal consistency: Every financial asset has a corresponding liability
  • Vertical consistency: All flows are tracked from source to destination
  • Quadruple entry: Each transaction affects four cells in the matrices

Steady State Properties

In the baseline scenario, the model achieves a steady state where:

  • Economic growth equals the mean US growth rate (1960-2010)
  • All ratios (leverage, capacity utilisation) remain constant
  • The system is fully balanced

References

This model and documentation are based on teaching materials developed for SFC modeling courses. For the theoretical foundations, see:

  • Godley, W. & Lavoie, M. (2007) Monetary Economics: An Integrated Approach to Credit, Money, Income, Production and Wealth
  • Caverzasi, E. & Godin, A. (2015) “Post-Keynesian stock-flow-consistent modelling: a survey”
  • Nikiforos, M. & Zezza, G. (2017) “Stock-flow Consistent Macroeconomic Models: A Survey”

This page presents the simple SFC model developed by Yannis Dafermos and Maria Nikolaidi for educational purposes.