# Cultural Values and Interbank Markets: An Agent-Based Stock-Flow Consistent Model This repository contains the files to replicate the simulations and figures of "Cultural Values and Interbank Markets: An Agent-Based Stock-Flow Consistent Model" by Jessica Reale and Alessio Emanuele Biondo. This study investigates how personal values influence financial decision-making in credit and interbank markets, affecting monetary policy effectiveness and financial stability. We hypothesize that heterogeneity in firms’, households’, and bank managers’ values shapes leverage preferences, risk-taking behavior, and interbank funding maturities, ultimately impacting macroeconomic dynamics and monetary policy outcomes. This repository provides the code to explore how individual values interact with macro-financial policies and to assess the implications of cultural heterogeneity for financial stability and policy design. The code implements an agent-based stock-flow consistent (AB-SFC) model, incorporating individual values into financial decision-making and analyzing their effects under different monetary policy scenarios. The interbank market structure is modeled through a matching mechanism where banks adjust lending and borrowing strategies based on their risk attitudes and funding preferences. We simulate five scenarios based on heterogeneous cultural compositions of the population to assess financial stability under different value distributions. Additionally, we implement various monetary policy scenarios (Missing, Corridor, Corridor-unique, Expansionary) to evaluate policy effectiveness. To contact me: [Jessica Reale](mailto:jessica.reale@ruhr-uni-bochum.de) ## What you can find in this repository The `src` folder contains the following elements: 1. the main module of this project [`CViM.jl`](src/CViM.jl) which includes: 1. what happens at each simulation step (*model_step!(model)* function) ; 2. several model-based functions that update credit and interbank market matching and interbank interest rates. 2. the scripts to run the model and execute parallelised replications and save the data [`run_complex.jl`](src/run_complex.jl). 3. the model characteristics within [`model`](src/model) folder that includes: 1. the model initialisation file [`init.jl`](src/model/init.jl); 2. the set of exogenous parameters and corresponding value [`params.jl`](src/model/params.jl); 3. the mutable structs of each agent type that defines properties and variables [`structs.jl`](src/model/structs.jl); 4. some functions of general utility in [`utils.jl`](src/model/utils.jl) which also includes the Stock-Flow consistency checks performed at each simulation step; 5. a folder [`SFC`](src/model/SFC) where all behavioural rules are defined for each class of agents/sectors: - banks: [`banks.jl`](src/model/SFC/banks.jl); - central bank: [`cb.jl`](src/model/SFC/cb.jl); - firms: [`firms.jl`](src/model/SFC/firms.jl); - government: [`gov.jl`](src/model/SFC/gov.jl); - households: [`hh.jl`](src/model/SFC/hh.jl). 4. the scripts to load the data collected and generate plots [`plots`](src/plots); 5. the scripts to run sensitivity analysis on parameter values and plot the results [`sensitivity-analysis`](src/sensitivity-analysis). ## Interbank matching mechanism ![Interbank Market](ib-protocol.png) ## Simulations We run the simulations over five scenarios (`scenario`) diversified by the probability distributions of the population's personal values (`value_dist`). The table below summarises the scenarios we consider, given the following order of values **(C, O, SE, ST)**. Scenarios | Values probability distribution ------------- | ------------- Baseline | (0.25, 0.25, 0.25, 0.25) C-skewed | (0.7, 0.1, 0.1, 0.1) O-skewed | (0.1, 0.7, 0.1, 0.1) SE-skewed | (0.1, 0.1, 0.7, 0.1) ST-skewed | (0.1, 0.1, 0.1, 0.7) We model the following shock options: 1. "Missing": interest rates are constant at the values defined in the `params.jl` file. This shock gives us a benchmark for comparisons; 2. "Corridor": we increase the corridor rates of the central bank by 50 basis points every 150 steps; 3. "Corridor-unique": we perform a single-time contractionary shock as we increase the corridor rates of the central bank by 50 basis points at step 150; 4. "Expansionary": we perform a single-time expansionary shock by decreasing corridor reates by 50 basis points at step 150. ## Sensitivity analysis We perform sensitivity tests on four parameters: 1. government debt-to-GDP ratio: `model.r = {0.6, 1.1, 1.6}`; 2. repayment parameter: `model.γ = {0.0, 0.1, 0.3}`; 3. sensitivity to rates changes: `model.pref = {0.01, 0.05, 0.09}`; 4. government spending: `model.g = {100.0, 200.0, 300.0} `.