Partial Equilbrium - 3OC
This function solves the 3OC model outcomes given interest rate and wages Back to full code page https://kritikhanna.github.io/BKS-modified/
Function Inputs :
Function Outputs : grid of
Contents
function [fl_y,mt_dis, mt_vf,mt_pf,mt_wage,mt_profit,mt_income,mt_coh, mt_o, mt_k, mt_l]= PE_3OC(varargin)
addpath(genpath('C:\Users\kriti\Desktop\BKS-modified')); close all; bl_profile = false; % Switch off profile if running a tester/calling from another function bl_saveimg = false; if(bl_profile) profile off; profile on; end addpath(genpath('/Users/sidhantkhanna/Documents/GitHub/BKS modified/')); if ~isempty(varargin) [ar_a,ar_z,ar_n, ... fl_alpha,fl_theta,fl_delta,fl_kappa,fl_r,fl_w,fl_phi,fl_ahi,fl_zhi, ... fl_risk,it_zgridno, it_agridno,it_ngridno, mt_trans_z,mt_trans_n,fl_beta, fl_mu_z, fl_sig_z,fl_rho_z,fl_lambda_z,fl_tolvfi, fl_toldis ... ] = varargin{:}; bl_print = false; bl_plot = false; else fl_alo = 0; fl_ahi = 50; fl_zhi = 2.2; it_agridno = 50; it_zgridno = 7; it_ngridno = 2; % ar_a = linspace(0,fl_ahi,it_agridno); mp_grid_control = containers.Map('KeyType','char', 'ValueType','any'); mp_grid_control('grid_powerspace_power') = 2; % ar_a = ff_saveborr_grid(fl_alo, fl_ahi, it_agridno, mp_grid_control) ar_a = ff_saveborr_grid(fl_alo, fl_ahi, it_agridno, 'grid_powerspace', mp_grid_control); ar_a = ar_a'; fl_phi = 0.5; fl_risk = 1.5; fl_alpha = 0.4; fl_theta = 0.79-fl_alpha; fl_delta = 0.08; fl_kappa = 0; fl_mu_z = 0; % mean of AR(1) entrepeneurial productivity process fl_rho_z = 0.9; % persistence parameter of the AR(1) entrepreneurial productivity process fl_sig_z = 0.2; fl_lambda_z = 3; fl_beta = 0.92; [ar_z, mt_trans_z] = ffy_rouwenhorst(fl_rho_z,fl_sig_z,it_zgridno); ar_z = exp(ar_z); P1 = mt_trans_z^1000; sd = P1(1,:); el = sd*ar_z; ar_z = ar_z/el; ar_z = ar_z'; ar_n =[0,1]; % [ar_z, mt_trans_z] = mytauchen_z(fl_mu_z,fl_rho_z,fl_sig_z,it_zgridno,fl_lambda_z); mt_trans_n =[0.4,0.6;0.4,0.6]; [fl_r,fl_w] = ... deal(0.05,1); fl_tolvfi = 10^-12; fl_toldis = 10^-12; % Tolerance level for convergence stationary distribution bl_print = true; bl_plot = true; end fl_R = fl_r + fl_delta; [a_m,z_m] = meshgrid(ar_a,ar_z); a_m = a_m'; z_m = z_m'; a_m_3OC = repmat (a_m, [1 1 it_ngridno]); z_m_3OC = repmat (z_m, [1 1 it_ngridno]); [mt_dis, mt_vf,mt_pf,mt_wage,mt_profit,mt_income,mt_coh,mt_o, mt_k, mt_l]=hhsave_dis_3OC(ar_a,ar_z,ar_n, ... fl_alpha,fl_theta,fl_delta,fl_kappa,fl_r,fl_w,fl_phi,fl_ahi,fl_zhi, ... fl_risk,it_zgridno, it_agridno,it_ngridno, mt_trans_z,mt_trans_n,fl_beta, fl_mu_z, fl_sig_z,fl_rho_z, ... fl_lambda_z, fl_tolvfi, fl_toldis ); mt_ent = zeros(it_agridno,it_zgridno,it_ngridno); mt_se = zeros(it_agridno,it_zgridno,it_ngridno); mt_worker = zeros(it_agridno,it_zgridno,it_ngridno); mt_ent(mt_o==2) = 1; mt_se (mt_o==1) = 1; mt_worker(mt_o==0) = 1;
Model Outcomes
% Total Output fl_y = sum(sum(sum(z_m_3OC.*mt_dis.*mt_k.^fl_alpha.*mt_l.^fl_theta))); % Capital and labor demanded fl_kdemand = sum(sum(sum(mt_dis.*mt_k))); fl_ldemand = sum(sum(sum(mt_dis.*mt_l))); % Capital and labor supplied fl_ksupply = sum(sum(sum(mt_dis.*mt_pf))); fl_lsupply = sum(sum(sum(mt_dis.*mt_worker))); % Percent employed in each occupations fl_percent_ent = sum(sum(sum(mt_dis.*mt_ent))); fl_percent_se = sum(sum(sum(mt_dis.*mt_se))); fl_percent_worker = sum(sum(sum(mt_dis.*mt_worker))); % Talent of entrepreneurs mt_dis_ent = mt_dis; mt_dis_ent(mt_o~=2) = 0; mt_z_m_3OC_ent = z_m_3OC; mt_z_m_3OC_ent(mt_o~=2)= 0; ar_z_m_3OC_ent = mt_z_m_3OC_ent(:); ar_dis_ent = mt_dis_ent(:); ar_dis_ent(ar_z_m_3OC_ent==0) = []; ar_z_m_3OC_ent(ar_z_m_3OC_ent==0) = []; fl_length_ent = length(ar_dis_ent); %fl_mean_tal_ent = (sum(sum(sum(z_m_3OC.*mt_dis_ent))))/(sum(sum(sum(mt_dis_ent)))); fl_mean_tal_ent = sum(ar_z_m_3OC_ent.*ar_dis_ent)/(sum(ar_dis_ent)); W = ar_dis_ent/(sum(ar_dis_ent)); X = ar_z_m_3OC_ent; Wmean = fl_mean_tal_ent; N = fl_length_ent; %fl_sd_tal_ent = sqrt((sum(W.*(X - Wmean).^2)) / ((N-1)*sum(W)/N)); fl_sd_tal_ent = std(X,W); %Talent of Informal firm owners mt_dis_se = mt_dis; mt_dis_se(mt_o~=1) = 0; mt_z_m_3OC_se = z_m_3OC; mt_z_m_3OC_se(mt_o~=1)= 0; ar_z_m_3OC_se = mt_z_m_3OC_se(:); ar_dis_se = mt_dis_se(:); ar_dis_se(ar_z_m_3OC_se==0) = []; ar_z_m_3OC_se(ar_z_m_3OC_se==0) = []; fl_length_se = length(ar_dis_se); fl_mean_tal_se = sum(ar_z_m_3OC_se.*ar_dis_se)/(sum(ar_dis_se)); W = ar_dis_se; X = ar_z_m_3OC_se; Wmean = fl_mean_tal_se; N = fl_length_se; %fl_sd_tal_se = sqrt((sum(W.*(X - Wmean).^2)) / ((N-1)*sum(W)/N)); fl_sd_tal_se = std(X,W); % Firm size distributions ar_l = mt_l(:); ar_dis = mt_dis(:); ar_dis(ar_l==0) = []; ar_l(ar_l==0) = []; fl_mean_l = sum(ar_dis.*ar_l)/(sum(ar_dis)); fl_length_l = length(ar_l); W = ar_dis; X = ar_l; Wmean = fl_mean_l; N = fl_length_l; %fl_sd_l = sqrt((sum(W.*(X - Wmean).^2)/N) / ((N-1)*sum(W)/N)); fl_sd_l = std(X,W); draw_rand_count = 100000; labor_idx_simu = randsample(1:length(ar_dis), draw_rand_count, true, ar_dis); labor_draws = ar_l (labor_idx_simu); % Asset distribution ar_a_dis =sum(mt_dis,[2,3]); if(bl_print) disp ('Degree of Contract enforcement friction is:') disp(fl_phi); disp('Output per capita is:') disp(fl_y); disp('Total capital per capita demanded is:') disp(fl_kdemand); disp('Total labor per capita demanded is:') disp(fl_ldemand); disp('Percentage entrepreneurs') disp(fl_percent_ent); disp('Percentage self-employed other than entrepreneurs') disp(fl_percent_se); disp('Percentage workers'); disp(fl_percent_worker); disp('Mean talent of Entrepreneurs'); disp(fl_mean_tal_ent); disp('Mean talent of Self Employed'); disp(fl_mean_tal_se); disp('SD talent of Entrepreneurs'); disp(fl_mean_tal_ent); disp('SD talent of Self Employed'); disp(fl_sd_tal_se); disp('Mean of Firm Size'); disp(fl_mean_l); disp('SD of Firm Size'); disp(fl_sd_l); disp('Joint distribution') disp(mt_dis); end if(bl_plot) figure(1) colormap( [1 0 1; 1 0 1; 1 1 0] ) imagesc(ar_a,ar_z,mt_o(:,:,1)'); set(gca,'YDir','normal') title('OC Policy function, l=0, Pink = SE, Yellow = Ent','FontSize',20); xlabel('assets','FontSize', 20); ylabel('Entrepreneurial productivity','FontSize', 20); figure(2) colormap( [1 1 1; 1 0 0; 1 1 0] ) imagesc(ar_a,ar_z,mt_o(:,:,2)'); set(gca,'YDir','normal') title('OC Policy function, l=1, White = worker, Yellow = Ent','FontSize',20); xlabel('assets','FontSize', 20); ylabel('Entrepreneurial productivity','FontSize', 20); figure(3) hist(labor_draws, 40) title('Low phi','FontSize', 25); xlabel('firm size','FontSize', 25); ylabel('No of firms','FontSize', 25); xt = get(gca, 'XTick'); set(gca, 'XTick', xt, 'XTickLabel', xt, 'FontSize',20); xlim([0 30]) ylim ([0 80000]) figure(4) contour(ar_z,ar_a,mt_dis(:,:,1)) figure(5) plot(ar_a_dis); end
Degree of Contract enforcement friction is:
0.5000
Output per capita is:
3.5607
Total capital per capita demanded is:
8.6609
Total labor per capita demanded is:
1.3887
Percentage entrepreneurs
0.2574
Percentage self-employed other than entrepreneurs
0.2970
Percentage workers
0.4456
Mean talent of Entrepreneurs
1.6154
Mean talent of Self Employed
0.7867
SD talent of Entrepreneurs
1.6154
SD talent of Self Employed
0.2603
Mean of Firm Size
2.5046
SD of Firm Size
4.4670
Joint distribution
(:,:,1) =
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0001 0.0001 0.0000 0.0000 0.0000 0.0000
0.0000 0.0001 0.0002 0.0002 0.0000 0.0000 0.0000
0.0000 0.0002 0.0005 0.0003 0.0001 0.0000 0.0000
0.0001 0.0007 0.0014 0.0008 0.0001 0.0000 0.0000
0.0001 0.0017 0.0038 0.0018 0.0003 0.0000 0.0000
0.0002 0.0008 0.0034 0.0030 0.0009 0.0001 0.0000
0.0005 0.0036 0.0072 0.0059 0.0017 0.0002 0.0000
0.0008 0.0034 0.0070 0.0075 0.0026 0.0002 0.0000
0.0007 0.0037 0.0082 0.0110 0.0039 0.0004 0.0000
0.0004 0.0022 0.0068 0.0193 0.0170 0.0017 0.0000
0.0005 0.0042 0.0096 0.0058 0.0029 0.0004 0.0000
0.0006 0.0012 0.0025 0.0031 0.0019 0.0005 0.0000
0.0002 0.0010 0.0024 0.0033 0.0030 0.0016 0.0001
0.0002 0.0010 0.0024 0.0030 0.0019 0.0005 0.0000
0.0002 0.0010 0.0024 0.0032 0.0020 0.0005 0.0000
0.0002 0.0010 0.0025 0.0033 0.0029 0.0014 0.0001
0.0002 0.0010 0.0024 0.0031 0.0020 0.0005 0.0000
0.0002 0.0010 0.0025 0.0033 0.0021 0.0006 0.0001
0.0002 0.0010 0.0025 0.0035 0.0028 0.0013 0.0001
0.0001 0.0009 0.0025 0.0034 0.0022 0.0006 0.0000
0.0001 0.0009 0.0025 0.0036 0.0023 0.0007 0.0001
0.0001 0.0008 0.0025 0.0039 0.0030 0.0012 0.0001
0.0001 0.0007 0.0024 0.0041 0.0027 0.0007 0.0000
0.0001 0.0006 0.0021 0.0048 0.0086 0.0014 0.0001
0.0001 0.0005 0.0015 0.0022 0.0020 0.0016 0.0001
0.0001 0.0005 0.0014 0.0022 0.0019 0.0012 0.0001
0.0001 0.0004 0.0013 0.0022 0.0018 0.0013 0.0001
0.0001 0.0004 0.0012 0.0024 0.0015 0.0010 0.0001
0.0001 0.0003 0.0009 0.0012 0.0013 0.0011 0.0001
0.0001 0.0003 0.0008 0.0012 0.0012 0.0009 0.0001
0.0001 0.0003 0.0008 0.0011 0.0011 0.0009 0.0001
0.0000 0.0003 0.0009 0.0010 0.0010 0.0007 0.0001
0.0000 0.0003 0.0010 0.0010 0.0010 0.0008 0.0001
0.0000 0.0002 0.0005 0.0008 0.0009 0.0007 0.0001
0.0000 0.0002 0.0005 0.0008 0.0009 0.0007 0.0001
0.0000 0.0001 0.0004 0.0008 0.0008 0.0006 0.0001
0.0000 0.0001 0.0004 0.0007 0.0008 0.0006 0.0001
0.0000 0.0001 0.0004 0.0007 0.0008 0.0005 0.0001
0.0000 0.0001 0.0003 0.0007 0.0008 0.0005 0.0001
0.0000 0.0001 0.0003 0.0007 0.0008 0.0005 0.0001
0.0000 0.0001 0.0003 0.0007 0.0008 0.0005 0.0002
0.0000 0.0001 0.0003 0.0006 0.0008 0.0005 0.0001
0.0000 0.0000 0.0002 0.0006 0.0009 0.0008 0.0001
0.0000 0.0000 0.0002 0.0005 0.0008 0.0007 0.0001
0.0000 0.0000 0.0001 0.0005 0.0008 0.0006 0.0001
0.0000 0.0000 0.0001 0.0004 0.0008 0.0006 0.0002
0.0000 0.0000 0.0001 0.0004 0.0009 0.0005 0.0002
0.0000 0.0000 0.0000 0.0003 0.0010 0.0005 0.0001
0.0000 0.0000 0.0000 0.0001 0.0011 0.0048 0.0028
(:,:,2) =
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0001 0.0002 0.0000 0.0000 0.0000 0.0000
0.0000 0.0001 0.0003 0.0003 0.0001 0.0000 0.0000
0.0000 0.0004 0.0008 0.0005 0.0001 0.0000 0.0000
0.0001 0.0010 0.0021 0.0012 0.0002 0.0000 0.0000
0.0002 0.0026 0.0058 0.0026 0.0005 0.0000 0.0000
0.0003 0.0012 0.0051 0.0045 0.0014 0.0001 0.0000
0.0007 0.0054 0.0108 0.0088 0.0026 0.0002 0.0000
0.0011 0.0052 0.0104 0.0112 0.0039 0.0003 0.0000
0.0010 0.0055 0.0123 0.0165 0.0058 0.0006 0.0000
0.0006 0.0034 0.0102 0.0289 0.0255 0.0026 0.0001
0.0008 0.0064 0.0143 0.0087 0.0044 0.0006 0.0000
0.0009 0.0018 0.0037 0.0047 0.0029 0.0007 0.0000
0.0002 0.0014 0.0036 0.0049 0.0045 0.0023 0.0001
0.0002 0.0015 0.0036 0.0045 0.0028 0.0007 0.0000
0.0002 0.0015 0.0036 0.0047 0.0030 0.0008 0.0000
0.0002 0.0015 0.0037 0.0050 0.0043 0.0021 0.0001
0.0002 0.0015 0.0037 0.0047 0.0030 0.0008 0.0000
0.0002 0.0015 0.0037 0.0049 0.0032 0.0009 0.0001
0.0002 0.0014 0.0038 0.0052 0.0043 0.0019 0.0001
0.0002 0.0014 0.0038 0.0050 0.0033 0.0009 0.0001
0.0002 0.0014 0.0038 0.0054 0.0035 0.0010 0.0001
0.0002 0.0013 0.0038 0.0058 0.0045 0.0018 0.0001
0.0002 0.0011 0.0036 0.0062 0.0040 0.0010 0.0001
0.0001 0.0009 0.0031 0.0072 0.0129 0.0020 0.0001
0.0001 0.0008 0.0022 0.0034 0.0031 0.0024 0.0002
0.0001 0.0007 0.0021 0.0033 0.0028 0.0018 0.0002
0.0001 0.0007 0.0020 0.0033 0.0026 0.0020 0.0002
0.0001 0.0006 0.0018 0.0037 0.0023 0.0015 0.0001
0.0001 0.0005 0.0013 0.0019 0.0020 0.0017 0.0002
0.0001 0.0005 0.0013 0.0018 0.0018 0.0013 0.0001
0.0001 0.0005 0.0013 0.0017 0.0017 0.0014 0.0001
0.0001 0.0005 0.0013 0.0016 0.0015 0.0011 0.0002
0.0001 0.0004 0.0015 0.0014 0.0015 0.0012 0.0002
0.0001 0.0003 0.0007 0.0012 0.0014 0.0010 0.0002
0.0000 0.0004 0.0007 0.0012 0.0013 0.0010 0.0002
0.0000 0.0002 0.0006 0.0011 0.0013 0.0009 0.0001
0.0000 0.0002 0.0006 0.0011 0.0012 0.0009 0.0002
0.0000 0.0001 0.0005 0.0011 0.0012 0.0008 0.0001
0.0000 0.0001 0.0005 0.0010 0.0012 0.0008 0.0001
0.0000 0.0001 0.0005 0.0010 0.0012 0.0007 0.0002
0.0000 0.0001 0.0004 0.0010 0.0012 0.0008 0.0003
0.0000 0.0001 0.0004 0.0009 0.0013 0.0007 0.0002
0.0000 0.0001 0.0003 0.0009 0.0013 0.0012 0.0002
0.0000 0.0000 0.0003 0.0008 0.0013 0.0011 0.0002
0.0000 0.0000 0.0002 0.0007 0.0012 0.0009 0.0001
0.0000 0.0000 0.0002 0.0007 0.0012 0.0009 0.0002
0.0000 0.0000 0.0001 0.0006 0.0013 0.0008 0.0002
0.0000 0.0000 0.0000 0.0004 0.0015 0.0008 0.0002
0.0000 0.0000 0.0000 0.0002 0.0017 0.0071 0.0042
ans =
3.5607