Generate States, Choices and Shocks Grids and Get Functions

back to Fan's Dynamic Assets Repository Table of Content.

Contents

function [armt_map, func_map] = ffs_az_get_funcgrid(varargin)

FFS_AZ_GET_FUNCGRID get funcs, params, states choices shocks grids

centralized gateway for retrieving parameters, and solution grids and functions

@param param_map container parameter container

@param support_map container support container

@param bl_input_override boolean if true varargin contained param_map and support_map fully overrides local default. Local default is not invoked. This could be important for speed if this function is getting invoked within certain loops. Default is 0.

@return armt_map container container with states, choices and shocks grids that are inputs for grid based solution algorithm

@return func_map container container with function handles for consumption cash-on-hand etc.

@example

  it_param_set = 2;
  bl_input_override = true;
  [param_map, support_map] = ffs_az_set_default_param(it_param_set);
  [armt_map, func_map] = ffs_az_get_funcgrid(param_map, support_map, bl_input_override);

@include

Default

if (~isempty(varargin))

    % override when called from outside
    [param_map, support_map, ~] = varargin{:};
else
    % default internal run
    [param_map, support_map] = ffs_az_set_default_param();
    support_map('bl_graph_funcgrids') = true;
    support_map('bl_display_funcgrids') = true;
    default_maps = {param_map, support_map};

    % numvarargs is the number of varagin inputted
    [default_maps{1:length(varargin)}] = varargin{:};
    param_map = [param_map; default_maps{1}];
    support_map = [support_map; default_maps{2}];
end
----------------------------------------
----------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Begin: Show all key and value pairs from container
CONTAINER NAME: PARAM_MAP
----------------------------------------
  Map with properties:

        Count: 24
      KeyType: char
    ValueType: any

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
----------------------------------------
----------------------------------------
pos = 1 ; key = bl_loglin ; val = false
pos = 2 ; key = fl_a_max ; val = 50
pos = 3 ; key = fl_a_min ; val = 0
pos = 4 ; key = fl_b_bd ; val = 0
pos = 5 ; key = fl_beta ; val = 0.94
pos = 6 ; key = fl_crra ; val = 1.5
pos = 7 ; key = fl_loglin_threshold ; val = 1
pos = 8 ; key = fl_nan_replace ; val = -9999
pos = 9 ; key = fl_r_save ; val = 0.025
pos = 10 ; key = fl_tol_dist ; val = 1e-05
pos = 11 ; key = fl_tol_pol ; val = 1e-05
pos = 12 ; key = fl_tol_val ; val = 1e-05
pos = 13 ; key = fl_w ; val = 1.28
pos = 14 ; key = fl_z_mu ; val = 0
pos = 15 ; key = fl_z_rho ; val = 0.8
pos = 16 ; key = fl_z_sig ; val = 0.2
pos = 17 ; key = it_a_n ; val = 750
pos = 18 ; key = it_maxiter_dist ; val = 1000
pos = 19 ; key = it_maxiter_val ; val = 1000
pos = 20 ; key = it_tol_pol_nochange ; val = 25
pos = 21 ; key = it_trans_power_dist ; val = 1000
pos = 22 ; key = it_z_n ; val = 15
pos = 23 ; key = st_analytical_stationary_type ; val = eigenvector
pos = 24 ; key = st_model ; val = az
----------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Scalars in Container and Sizes and Basic Statistics
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                           i     idx    value
                           __    ___    _____

    bl_loglin               1     1         0
    fl_a_max                2     2        50
    fl_a_min                3     3         0
    fl_b_bd                 4     4         0
    fl_beta                 5     5      0.94
    fl_crra                 6     6       1.5
    fl_loglin_threshold     7     7         1
    fl_nan_replace          8     8     -9999
    fl_r_save               9     9     0.025
    fl_tol_dist            10    10     1e-05
    fl_tol_pol             11    11     1e-05
    fl_tol_val             12    12     1e-05
    fl_w                   13    13      1.28
    fl_z_mu                14    14         0
    fl_z_rho               15    15       0.8
    fl_z_sig               16    16       0.2
    it_a_n                 17    17       750
    it_maxiter_dist        18    18      1000
    it_maxiter_val         19    19      1000
    it_tol_pol_nochange    20    20        25
    it_trans_power_dist    21    21      1000
    it_z_n                 22    22        15

----------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Strings in Container and Sizes and Basic Statistics
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                                     i    idx
                                     _    ___

    st_analytical_stationary_type    1    23 
    st_model                         2    24 

----------------------------------------
----------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Begin: Show all key and value pairs from container
CONTAINER NAME: SUPPORT_MAP
----------------------------------------
  Map with properties:

        Count: 39
      KeyType: char
    ValueType: any

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
----------------------------------------
----------------------------------------
pos = 1 ; key = bl_display ; val = true
pos = 2 ; key = bl_display_defparam ; val = false
pos = 3 ; key = bl_display_dist ; val = false
pos = 4 ; key = bl_display_final ; val = false
pos = 5 ; key = bl_display_final_dist ; val = false
pos = 6 ; key = bl_display_final_dist_detail ; val = false
pos = 7 ; key = bl_display_funcgrids ; val = false
pos = 8 ; key = bl_graph ; val = false
pos = 9 ; key = bl_graph_coh_t_coh ; val = true
pos = 10 ; key = bl_graph_funcgrids ; val = false
pos = 11 ; key = bl_graph_onebyones ; val = true
pos = 12 ; key = bl_graph_pol_lvl ; val = true
pos = 13 ; key = bl_graph_pol_pct ; val = true
pos = 14 ; key = bl_graph_val ; val = true
pos = 15 ; key = bl_img_save ; val = false
pos = 16 ; key = bl_mat ; val = false
pos = 17 ; key = bl_post ; val = false
pos = 18 ; key = bl_profile ; val = false
pos = 19 ; key = bl_profile_dist ; val = false
pos = 20 ; key = bl_time ; val = true
pos = 21 ; key = it_display_every ; val = 5
pos = 22 ; key = it_display_final_colmax ; val = 12
pos = 23 ; key = it_display_final_rowmax ; val = 100
pos = 24 ; key = it_display_summmat_colmax ; val = 5
pos = 25 ; key = it_display_summmat_rowmax ; val = 5
pos = 26 ; key = st_img_name_main ; val = _default
pos = 27 ; key = st_img_path ; val = C:/Users/fan/CodeDynaAsset//m_az//solve/img/
pos = 28 ; key = st_img_prefix ; val = 
pos = 29 ; key = st_img_suffix ; val = _p0.png
pos = 30 ; key = st_mat_name_main ; val = _default
pos = 31 ; key = st_mat_path ; val = C:/Users/fan/CodeDynaAsset//m_az//solve/mat/
pos = 32 ; key = st_mat_prefix ; val = 
pos = 33 ; key = st_mat_suffix ; val = _p0
pos = 34 ; key = st_matimg_path_root ; val = C:/Users/fan/CodeDynaAsset//m_az/
pos = 35 ; key = st_profile_name_main ; val = _default
pos = 36 ; key = st_profile_path ; val = C:/Users/fan/CodeDynaAsset//m_az//solve/profile/
pos = 37 ; key = st_profile_prefix ; val = 
pos = 38 ; key = st_profile_suffix ; val = _p0
pos = 39 ; key = st_title_prefix ; val = 
----------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Scalars in Container and Sizes and Basic Statistics
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                                    i     idx    value
                                    __    ___    _____

    bl_display                       1     1        1 
    bl_display_defparam              2     2        0 
    bl_display_dist                  3     3        0 
    bl_display_final                 4     4        0 
    bl_display_final_dist            5     5        0 
    bl_display_final_dist_detail     6     6        0 
    bl_display_funcgrids             7     7        0 
    bl_graph                         8     8        0 
    bl_graph_coh_t_coh               9     9        1 
    bl_graph_funcgrids              10    10        0 
    bl_graph_onebyones              11    11        1 
    bl_graph_pol_lvl                12    12        1 
    bl_graph_pol_pct                13    13        1 
    bl_graph_val                    14    14        1 
    bl_img_save                     15    15        0 
    bl_mat                          16    16        0 
    bl_post                         17    17        0 
    bl_profile                      18    18        0 
    bl_profile_dist                 19    19        0 
    bl_time                         20    20        1 
    it_display_every                21    21        5 
    it_display_final_colmax         22    22       12 
    it_display_final_rowmax         23    23      100 
    it_display_summmat_colmax       24    24        5 
    it_display_summmat_rowmax       25    25        5 

----------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Strings in Container and Sizes and Basic Statistics
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                            i     idx
                            __    ___

    st_img_name_main         1    26 
    st_img_path              2    27 
    st_img_prefix            3    28 
    st_img_suffix            4    29 
    st_mat_name_main         5    30 
    st_mat_path              6    31 
    st_mat_prefix            7    32 
    st_mat_suffix            8    33 
    st_matimg_path_root      9    34 
    st_profile_name_main    10    35 
    st_profile_path         11    36 
    st_profile_prefix       12    37 
    st_profile_suffix       13    38 
    st_title_prefix         14    39 

Parse Parameters

params_group = values(param_map, {'it_z_n', 'fl_z_mu', 'fl_z_rho', 'fl_z_sig'});
[it_z_n, fl_z_mu, fl_z_rho, fl_z_sig] = params_group{:};

params_group = values(param_map, {'fl_b_bd', 'fl_a_min', 'fl_a_max', 'bl_loglin', 'fl_loglin_threshold', 'it_a_n'});
[fl_b_bd, fl_a_min, fl_a_max, bl_loglin, fl_loglin_threshold, it_a_n] = params_group{:};

params_group = values(param_map, {'fl_crra'});
[fl_crra] = params_group{:};

params_group = values(param_map, {'fl_r_save', 'fl_w'});
[fl_r_save, fl_w] = params_group{:};

params_group = values(support_map, {'bl_graph_funcgrids', 'bl_display_funcgrids'});
[bl_graph_funcgrids, bl_display_funcgrids] = params_group{:};
params_group = values(support_map, {'it_display_summmat_rowmax', 'it_display_summmat_colmax'});
[it_display_summmat_rowmax, it_display_summmat_colmax] = params_group{:};

Get Asset and Choice Grid

if (bl_loglin)
    % C:\Users\fan\M4Econ\asset\grid\ff_grid_loglin.m
    ar_a = fft_gen_grid_loglin(it_a_n, fl_a_max, fl_a_min, fl_loglin_threshold);
else
    ar_a = linspace(fl_b_bd, fl_a_max, it_a_n);
    ar_a = [0 ar_a];
    ar_a = sort(unique(ar_a));
end

Get Shock Grids

[~, mt_z_trans, ar_stationary, ar_z] = ffto_gen_tauchen_jhl(fl_z_mu,fl_z_rho,fl_z_sig,it_z_n);

Get Equations

[f_util_log, f_util_crra, f_util_standin, f_inc, f_coh, f_cons] = ffs_az_set_functions(fl_crra, fl_r_save, fl_w);

Store

armt_map = containers.Map('KeyType','char', 'ValueType','any');
armt_map('ar_a') = ar_a;
armt_map('mt_z_trans') = mt_z_trans;
armt_map('ar_stationary') = ar_stationary;
armt_map('ar_z') = ar_z;

func_map = containers.Map('KeyType','char', 'ValueType','any');
func_map('f_util_log') = f_util_log;
func_map('f_util_crra') = f_util_crra;
func_map('f_util_standin') = f_util_standin;
func_map('f_inc') = f_inc;
func_map('f_coh') = f_coh;
func_map('f_cons') = f_cons;

Display

if (bl_display_funcgrids)

    disp('ar_z');
    disp(size(ar_z));
    disp(ar_z);

    disp('mt_z_trans');
    disp(size(mt_z_trans));
    disp(mt_z_trans);

    fft_container_map_display(armt_map, it_display_summmat_rowmax, it_display_summmat_colmax);
    fft_container_map_display(func_map, it_display_summmat_rowmax, it_display_summmat_colmax);
end
ar_z
     1    15

  Columns 1 through 7

    0.3474    0.4008    0.4623    0.5333    0.6152    0.7097    0.8186

  Columns 8 through 14

    0.9444    1.0894    1.2567    1.4496    1.6723    1.9291    2.2253

  Column 15

    2.5670

mt_z_trans
    15    15

  Columns 1 through 7

    0.2602    0.2683    0.2555    0.1492    0.0534    0.0117    0.0016
    0.1123    0.1962    0.2763    0.2386    0.1263    0.0410    0.0081
    0.0371    0.1049    0.2185    0.2790    0.2185    0.1049    0.0309
    0.0092    0.0410    0.1263    0.2386    0.2763    0.1962    0.0854
    0.0017    0.0117    0.0534    0.1492    0.2555    0.2683    0.1728
    0.0002    0.0024    0.0165    0.0682    0.1728    0.2683    0.2555
    0.0000    0.0004    0.0037    0.0228    0.0854    0.1962    0.2763
    0.0000    0.0000    0.0006    0.0056    0.0309    0.1049    0.2185
    0.0000    0.0000    0.0001    0.0010    0.0081    0.0410    0.1263
    0.0000    0.0000    0.0000    0.0001    0.0016    0.0117    0.0534
    0.0000    0.0000    0.0000    0.0000    0.0002    0.0024    0.0165
    0.0000    0.0000    0.0000    0.0000    0.0000    0.0004    0.0037
    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0006
    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0001
    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000

  Columns 8 through 14

    0.0001    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000
    0.0010    0.0001    0.0000    0.0000    0.0000    0.0000    0.0000
    0.0056    0.0006    0.0000    0.0000    0.0000    0.0000    0.0000
    0.0228    0.0037    0.0004    0.0000    0.0000    0.0000    0.0000
    0.0682    0.0165    0.0024    0.0002    0.0000    0.0000    0.0000
    0.1492    0.0534    0.0117    0.0016    0.0001    0.0000    0.0000
    0.2386    0.1263    0.0410    0.0081    0.0010    0.0001    0.0000
    0.2790    0.2185    0.1049    0.0309    0.0056    0.0006    0.0000
    0.2386    0.2763    0.1962    0.0854    0.0228    0.0037    0.0004
    0.1492    0.2555    0.2683    0.1728    0.0682    0.0165    0.0024
    0.0682    0.1728    0.2683    0.2555    0.1492    0.0534    0.0117
    0.0228    0.0854    0.1962    0.2763    0.2386    0.1263    0.0410
    0.0056    0.0309    0.1049    0.2185    0.2790    0.2185    0.1049
    0.0010    0.0081    0.0410    0.1263    0.2386    0.2763    0.1962
    0.0001    0.0016    0.0117    0.0534    0.1492    0.2555    0.2683

  Column 15

         0
    0.0000
    0.0000
    0.0000
    0.0000
    0.0000
    0.0000
    0.0000
    0.0000
    0.0002
    0.0017
    0.0092
    0.0371
    0.1123
    0.2602

----------------------------------------
----------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Begin: Show all key and value pairs from container
CONTAINER NAME: ARMT_MAP
----------------------------------------
  Map with properties:

        Count: 4
      KeyType: char
    ValueType: any

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
----------------------------------------
----------------------------------------
pos = 1 ; key = ar_a ;rown= 1 ,coln= 750
ar_a :mu= 25 ,sd= 14.4627 ,min= 0 ,max= 50
               zi_1_C1    zi_2_C2     zi_375_c375    zi_749_c749    zi_750_c750
               _______    ________    ___________    ___________    ___________

    zi_1_r1       0       0.066756      24.967         49.933           50     

pos = 2 ; key = ar_stationary ;rown= 1 ,coln= 15
ar_stationary :mu= 0.066667 ,sd= 0.060897 ,min= 0.0027089 ,max= 0.16757
                zi_1_C1      zi_2_C2     zi_8_C8    zi_14_c14    zi_15_c15
               _________    _________    _______    _________    _________

    zi_1_r1    0.0027089    0.0069499    0.16757    0.0069499    0.0027089

pos = 3 ; key = ar_z ;rown= 1 ,coln= 15
ar_z :mu= 1.1347 ,sd= 0.69878 ,min= 0.34741 ,max= 2.567
               zi_1_C1    zi_2_C2    zi_8_C8    zi_14_c14    zi_15_c15
               _______    _______    _______    _________    _________

    zi_1_r1    0.34741    0.40076    0.94436     2.2253        2.567  

pos = 4 ; key = mt_z_trans ;rown= 15 ,coln= 15
mt_z_trans :mu= 0.066667 ,sd= 0.095337 ,min= 0 ,max= 0.27902
                  zi_1_C1       zi_2_C2       zi_8_C8      zi_14_c14     zi_15_c15 
                 __________    __________    __________    __________    __________

    zi_1_R1         0.26016       0.26831    0.00012823    1.1102e-15             0
    zi_2_R2         0.11232       0.19622    0.00098855    9.3592e-14    3.3307e-16
    zi_8_R8      1.7181e-06    4.1008e-05       0.27902    4.1008e-05    1.7181e-06
    zi_14_r14     3.474e-16    9.3597e-14    0.00098855       0.19622       0.11232
    zi_15_r15    2.7412e-18    1.1057e-15    0.00012823       0.26831       0.26016

----------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Matrix in Container and Sizes and Basic Statistics
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                     i    idx    rowN    colN      mean        std          min         max  
                     _    ___    ____    ____    ________    ________    _________    _______

    ar_a             1     1       1     750           25      14.463            0         50
    ar_stationary    2     2       1      15     0.066667    0.060897    0.0027089    0.16757
    ar_z             3     3       1      15       1.1347     0.69878      0.34741      2.567
    mt_z_trans       4     4      15      15     0.066667    0.095337            0    0.27902

----------------------------------------
----------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Begin: Show all key and value pairs from container
CONTAINER NAME: FUNC_MAP
----------------------------------------
  Map with properties:

        Count: 6
      KeyType: char
    ValueType: any

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
----------------------------------------
----------------------------------------
pos = 1 ; key = f_coh ; val = @(z,b)(z*fl_w+b.*(1+fl_r_save))
pos = 2 ; key = f_cons ; val = @(z,b,bprime)(f_coh(z,b)-bprime)
pos = 3 ; key = f_inc ; val = @(z,b)(z*fl_w+b.*(fl_r_save))
pos = 4 ; key = f_util_crra ; val = @(c)(((c).^(1-fl_crra)-1)./(1-fl_crra))
pos = 5 ; key = f_util_log ; val = @(c)log(c)
pos = 6 ; key = f_util_standin ; val = @(z,b)f_util_log(f_coh(z,b))
----------------------------------------
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Scalars in Container and Sizes and Basic Statistics
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                      i    idx    xFunction
                      _    ___    _________

    f_coh             1     1         1    
    f_cons            2     2         2    
    f_inc             3     3         3    
    f_util_crra       4     4         4    
    f_util_log        5     5         5    
    f_util_standin    6     6         6    

end
ans = 

  Map with properties:

        Count: 4
      KeyType: char
    ValueType: any