' Program used in Stock Flow Consistent Model of the paper "Financialized growth regime: lessons from Stock Flow Consistent models". ' To be published @ Revue de la Regulation, 2014. ' Authors: Luis REYES (luisantonio.reyesortiz@univ-paris13.fr) and Jacques MAZIER (mazier@univ-paris13.fr), Centre d'Economie Paris Nord. ' Note: Before making the model run (by pushing the button "run" located in the upper left-hand of this box), the user must select a default folder, in which all graphs presented in the paper (along with other useful ones) and the Matrix of Stocks will be saved. The location of this folder must be inserted in the second box appearing once the program is run. ' For the program to work properly, the EViews version must be 7 or higher. ' PROGRAM SESSION : ' Set program mode %mode = "quiet" @uiedit(%mode, "Enter program mode (quiet or verbose):") mode %mode ' Set default directory (where all graphs will be saved) %directory = "INSERT DIRECTORY PATH HERE" @uiedit(%directory, "Directory where graphs and tables will be saved:", 1024) cd %directory ' Graphs size and type (.png is useful for LaTeX). %graph_size = "t=png, u=cm, h=7.5, -c, -box" create u 1 80 ' Model choice: see the paper for details on closures. scalar model_sel = 1 @uiradio(model_sel, "Model Selection (1) Indebtedness Norm, (2) Own Funds Norm:", "1 2") !model = model_sel smpl @all ' Relevant Equations ' Model 1, Indebtedness Norm. %m1_debt_eq = "L = (g0+g1*(UP(-1)/K(-1))+g2*re(-1))*K" %m1_of_eq = "d(E) = (I-UP+pe*d(Ee)-d(L))/pe" ' as a residual. ' Model 2, Own Funds Norm. %m2_debt_eq = "d(L) = I+pe*d(Ee)-UP-pe*d(E)" ' as a residual. %m2_of_eq = "E*pe = (z0+z1*rl+z2*(L(-1)/K(-1))-z3*re)*(K+pe*Ee)" ' Financial Profitability options: with or without Firms' Net Wealth (Ve) in denominator. %fin_prof = "re = d(pe)/pe(-1)+(DIV/(pe(-1)*E(-1)))" ' (E(-1)*d(pe)+DIV)/((pe(-1)*E(-1))+Ve(-1)) as an alternative ' Financial accumulation options: as a stock or as a flow (financial accumulation). %fin_acc = "Ee*pe = (f0+f1*re+f2*(UP/K(-1))+f3*(L/K)-f4*r)*(K+pe*Ee)" ' d(Ee) = Ee(-1)*(f0+f1*re+f2*(UP/K(-1))+f3*(L/K)-f4*rl) as an alternative ' Behavioral equations setting. %cons_fn = "Cp = a0+a1*YHSh+a2*VH(-1)" ' Consumption Function %bonds_fn = "B = (v0+v1*rb-v2*id-v3*re)*VH/pb" ' Bonds Function %cap_acc_fn = "gg = k0+(k1*(UP(-1)/K(-2)))+(k2*(D(Y)/Y(-1)))-(k3*(L(-1)/K(-1)))-(k4*rl)-k5*re" ' Capital Accumulation Function %peEh_fn = "pe*Eh = (w0-w1*rb-w2*id+w3*re)*Vh" ' Households Equity Held Function ' Shocks. %shock_1 = "0.025" @uiedit(%shock_1, "Shock 1. Increase in Consumption of:") !Shock1 = @val(%shock_1) %shock_2 = "0.02" @uiedit(%shock_2, "Shock 2. Increase in the Wage Share of:") !Shock2 = @val(%shock_2) %shock_3 = "0.01" @uiedit(%shock_3, "Shock 3. Increase in the Capital Accumulation rate of:") !Shock3 = @val(%shock_3) %shock_4 = "0.01" @uiedit(%shock_4, "Shock 4. Increase in Firms' Financial Accumulation rate:") !Shock4 = @val(%shock_4) %shock_5 = "0.01" @uiedit(%shock_5, "Shock 5. Increase in the share of Households' Financial Wealth of:") !Shock5 = @val(%shock_5) ' Parameters of: ' Consumption Function series a1 = 0.83 a1.displayname Coefficient of YHSh (+) in Consumption Function (Marginal Propensity to Consume) series a2 = 0.04 a2.displayname Coefficient of Vh(-1) (+) in Consumption Function ' Capital Accumulation series k1 = 0.35 k1.displayname Coefficient of UP(-1)/K(-2) (+) in Accumulation Function series k2 = 0.025 k2.displayname Coefficient of (d(Y)/Y(-1)) (+) in Accumulation Function (Accelerator Effect) series k3 = 0.1 k3.displayname Coefficient of L(-1)/K(-1) (-) in Accumulation Function series k4 = 0.5 k4.displayname Coefficient of rl (-) in Accumulation Function series k5 = 0.1 k5.displayname Coefficient of re (-) in Accumulation Function ' Bonds (Share of Vh) series v1 = 0.2 v1.displayname Coefficient of rb (+) in Bonds Function series v2 = 0.2 v2.displayname Coefficient of id (-) in Bonds Function series v3 = 0.1 v3.displayname Coefficient of re (-) in Bonds Function ' Households' demand for equity (Share of Vh) series w1 = 0.01 w1.displayname Coefficient of rb (-) in Household Equity Demand series w2 = 0.02 w2.displayname Coefficient of id (-) in Household Equity Demand series w3 = 0.02 w3.displayname Coefficient of re (+) in Household Equity Demand ' Financial Accumulation series f1 = 0.2 f1.displayname Coefficient of re (+) in Financial Accumulation Function series f2 = 0.6 f2.displayname Coefficient of UP/K(-1) (+) in Financial Accumulation Function series f3 = 0 f3.displayname Coefficient of L/K (+) in Financial Accumulation Function series f4 = 0 f4.displayname Coefficient of rl (-) in Financial Accumulation Function ' Indebtedness Norm series g1 = 0.3 g1.displayname Coefficient of UP/K(-1) (+) in Indebtedness Norm series g2 = 0.04 g2.displayname Coefficient of re (+) in Indebtedness Norm series g3 = 0 g3.displayname Coefficient of rl (-) in Indebtedness Norm 'Own Funds Norm series z1 = 0.5 z1.displayname Coefficient of rl (+) in Own Funds Norm series z2 = 0.45 z2.displayname Coefficient of L(-1)/K(-1) (+) in Own Funds Norm series z3 = 0.0333333333333 z3.displayname Coefficient of re (-) in Own Funds Norm ' Others series r0 = 0.67652 r0.displayname Wage Share series theta = 0.1 theta.displayname Tax Rate on Households series lambda = 0.050005 lambda.displayname Share of Bank Money to Bank Deposits series lambda0 = 0.159143 lambda0.displayname Share of Households Money to Consumption series thetab = 0.286277 thetab.displayname Tax Rate on Banks series sf = 0.34097798866 sf.displayname Saving Rate of Firms series gpch = 0.025 gpch.displayname Growth Rate of Government Spending ' Interest Rates series ib = 0.015 ib.displayname Banks Interest Rate series m1b = 0.005 m1b.displayname Interest Rate Mark-up 1 series m2b = 0.005 m2b.displayname Interest Rate Mark-up 2 series rl = ib+m1b rl.displayname Lending Rate series id = ib-m2b id.displayname Interest Rate on Deposits series r = rl r.displayname Leader Interest Rate series rb = r rb.displayname Short-Term Interest Rate on Bonds series pb = 1/rb pb.displayname Long-Term interest Rate on Bonds ' Endogenous variables / initial values series Y = 100 Y.displayname Output / Income series CP = 60 CP.displayname Personal Consumption series I = 25 I.displayname Private Investment series G = 100 - I - CP G.displayname Government Spending series BD = 45 BD.displayname Bank Deposits series B = 0 B.displayname Bonds series K = 400 K.displayname Capital Stock series L = 100 L.displayname Lending series re = 0.075758 re.displayname Financial Profitability series pe = 35 pe.displayname Price of Equity series E = 3 E.displayname Equities issued series Ee = 2 Ee.displayname Equities held by Firms series Debt = 0 Debt.displayname Government Debt (Vg) series BT = 0 BT.displayname Treasury Bills series CGe = 0 CGe.displayname Firms Capital Gains series CGh = 0 CGh.displayname Households Capital Gains series CG = 0 CG.displayname Capital Gains (Total) ' Identities' Calibration series W = r0*Y W.displayname Wages series Eh = E - Ee Eh.displayname Equities held by Households series Hh = lambda0*CP Hh.displayname Money held by Households series Hb = lambda*BD Hb.displayname Money held by Banks series H = Hh + Hb H.displayname Money (Bills and Coins) series RF = H RF.displayname Banks Refinancing series TCB = ib*RF TCB.displayname Taxes paid by the Central Bank series BP = (1-thetab)*(rl*L+r*BT-id*BD-ib*RF) BP.displayname Banks Profits series TB = thetab*(rl*L+r*BT-id*BD-ib*RF) TB.displayname Taxes paid by Banks series Vh = Hh+BD+pb*B+pe*Eh Vh.displayname Households Wealth series Ve = K-L+pe*Ee-pe*E Ve.displayname Firms Wealth series Vb = Hb-BD+L+BT-RF Vb.displayname Banks Wealth series DIV = (1-sf)*(Y-W-rl*L) DIV.displayname Dividends (Total) series DIVe = DIV*(Ee/E) DIVe.displayname Firms Dividends series DIVh = DIV-DIVe DIVh.displayname Households Dividends series T = theta*(W+id*BD+B+DIVh) T.displayname Taxes paid by Households series YDh = W+id*BD+B+DIVh-T YDh.displayname Disposable Income series YHSh = YDh+CGh YHSh.displayname Haig-Simons definition of Disposable Income series gg = I/K gg.displayname Capital Accumulation Rate series UP = Y-W-rl*L-DIVh UP.displayname Undistributed Profits ' Behavioral Equations' starting values series delta = 0.0625 delta.displayname Depreciation Rate series a0 = 0.5658628 a0.displayname Constant Term in Consumption Function (Autonomous Consumption) series v0 = 0.22382378 v0.displayname Constant Term in Bonds Function (Share of Bonds out of Households Wealth) series f0 = 0.09826265506 f0.displayname Constant Term in Financial Accumulation Function (Share of Equity in Firms Total Assets) series k0 = 0.1086334242 k0.displayname Constant Term in Capital Accumulation Function (Steady-State Growth Rate of Physical Capital) series g0 = 0.2352693030 g0.displayname Constant Term in Indebtedness Norm (Debt-Capital Ratio) series z0 = 0.3 z0.displayname Constant Term in Own Funds Norm (Equity Issued as share of Total Assets) if {!model} = 1 then series w0 = 0.389734150 w0.displayname Constant Term in Households Equity Function (Share of Equity out of Households Wealth) else series w0 = 0.5 w0.displayname Constant Term in Households Equity Function (Share of Equity out of Households Wealth) endif ' Make Matrix of Stocks and save in default directory as .html MATRIX(9,5) Stocks for %secteur HH F G B CB vector(9) v_{%secteur} next ' Fill in Matrix of Stocks' Columns with initial values. A minus sign indicates it is a liability. V_HH(2) = @mean(Hh) ' (Hh) Money held by households, asset side V_HH(3) = @mean(BD) ' (BD) Bank Deposits, asset side V_HH(5) = @mean(pb)*@mean(B) ' (pb*B) Bonds held by households, asset side V_HH(6) = @mean(pe)*@mean(Eh) ' (pe*Eh) Stock of Assets V_HH(9) = @sum(V_HH) ' (Vh) Total Households' wealth V_F(1) = @mean(K) ' (K) Capital Stock V_F(4) = -@mean(L) ' (-L) Loans, liability side V_F(6) = @mean(pe)*(@mean(Ee)-@mean(E)) ' (pe*Ee-pe*E) Net financial assets held by firms V_F(9) = @sum(V_F) ' (Ve) Total wealth held by firms V_G(5) = -@mean(pb)*@mean(B) ' (-pb*B) Bonds held by households, liability side V_G(7) = @mean(BT) ' (-BT) Treasury Bills, liability side V_G(9) = @sum(V_G) ' (Vg) Total wealth held by the Government V_B(2) = @mean(Hb) ' (Hb) Bank Money V_B(3) = -@mean(BD) ' (-BD) Bank Deposits, liability side V_B(4) = @mean(L) ' (L) Loans, asset side V_B(7) = @mean(BT) ' (BT) Treasury Bills, asset side V_B(8) = -@mean(RF) ' (-RF) Refinancing, liability side V_B(9) = @sum(V_B) ' (Vb) Total wealth held by private banks V_CB(2) = -@mean(H) ' (-H) Money held by househlds and banks, liability side V_CB(8) = @mean(RF) ' (RF) Refinancing, asset side V_CB(9) = @sum(V_CB) ' = 0 by definition !col = 1 for %secteur HH F G B CB colplace(Stocks,v_{%secteur},!col) delete v_{%secteur} !col = !col+1 next freeze(Matrix_of_Stocks) Stocks setline(Matrix_of_Stocks,3) setcolwidth(Matrix_of_Stocks,1,12) !col = 2 for %label Households Firms Government Banks Central_Bank setcell(Matrix_of_Stocks,1,!col,%label,"c") !col = !col+1 next !row = 4 for %label Capital Money Bank_Deposits Loans Bonds Equity Treasury_Bills Refinancing Total_Wealth setcell(Matrix_of_Stocks,!row,1,%label,"l") !row = !row+1 next Matrix_of_stocks.save(t=html) Matrix_of_Stocks ' Model Specification (See paper and corresponding labels for explanation) model sfc{!model} sfc{!model}.append Y = Cp+I+G sfc{!model}.append YDh = W+id*BD(-1)+B(-1)+DIVh-T sfc{!model}.append YHSh = YDh+CGh sfc{!model}.append T = theta*(W+B(-1)+id*BD(-1)+DIVh) sfc{!model}.append {%cons_fn} sfc{!model}.append d(BD) = YDh-Cp-pb*d(B)-pe*d(Eh)-d(Hh) sfc{!model}.append {%bonds_fn} sfc{!model}.append CGh = d(pb)*B(-1)+d(pe)*Eh(-1) sfc{!model}.append CGe = d(pe)*Ee(-1) sfc{!model}.append CG = CGe+CGh sfc{!model}.append {%cap_acc_fn} sfc{!model}.append {%m{!model}_of_eq} sfc{!model}.append {%fin_prof} sfc{!model}.append UP = Y-W-rl*L(-1)-DIVh sfc{!model}.append DIV = (1-sf)*(Y(-1)-W(-1)-rl(-1)*L(-2)) sfc{!model}.append DIVe = DIV*(Ee(-1)/E(-1)) sfc{!model}.append DIVh = DIV-DIVe sfc{!model}.append {%fin_acc} sfc{!model}.append Ve = K+pe*Ee-L-pe*E sfc{!model}.append {%peEh_fn} sfc{!model}.append Eh = E-Ee sfc{!model}.append VH = BD+pb*B+pe*Eh+Hh sfc{!model}.append I = gg*K(-1) sfc{!model}.append d(K) = I-delta*K(-1) sfc{!model}.append {%m{!model}_debt_eq} sfc{!model}.append W = r0*Y sfc{!model}.append d(BT) = G+r*BT(-1)+B(-1)-T-TB-TCB-pb*d(B) sfc{!model}.append pb = 1/rb sfc{!model}.append Debt = (BT+pb*B) sfc{!model}.append BP = (1-thetab)*(rl*L(-1)+r*BT(-1)-id*BD(-1)-ib*RF(-1)) sfc{!model}.append TB = thetab*(rl*L(-1)+r*BT(-1)-id*BD(-1)-ib*RF(-1)) sfc{!model}.append d(RF) = d(Hb)+d(L)+d(BT)-BP-d(BD) sfc{!model}.append d(VB) = BP sfc{!model}.append TCB = ib*RF(-1) sfc{!model}.append Hb = lambda*BD sfc{!model}.append Hh = lambda0*Cp sfc{!model}.append H = Hh+Hb sfc{!model}.append rl = ib+m1b sfc{!model}.append id = ib-m2b sfc{!model}.append r = rl sfc{!model}.append rb = r sfc{!model}.append G = G(-1)*(1+gpch) ' Simulation sfc{!model}.scenario "Baseline" if {!model}=1 then sfc{!model}.solve(o=b) ' System Solving Method for Model 1: Broyden else sfc{!model}.solve(o=n) ' System Solving Method for Model 2: Newton endif ' Graphs if {!model}=1 then smpl 50 80 else smpl 40 @last endif series y_gr = @pch(y_0) y_gr.displayname Output Growth Rate, Model {!model} series acc_rate = gg_0 acc_rate.displayname Capital Accumulation Rate, Model {!model} graph bsln_growth{!model}.line y_gr ' acc_rate bsln_growth{!model}.save({%graph_size}) M{!model}_bsln_growth series pe_gr = @pch(pe_0) pe_gr.displayname Price of Equity Growth Rate, Model {!model} graph bsln_asset_price{!model}.line pe_gr bsln_asset_price{!model}.save({%graph_size}) M{!model}_bsln_asset_price series own_funds = pe_0*E_0/(K_0+pe_0*Ee_0) own_funds.displayname Own Funds as Share of total Capital, Model {!model} series debt_ratio = L_0/K_0 debt_ratio.displayname Debt-Physical Capital Ratio, Model {!model} graph bsln_debt_own_funds{!model}.line own_funds debt_ratio bsln_debt_own_funds{!model}.save({%graph_size}) M{!model}_bsln_debt_own_funds graph bsln_h_rf{!model}.line h_0/rf_0 bsln_h_rf{!model}.addtext(t) Money / Refinancing (H/RF), Model {!model} bsln_h_rf{!model}.save({%graph_size}) M{!model}_bsln_h_rf series profit_rate = up_0/K_0 profit_rate.displayname Profit Rate, Model {!model} graph bsln_profit_rate{!model}.line profit_rate bsln_profit_rate{!model}.save({%graph_size}) M{!model}_bsln_profit_rate graph share_acc{!model}.line (k1*(UP_0(-1)/K_0(-2)))/gg_0 (k2*(D(Y_0)/Y_0(-1)))/gg_0 (k3*(L_0(-1)/K_0(-1)))/gg_0 (k4*rl_0)/gg_0 k5*re_0/gg_0 share_acc{!model}.addtext(t) Capital Accumulation Elements Shares, Model {!model} share_acc{!model}.save({%graph_size}) M{!model}_share_acc graph share_acc_fin{!model}.line f1*re_0/(Ee_0*pe_0/(K_0+pe_0*Ee_0)) f2*(UP_0/K_0(-1))/(Ee_0*pe_0/(K_0+pe_0*Ee_0)) ' f3*(L_0/K_0)/(Ee_0*pe_0/(K_0+pe_0*Ee_0)) f4*r_0/(Ee_0*pe_0/(K_0+pe_0*Ee_0)) as an alternative share_acc_fin{!model}.addtext(t) Financial Accumulation Elements Shares, Model {!model} share_acc_fin{!model}.save({%graph_size}) M{!model}_share_acc_fin graph share_cns_fn{!model}.line a1*YHSh_0/Cp_0 a2*VH_0(-1)/Cp_0 share_cns_fn{!model}.addtext(t) Consumption Function Elements Shares, Model {!model} share_cns_fn{!model}.save({%graph_size}) M{!model}_share_cns graph share_bond_fn{!model}.line v3*re_0/(pb_0*B_0/VH_0) ' v1*rb_0/(pb_0*B_0/VH_0) v2*id_0/(pb_0*B_0/VH_0) as an alternative share_bond_fn{!model}.addtext(t) Bond Function Elements Shares, Model {!model} share_bond_fn{!model}.save({%graph_size}) M{!model}_share_bond graph share_hfinacc_fn{!model}.line w3*re_0/(pe_0*Eh_0/Vh_0) ' w1*rb_0/(pe_0*Eh_0/Vh_0) w2*id_0/(pe_0*Eh_0/Vh_0) as an alternative share_hfinacc_fn{!model}.addtext(t) Households Fin Acc Function Elements Shares, Model {!model} share_hfinacc_fn{!model}.save({%graph_size}) M{!model}_share_hfinacc if {!model} = 1 then graph share_debt_fn{!model}.line g1*(UP_0(-1)/K_0(-1))/(L_0/K_0) g2*re_0(-1)/(L_0/K_0) share_debt_fn{!model}.addtext(t) Indebtedness Norm Elements Shares, Model {!model} share_debt_fn{!model}.save({%graph_size}) M{!model}_share_debt else graph share_of_fn{!model}.line z1*rl_0/(E_0*pe_0/(K_0+pe_0*Ee_0)) z2*(L_0(-1)/K_0(-1))/(E_0*pe_0/(K_0+pe_0*Ee_0)) z3*re_0/(E_0*pe_0/(K_0+pe_0*Ee_0)) share_of_fn{!model}.addtext(t) Own Funds Norm Elements Shares, Model {!model} share_of_fn{!model}.save({%graph_size}) M{!model}_share_of endif ' Generate Shocks smpl @all genr a0_1= a0 genr r0_2 = r0 genr k0_3 = k0 genr f0_4 = f0 genr w0_5 = w0 smpl 45 @last genr a0_1 = a0+{!Shock1}*cp genr r0_2 = r0*(1+{!Shock2}) genr k0_3 = k0+{!Shock3} genr f0_4 = f0+{!Shock4} genr w0_5 = w0+{!Shock5} smpl @all ' Scenarios (Shocks on): ' Consumption sfc{!model}.scenario(n,a=_1) "Scenario_1" sfc{!model}.override a0 sfc{!model}.solve ' Wage Share sfc{!model}.scenario(n,a=_2) "Scenario_2" sfc{!model}.override r0 sfc{!model}.solve ' Investment sfc{!model}.scenario(n,a=_3) "Scenario_3" sfc{!model}.override k0 sfc{!model}.solve ' Firms' Financial Accumulation sfc{!model}.scenario(n,a=_4) "Scenario_4" sfc{!model}.override f0 sfc{!model}.solve ' Household's Financial Accumulation sfc{!model}.scenario(n,a=_5) "Scenario_5" sfc{!model}.override w0 sfc{!model}.solve ' Graphs Shocks delete S1_* S2_* S3_* S4_* S5_* !reps = 5 for !i=1 to !reps ' Sample Period for Shocks' Graphs smpl 40 70 graph S{!i}_y_c_pe_m{!model}.line y_{!i}/y_0 cp_{!i}/cp_0 pe_{!i}/pe_0 S{!i}_y_c_pe_m{!model}.addtext(t) Model {!model}, Scenario {!i} S{!i}_y_c_pe_m{!model}.name(1) Income S{!i}_y_c_pe_m{!model}.name(2) Consumption S{!i}_y_c_pe_m{!model}.name(3) Equity Price S{!i}_y_c_pe_m{!model}.save({%graph_size}) M{!model}_S{!i}_y_c_pe graph S{!i}_acc_profit_m{!model}.line (I_{!i}/K_{!i})-(I_0/K_0) (UP_{!i}/K_{!i})-(UP_0/K_0) re_{!i}-re_0 S{!i}_acc_profit_m{!model}.addtext(t) Model {!model}, Scenario {!i} S{!i}_acc_profit_m{!model}.name(1) Capital Accumulation S{!i}_acc_profit_m{!model}.name(2) Profit Rate S{!i}_acc_profit_m{!model}.name(3) Financial Profitability S{!i}_acc_profit_m{!model}.save({%graph_size}) M{!model}_S{!i}_acc_profit ' Wealth Effect not studied in this paper ' graph S{!i}_wealteff_m{!model}.line (Vh_{!i}/YDh_{!i})-(Vh_0/YDh_0) ' S{!i}_wealteff_m{!model}.addtext(t) Scenario {!i} ' S{!i}_wealteff_m{!model}.name(2) Wealth Effect, Model {!model} ' S{!i}_wealteff_m{!model}.save({%graph_size}) M{!model}_S{!i}_wealteff graph S{!i}_debt_own_funds_m{!model}.line ((pe_{!i}*e_{!i})/(K_{!i}+pe_{!i}*ee_{!i}))-((pe_0*e_0)/(K_0+pe_0*ee_0)) (L_{!i}/K_{!i})-(L_0/K_0) S{!i}_debt_own_funds_m{!model}.addtext(t) Model {!model}, Scenario {!i} S{!i}_debt_own_funds_m{!model}.name(1) Own Funds peE/(K+peEe) S{!i}_debt_own_funds_m{!model}.name(2) Debt Ratio L/K S{!i}_debt_own_funds_m{!model}.save({%graph_size}) M{!model}_S{!i}_debt_own_funds smpl @all next