%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This file generates all the data pictures for 'The End of Privilege: A Reexamination of the Net Foreign Asset Position of the United States' % first version 2/22/2023 % last version 5/1/2023 % all the data are read from the the excel file master_AHP.xlsx %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% some global baseline options for graphs mlw=1.5; % lines are 1.5 thick mfs=11; % fontsize is 11 % color scheme for lines is is 'b','r','g','m' %% dn is the common quarterly date vector: 1990q1 -2023q4 %% dn2=datenum(1990,1+[0:3:12*(2024-1990)].',1); % make time vector from 1990q1, to 2024q1 [datestr(dn2(1)) '<->' datestr(dn2(end))] % show what it spans ldn2=max(size(dn2)); dn=dn2(1:ldn2-1); % make the time vector going from 1990q1 to 2023q4, size 136 sdn=max(size(dn)); %% read quarterly data start date is 1990.Q1, end date is 2023.Q4 %%% NFA related M = readmatrix('master_AHP.xlsx','Sheet','NFA related','Range','E4:EJ21'); row_tass=M(1,:); % total assets (row) row_tlia=M(2,:); % total liabilities (row) row_ca=-M(3,:); % current account (row), note this is annual, and + means Row saving row_tass_val=M(4,:); % valuations in total assets (row) row_tlia_val=M(5,:); % valuations in total liabilities (row) row_tvc=M(6,:); % Total volume changes (row) row_eq_ass=M(7,:); % equity assets (row) row_eq_lia=M(8,:); % equity liabilities (row) row_eq_ass_val=M(9,:); % equity assets valuations (row) row_eq_lia_val=M(10,:); % equity liabilities valuations (row) p_eq_lia=M(11,:); % Price of equity liabilities (US) p_eq_ass=M(12,:); % Price of equity assets (US) DVf=M(15,:); % foreign DV ratio Sd=M(16,:); % Statistical discrepancy Ovc=M(17,:); % Other volume changes row_ca_ft=M(18,:); % currentaccount (row) using financial transactions, note this is annual and + means Row saving row_nfa=row_tass-row_tlia; % row net foreign assets row_nfep=row_eq_ass-row_eq_lia; % row net foreign equity position row_nnep=row_nfa-row_nfep; % row net non equity position % series for non financial corporations Mnf = readmatrix('master_AHP.xlsx','Sheet','Corporate sector','Range','F3:EK16'); nos_nf=Mnf(1,:); % net operating surplus, non financial corp (US) taxiw_nf=Mnf(2,:); % taxes on income wealth , non financial corp ncf_nf=Mnf(3,:); % net capital formation, non financial corp nonfa_nf=Mnf(4,:); % replacement value non financial assets, non financial corp fa_nf=Mnf(5,:); % value of financial assets, non financial corp fl_nf=Mnf(6,:); % financial liabilities, non financial corp ev_nf=Mnf(7,:); % enterprise value, non financial corp cfc_nf=Mnf(8,:); % consumption of fixed capital, non financial corp gva_nf=Mnf(9,:); % Gross value added wl_nf=Mnf(10,:); % Compensation of employees taxprd_nf=Mnf(11,:); % taxes on production , non financial corp taxtra_nf=Mnf(12,:); % taxes: paid transfers , non financial corp mval_eq_nf=Mnf(13,:); % mkt value of equity, non fin corp mval_pteq_nf=Mnf(14,:); % mkt value of publicly traded equity, non fin corp fcf_nf=nos_nf-taxiw_nf-ncf_nf; % free cash flow non financial sector ear_nf=fcf_nf+ncf_nf; % earnings of non financial sector % series for financial corporations Mf = readmatrix('master_AHP.xlsx','Sheet','Corporate sector','Range','F21:EK33'); nos_f=Mf(1,:); % net operating surplus, financial corp (US) taxiw_f=Mf(2,:); % taxes on income wealth, financial corp ncf_f=Mf(3,:); % net capital formation, financial corp nonfa_f=Mf(4,:); % replacement value non financial assets, financial corp fa_f=Mf(5,:); % value of financial assets, financial corp fl_f=Mf(6,:); % finacial liabilities, financial corp ev_f=Mf(7,:); % enterprise value, financial corp cfc_f=Mf(8,:); % consumption of fixed capital, financial corp gva_f=Mf(9,:); % Gross value added wl_f=Mf(10,:); % Compensation of employees taxprd_f=Mf(11,:); % taxes on production , financial corp taxtra_f=Mf(12,:); % taxes: paid transfers , financial corp mval_eq_f=Mf(13,:); % mkt value of equity, fin corp fcf_f=nos_f-taxiw_f-ncf_f; % free cash flow financial sector ear_f=fcf_f+ncf_f; % earnings of financial sector % Economy wide series Mew = readmatrix('master_AHP.xlsx','Sheet','Economy wide','Range','F3:EK5'); gdp = Mew(1,:); % GDP (nominal) gdp_def = Mew(2,:); % GDP deflator (2017=100) spf10 = Mew(3,:); % SPF growth mean growth expectations % aggregation across non financial and financial gva=gva_nf+gva_f; % gross value added of corporate sector ev=ev_f+ev_nf; % enterprise value cfc=cfc_f+cfc_nf; % consumption of fixed capital ear=ear_f+ear_nf; % earnings fcf=fcf_f+fcf_nf; % free cash flow wl=wl_f+wl_nf; % compensation of employees nonfa = nonfa_f+nonfa_nf; % replacement value of non financial assets tt_f=taxiw_f+taxprd_f; tt_nf=taxiw_nf+taxprd_nf; taxes = tt_f+tt_nf; % total taxes, these measures of taxes do not include transfers paid % derived series nfa=row_tlia-row_tass; % NFA (US) nfa_gdp=nfa./gdp; ca_gdp=-row_ca./gdp; % CA (US) row_neq_lia=row_tlia-row_eq_lia; % non equity liabilities (row) row_neq_ass=row_tass-row_eq_ass; % non equity assets (row) net_val=row_tlia_val-row_tass_val; % net total valuations (US) net_eq_val=row_eq_lia_val-row_eq_ass_val; % net equity valuations (US) net_neq_val=net_val-net_eq_val; % net non equity valuations (US) cum_net_eq_val=cumsum(net_eq_val); cum_net_neq_val=cumsum(net_neq_val); % Al these cumulated are from the US point of view cum_ca=cumsum(-row_ca)/4; % divide by 4 because ca is reported at annual rate cum_ca_ft=cumsum(-row_ca_ft)/4; % divide by 4 because ca is reported at annual rate cum_tvc=cumsum(-row_tvc); cum_val=cumsum(net_val); cum_eq_val=cumsum(net_eq_val); cum_neq_val=cumsum(net_neq_val); cum_ovc=cumsum(-Ovc); check=nfa-cum_ca-cum_tvc-cum_val-nfa(1); %% FIGURE 1 %% figure p=plot(dn,nfa_gdp,'b'); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn(1) dn(end)]) % fit axes to range of actual data grid on set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') ylabel('Fraction of U.S. GDP') title('Net Foreign Asset Position') set(p,'Linewidth',mlw) h=gca; set(h,'Fontsize',mfs) export_fig nfa_gdp -pdf -transparent figure p=plot(dn,ca_gdp,'b'); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn(1) dn(end)]) % fit axes to range of actual data grid on set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') ylabel('Fraction of U.S. GDP') title('Current Account') set(p,'Linewidth',mlw) h=gca; set(h,'Fontsize',mfs) export_fig ca_gdp -pdf -transparent %% FIGURE 2 %% figure p=plot(dn,nfa./gva,'b',dn,cum_ca./gva,'r',dn,cum_tvc./gva,'m',dn,cum_val./gva,'g'); set(p,'Linewidth',mlw); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time grid on set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) xlim([dn(1) dn(end)]) % fit axes to range of actual data ylim([-1.3 0.5]); ylabel('Fraction of U.S. Corporate GVA') h=gca; set(h,'Fontsize',mfs) str = '$$\sum_{j=1}^{t} CA_j$$'; text(h, dn(50), -0.8, str, 'Interpreter', 'latex', 'FontSize', mfs+1,'Color','r') str = '$$\sum_{j=1}^{t} VA_j$$'; text(h, dn(118), -0.05, str, 'Interpreter', 'latex', 'FontSize', mfs+1,'Color','g') str = '$$\sum_{j=1}^{t} RES_j$$'; text(h, dn(110), 0.37, str, 'Interpreter', 'latex', 'FontSize', mfs+1,'Color','m') str = '$$NFA_t$$'; text(h, dn(105), -0.6, str, 'Interpreter', 'latex', 'FontSize', mfs+1,'Color','b') export_fig nfa_comp -pdf -transparent %% FIGURE 2, Appendix Version %% figure p=plot(dn,nfa./gva,'b',dn,cum_ca./gva,'r',dn,cum_tvc./gva,'g',dn,cum_val./gva,'m',dn,cum_ovc./gva,dn,cum_ca_ft./gva); set(p,'Linewidth',mlw); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time grid on set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) xlim([dn(1) dn(end)]) % fit axes to range of actual data ylim([-1.3 0.5]); ylabel('Fraction of U.S. Corporate GVA') h=gca; set(h,'Fontsize',mfs) str1 = '$$NFA_t$$'; text(h, dn(90), -0.4, str1, 'Interpreter', 'latex', 'FontSize', mfs+1,'Color','b') str2 = '$$\sum_{j=1}^{t} CA_j$$'; text(h, dn(50), -0.8, str2, 'Interpreter', 'latex', 'FontSize', mfs+1,'Color','r') str3 = '$$\sum_{j=1}^{t} RES_j$$'; text(h, dn(110), 0.37, str3, 'Interpreter', 'latex', 'FontSize', mfs+1,'Color','g') str4 = '$$\sum_{j=1}^{t} VA_j$$'; text(h, dn(118), -0.05, str4, 'Interpreter', 'latex', 'FontSize', mfs+1,'Color','m') str5 = '$$\sum_{j=1}^{t} OV_j$$'; text(h, dn(118), -0.3, str5, 'Interpreter', 'latex', 'FontSize', mfs+1,'Color',[0.47,0.67,0.19]) str6 = '$$\sum_{j=1}^{t} NFT_j$$'; text(h, dn(110), -0.6, str6, 'Interpreter', 'latex', 'FontSize', mfs+1,'Color',[0.30,0.75,0.93]) %legend(str1,str2,str3,str4,str5,str6, 'Location','Southwest', 'Interpreter', 'latex') export_fig nfa_comp_app -pdf -transparent %% FIGURE 3 %% p=plot(dn,row_eq_lia./gva,'b',dn,row_neq_lia./gva,'r'); title('U.S. owned assets abroad') set(p,'Linewidth',mlw); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn(1) dn(end)]) % fit axes to range of actual data ylim([0 2]); grid on set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) ylabel('Fraction of U.S. Corporate GVA') h=gca; set(h,'Fontsize',mfs) text(dn(80), 1.4,'Equity','Color','b', 'FontSize', mfs+1) text(dn(90), 0.4,'Non Equity','Color','r', 'FontSize', mfs+1) export_fig us_ass_abroad -pdf -transparent figure p=plot(dn,row_eq_ass./gva,'b',dn,row_neq_ass./gva,'r'); title('Foreign owned assets in the U.S.') set(p,'Linewidth',mlw); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn(1) dn(end)]) % fit axes to range of actual data ylim([0 2]); grid on ylabel('Fraction of U.S. Corporate GVA') set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) h=gca; set(h,'Fontsize',mfs) text(dn(80), 1.4,'Non Equity','Color','r', 'FontSize', mfs+1) text(dn(90), 0.6,'Equity','Color','b', 'FontSize', mfs+1) export_fig foreign_assets_us -pdf -transparent %% FIGURE 4 %% figure p=plot(dn,cum_eq_val./gva,'b',dn,cum_neq_val./gva,'r'); title('Cumulated net valuation changes') set(p,'Linewidth',mlw); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn(1) dn(end)]) % fit axes to range of actual data %ylim([-0.6 0.4]); grid on set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) ylabel('Fraction of U.S. Corporate GVA') h=gca; set(h,'Fontsize',mfs) text(dn(30), 0.1,'Non Equity','Color','r', 'FontSize', mfs+1) text(dn(105), -0.38,'Equity','Color','b', 'FontSize', mfs+1) export_fig cum_vals -pdf -transparent figure p=plot(dn,p_eq_ass/p_eq_ass(77),'b',dn,p_eq_lia/p_eq_lia(77),'r'); % normalize the prices to be 1 in 2009-Q1 title('Prices of US equity positions') set(p,'Linewidth',mlw); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn(1) dn(end)]) % fit axes to range of actual data %ylim([-0.6 0.4]); grid on set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) ylabel('Index, 2009Q1=1') h=gca; set(h,'Fontsize',mfs) text(dn(100), 4,'Liabilities','Color','r', 'FontSize', mfs+1) text(dn(105), 1.5,'Assets','Color','b', 'FontSize', mfs+1) export_fig P_eq_pos -pdf -transparent %% FIGURE 5 %% %% Alternative cumulative equity valuations p_eq_asse=ones(sdn+1,1); p_eq_liae=ones(sdn+1,1); p_eq_asse(2:end)=p_eq_ass; % these are the price of equity extended to last Q of 1989 (normalized to 1) p_eq_liae(2:end)=p_eq_lia; figure % computing the alternative equity valuations % alternative 1 is gross positions 10%, alternative 2 is gross position 100% agp1=1.2; agp2=0.2; v_alt1=((p_eq_asse(2:end)./p_eq_asse(1:end-1)).*(p_eq_liae(1:end-1)./p_eq_liae(2:end))-1).*agp1.*gva'; v_alt2=((p_eq_asse(2:end)./p_eq_asse(1:end-1)).*(p_eq_liae(1:end-1)./p_eq_liae(2:end))-1).*agp2.*gva'; cum_v_alt1=cumsum(v_alt1); cum_v_alt2=cumsum(v_alt2); p=plot(dn,cum_eq_val./gva,'b',dn,cum_v_alt1./gva','r--',dn,cum_v_alt2'./gva,'r:'); set(p,'Linewidth',mlw); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn(1) dn(end)]) % fit axes to range of actual data grid on set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) ylabel('Fraction of U.S. Corporate GVA') h=gca; set(h,'Fontsize',mfs) %text(dn(50), 0.3,'Actual','Color','b', 'FontSize', mfs+1) %text(dn(40), -0.4,'Gross Eq. Pos = 100% of GVA','Color',[0.93,0.69,0.13], 'FontSize', mfs+1) %text(dn(80), 0.3,'Gross Eq. Pos = 10% of GVA','Color','r', 'FontSize', mfs+1) l=legend('Actual','Gross Eq. Pos = 120% of GVA','Gross Eq. Pos = 20% of GVA','Location','SouthWest','Box','off','color','none') export_fig counter -pdf -transparent %% FIGURE 7 and 7a %% %% Ratio of FCF to corp GVA figure fcf=fcf_f+fcf_nf; % free cash flow of the corporate sector p=plot(dn,fcf./gva,'b'); set(p,'Linewidth',mlw); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn(1) dn(end)]) % fit axes to range of actual data grid on set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) ylabel('Fraction of U.S. Corporate GVA') h=gca; set(h,'Fontsize',mfs) export_fig fcf_gva -pdf -transparent figure fcf=fcf_f+fcf_nf; % free cash flow of the corporate sector p=plot(dn,fcf./gva,'b',dn,fcf_nf./gva_nf,'r--'); set(p,'Linewidth',mlw); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn(1) dn(end)]) % fit axes to range of actual data grid on set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) ylabel('Fraction of U.S. Corporate GVA') h=gca; set(h,'Fontsize',mfs) l=legend('Corporate sector','Non-Financial Corporate Sector','Location','NorthWest','Box','off','color','none') export_fig fcf_gva_nf -pdf -transparent %% FIGURE 8 and 8a %% %% Enterprise and replacement value nonfa=nonfa_nf+nonfa_f; % replacement value of non financial assets ev=ev_nf+ev_f; % enterprise value p=plot(dn,nonfa./gva,'r',dn,ev./gva,'b'); set(p,'Linewidth',mlw); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn(1) dn(end)]) % fit axes to range of actual data grid on set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) ylabel('Fraction of U.S. Corporate GVA') h=gca; set(h,'Fontsize',mfs) text(dn(72), 3.7,'Enterprise value','Color','b', 'FontSize', mfs+1) text(dn(90),1.8,'Replacement value','Color','r', 'FontSize', mfs+1) export_fig evrv_gva -pdf -transparent figure p=plot(dn,nonfa./gva,'r',dn,ev./gva,'r--',dn,nonfa_nf./gva_nf,'b:',dn,ev_nf./gva_nf,'b-.'); set(p,'Linewidth',mlw); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn(1) dn(end)]) % fit axes to range of actual data grid on set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) ylabel('Fraction of U.S. Corporate GVA') h=gca; set(h,'Fontsize',mfs) %text(dn(72), 3.7,'Enterprise value','Color','b', 'FontSize', mfs+1) %text(dn(90),1.8,'Replacement value','Color','r', 'FontSize', mfs+1) l=legend('Replacement value: corp. sector','Enterprise value: corp. sector','Replacement value: non-fin. corp. sector','Enterprise value: non-fin corp. sector','Location','NorthWest','Box','off','color','none') export_fig evrv_gva_nf -pdf -transparent %% Enterprise value, equity value and publicly traded equity figure p=plot(dn,ev_nf./gva_nf,'b',dn,mval_eq_nf./gva_nf,'r--',dn,mval_pteq_nf./gva_nf,'g:'); set(p,'Linewidth',mlw); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn(1) dn(end)]) % fit axes to range of actual data grid on set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) ylabel('Fraction of U.S. Corporate GVA') h=gca; set(h,'Fontsize',mfs) %text(dn(72), 3.7,'Enterprise value','Color','b', 'FontSize', mfs+1) %text(dn(90),1.8,'Replacement value','Color','r', 'FontSize', mfs+1) l=legend('Enterprise value','Mkt value of equity ','Mkt value of publicly traded equity','Location','NorthWest','Box','off','color','none') export_fig ev_eq_gva_nf -pdf -transparent %% Free cash flow to Enterprise value figure rat=fcf./ev; rat(end)=NaN; % this two lines are here because we do not have FCF for last quarter of 2023 p=plot(dn,rat,'b'); set(p,'Linewidth',mlw); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn(1) dn(end)]) % fit axes to range of actual data grid on set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) ylabel('Ratio') h=gca; set(h,'Fontsize',mfs) export_fig fcf_ev -pdf -transparent %%%%%% APPENDIX FIGURE OF CORP GVA over GDP %%%% figure p=plot(dn,gva./gdp,'b'); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn(1) dn(end)]) % fit axes to range of actual data grid on set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') ylabel('Fraction of U.S. GDP') %title('Current Account') set(p,'Linewidth',mlw) h=gca; set(h,'Fontsize',mfs) export_fig corpgva_gdp -pdf -transparent %%%%%% APPENDIX FIGURE for 1-lambda, i.e. foreign ownership of US firms %%%% figure p=plot(dn,row_eq_ass./ev,'b'); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn(1) dn(end)]) % fit axes to range of actual data grid on set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') %ylabel('Fraction of U.S. GDP') %title('Current Account') set(p,'Linewidth',mlw) h=gca; set(h,'Fontsize',mfs) export_fig row_ass_us_ev -pdf -transparent %%%%%% APPENDIX FIGURE for D*_t/V*_v %%%% figure p=plot(dn,DVf,'b'); xticks([ dn(1) dn(21) dn(41) dn(61) dn(81) dn(101) dn(121) dn(135) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn(1) dn(end)]) % fit axes to range of actual data grid on set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn(1) dn(5) dn(9) dn(13) dn(17) dn(21) dn(25) dn(29) dn(33) dn(37) dn(41) dn(45) dn(49) dn(53) dn(57) dn(61) dn(65) dn(69) dn(73) dn(77) dn(81) dn(85) dn(89) dn(93) dn(97) dn(101) dn(105) dn(109) dn(113) dn(117) dn(121) dn(125) dn(129) dn(133)]) set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') %ylabel('Fraction of U.S. GDP') %title('Current Account') set(p,'Linewidth',mlw) h=gca; set(h,'Fontsize',mfs) export_fig foeign_dv -pdf -transparent %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% YEARLY FIGURES OF Alternative measures of FDI %%%%%%% %% ydn is the yearly date vector: 1990 -2023 %%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ydn=[1990:2023]; %%% Read annual data FDI = readmatrix('master.xlsx','Sheet','Annual NFA and FDI','Range','D2:AK14'); TA=FDI(1,:); % Total assets US TL=FDI(2,:); % Total liab US FDI_A_mkt=FDI(3,:); % Fdi assets mkt value FDI_A_cc=FDI(4,:); % Fdi assets current cost FDI_L_mkt=FDI(5,:); % Fdi assets mkt value FDI_L_cc=FDI(6,:); % Fdi assets current cost POR_A_VAL=FDI(7,:); % Portfolio Investment asset vals FDI_A_VAL=FDI(8,:); % FDI investment asset vals POR_L_VAL=FDI(9,:); % Portfolio Investment liabilities vals FDI_L_VAL=FDI(10,:); % FDI investment liabilities vals GVA_nf=FDI(11,:); % Fdi assets mkt value GVA_f=FDI(12,:); % Fdi assets mkt value POR_N_VAL=POR_A_VAL-POR_L_VAL; % Net valuations portfolio FDI_N_VAL=FDI_A_VAL-FDI_L_VAL; % Net valuations FDI POR_CN_VAL=cumsum(POR_N_VAL); % cumulated net valuations portfolio FDI_CN_VAL=cumsum(FDI_N_VAL); % cumulated net vvaluations FDI GVA=GVA_nf+GVA_f; figure l1=(TA-TL)./GVA; l2=((TA-FDI_A_mkt+FDI_A_cc)-(TL-FDI_L_mkt+FDI_L_cc))./GVA; p=plot(ydn,l1,'b',ydn,l2,'r--'); set(p,'Linewidth',mlw); grid on; ylabel('Fraction of Corporate GVA') h=gca; set(h,'Fontsize',mfs) xlim([ydn(1) ydn(end)]) % fit axes to range of actual data l=legend('NFA with FDI at mkt value','NFA with FDI at current cost','Location','SouthWest','Box','off','color','none') set(l,'FontSize',mfs) export_fig nfa_fdi -pdf -transparent l1=POR_CN_VAL./GVA; l2=FDI_CN_VAL./GVA; p=plot(ydn,l1,'b',ydn,l2,'r--'); set(p,'Linewidth',mlw); grid on; ylabel('Fraction of Corporate GVA') h=gca; set(h,'Fontsize',mfs) xlim([ydn(1) ydn(end)]) % fit axes to range of actual data l=legend('Portfolio Net Revaluations','FDI Net Revaluations','Location','SouthWest','Box','off','color','none') set(l,'FontSize',mfs) export_fig equity_revals -pdf -transparent %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% YEARLY FIGURES OF FOREIGN V and D %%%%%% %%% ydn is the yearly date vector: 1990 -2022 %%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ydn=[1990:2022]; %%% Read annual data UF = readmatrix('master.xlsx','Sheet','US_Foreign','Range','B64:AH72'); US_gva=UF(1,:); % Corp GVA US EU_gva=UF(2,:); % Corp GVA EU (in Euros) G6_gva=UF(3,:); % Corp GVA G6 US_po=UF(4,:); % Corp payouts US EU_po=UF(5,:); % Corp payouts EU (in Euros) G6_po=UF(6,:); % Corp payouts G6 US_ev=UF(7,:); % Corp EV US EU_ev=UF(8,:); % Corp EV EU (in Euros) G6_ev=UF(9,:); % Corp EV G6 figure l1=US_po./US_gva; l3=EU_po./EU_gva; l2=G6_po./G6_gva; p=plot(ydn,l1,'b',ydn,l2,'r--',ydn,l3,'g:'); set(p,'Linewidth',mlw); grid on; ylabel('Fraction of Corporate GVA') h=gca; set(h,'Fontsize',mfs) xlim([ydn(1) ydn(end)]) % fit axes to range of actual data l=legend('U.S.','G6','European Union','Location','SouthEast','Box','off','color','none') set(l,'FontSize',mfs) export_fig foreignD2 -pdf -transparent figure l1=US_ev./US_gva; l3=EU_ev./EU_gva; l2=G6_ev./G6_gva; p=plot(ydn,l1,'b',ydn,l2,'r--',ydn,l3,'g:'); set(p,'Linewidth',mlw); grid on; ylabel('Fraction of Corporate GVA') h=gca; set(h,'Fontsize',mfs) xlim([ydn(1) ydn(end)]) % fit axes to range of actual data l=legend('U.S.','G6','European Union','Location','NorthWest','Box','off','color','none') set(l,'FontSize',mfs) export_fig foreignEV2 -pdf -transparent %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% MSCI Indexes %%%%%% %%% Read monthly MSCI data, current range is Jan 1970, Mar 2024 %%% then do quarterly figures %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MSCIm = readmatrix('master.xlsx','Sheet','MSCI Index','Range','G3:YG5'); nm=max(size(MSCIm)); nq=nm/3; % number of quarters (make sure nm is divisible by 3) % matrix for frequency conversion for j=1:nq mqmat(j,[1+(j-1)*3:3+(j-1)*3])=1/3; end MSCIq=MSCIm*mqmat'; msci_us=MSCIq(1,:); msci_w_loc=MSCIq(2,:); msci_w_usd=MSCIq(3,:); % 2003 Q1 =133 % 2007 Q4 =133+20-1=152 q11=133; q12=152; %% dn3 is the quarterly date vector for the first episode: 2003q1 -2007q4 %% dn3=datenum(2003,1+[0:3:12*(2007-2003)+9]',1); % make time vector from 2002q1, to 2007q4 [datestr(dn3(1)) '<->' datestr(dn3(end))] % show what it spans figure p=plot(dn3,msci_us(q11:q12)'/msci_us(q11),'b',dn3,msci_w_usd(q11:q12)'/msci_w_usd(q11),'r--',dn3,msci_w_loc(q11:q12)'/msci_w_loc(q11),'g:'); xticks([ dn3(1) dn3(9) dn3(17) dn3(20) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn3(1) dn3(end)]) % fit axes to range of actual data l=legend('MSCI USA','MSCI Row in USD','MSCI Row in LOC','Location','NorthWest','Box','off','color','none'); set(l,'FontSize',mfs) grid on set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn3(1) dn3(9) dn3(17) dn3(20)]) set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') %ylabel('Fraction of U.S. GDP') title('Equity Price Indexes, 2003-2007') ylabel('Index 2003Q1=1') set(p,'Linewidth',mlw) h=gca; set(h,'Fontsize',mfs) export_fig msci_1 -pdf -transparent % 2009 Q1 =161 % 2023 Q3 =161+11*4-1=204 q11=161; q12=204; %% dn4 is the quarterly date vector for the first episode: 2010q1 -2020q4 %% dn4=datenum(2010,1+[0:3:12*(2020-2010)+9]',1); % make time vector from 2010q1, to 2020q4 [datestr(dn4(1)) '<->' datestr(dn4(end))] % show what it spans figure p=plot(dn4,msci_us(q11:q12)'/msci_us(q11),'b',dn4,msci_w_usd(q11:q12)'/msci_w_usd(q11),'r--',dn4,msci_w_loc(q11:q12)'/msci_w_loc(q11),'g:'); xticks([ dn4(1) dn4(9) dn4(17) dn4(25) dn4(33) dn4(41) ]) datetick('x','QQ-YY','keepticks') % format axes as time xlim([dn4(1) dn4(end)]) % fit axes to range of actual data l=legend('MSCI USA','MSCI Row in USD','MSCI Row in LOC','Location','NorthWest','Box','off','color','none'); set(l,'FontSize',mfs) grid on set(gca,'XMinorTick','on') set(get(gca(),'XAxis'),'MinorTickValues',[dn4(1) dn4(9) dn4(17) dn4(25) dn4(33) dn4(41) ]) set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off') %ylabel('Fraction of U.S. GDP') title('Equity Price Indexes, 2010-2020') set(p,'Linewidth',mlw) h=gca; set(h,'Fontsize',mfs) ylabel('Index 2010Q1=1') export_fig msci_2 -pdf -transparent