A MATLAB implementation of the DSGE (Dynamic Stochastic General Equilibrium) model with investment funds and macroprudential regulation, based on the ECB Working Paper No. 2695.
- Chen Xingqiang
- GitHub: @chenxingqiang
- Email: chen.xingqiang@iechor.com
project/
├── src/ # Source code
│ ├── models/ # Model implementations
│ ├── calibration/ # Model calibration
│ └── analysis/ # Analysis tools
├── lib/ # Utility functions
├── tests/ # Test suites
├── results/ # Results and figures
└── doc/ # Documentation
- VAR model analysis of fund outflows' macroeconomic impact
- DSGE model with:
- Household sector with deposit preferences
- Banking sector
- Investment fund sector with liquidity risk
- Production sector
- Welfare analysis of macroprudential regulation
- Policy analysis and shock response evaluation
The VAR analysis shows that investment fund outflows have significant macroeconomic effects. A 1% outflow shock leads to:
- 0.4% reduction in industrial production
- Persistent effects on bank lending
- Significant increases in corporate bond spreads
The optimal liquidity requirement is found to be 7.2% of assets under management. This result balances:
- Benefits from reduced resource losses
- Costs from reduced household deposits
- Changes in financial intermediation
The welfare effects can be decomposed into:
- Resource gains from lower bond sales
- Utility losses from reduced household deposits
- Effects from changes in financial intermediation
The liquidity regulation effectively stabilizes the economy under preference shocks by:
- Reducing forced bond sales
- Maintaining financial intermediation
- Stabilizing consumption and output
- Clone the repository:
git clone https://github.com/chenxingqiang/dsge-investment-funds.git
- Open MATLAB and add the project to your path:
addpath(genpath('dsge-investment-funds'))
- Run the main analysis:
main
params = ModelParameters();
model = DSGEModel(params);
[ss, success] = model.compute_steady_state();
policy_analyzer = PolicyAnalysis(model);
[opt_policy, results] = policy_analyzer.find_optimal_policy();
shock_results = policy_analyzer.analyze_aggregate_shock('preference', opt_policy);
Run all tests:
runtests('tests')
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Based on the ECB Working Paper No. 2695: "Macroprudential regulation of investment funds" by Giovanni di Iasio, Christoph Kaufmann, and Florian Wicknig.
If you use this code in your research, please cite:
@techreport{diIasio2022,
title={Macroprudential regulation of investment funds},
author={di Iasio, Giovanni and Kaufmann, Christoph and Wicknig, Florian},
year={2022},
institution={European Central Bank},
number={2695}
}