% run_est_local.m — BOKDPM 전체 MH 추정 (로컬 Octave+Dynare)
warning('off','all');
DYNARE_MATLAB = getenv('DYNARE_MATLAB');
if isempty(DYNARE_MATLAB), error('DYNARE_MATLAB env 미설정'); end
addpath(DYNARE_MATLAB);

dynare BOKDPM_2025.mod nograph nointeractive;

% --- 사후 모멘트 덤프 (MH 후 oo_에서) ---
printf('\n=== POSTERIOR MOMENTS ===\n');
cats = {'parameters','shocks_std'};
for ci=1:numel(cats)
  c = cats{ci};
  if isfield(oo_,'posterior_mean') && isfield(oo_.posterior_mean, c)
    nm = fieldnames(oo_.posterior_mean.(c));
    for i=1:numel(nm)
      n = nm{i};
      m = oo_.posterior_mean.(c).(n);
      s = NaN; lo = NaN; hi = NaN;
      if isfield(oo_,'posterior_std') && isfield(oo_.posterior_std,c) && isfield(oo_.posterior_std.(c),n), s = oo_.posterior_std.(c).(n); end
      if isfield(oo_,'posterior_hpdinf') && isfield(oo_.posterior_hpdinf,c) && isfield(oo_.posterior_hpdinf.(c),n), lo = oo_.posterior_hpdinf.(c).(n); hi = oo_.posterior_hpdsup.(c).(n); end
      printf('MOM %s %s mean=%.6f std=%.6f hpd=[%.6f,%.6f]\n', c, n, m, s, lo, hi);
    end
  end
end
printf('=== END MOMENTS ===\n');
