CViM
README.md

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

What you can find in this repository

The src folder contains the following elements:

  1. the main module of this project 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.

  3. the model characteristics within model folder that includes:

    1. the model initialisation file init.jl;
    2. the set of exogenous parameters and corresponding value params.jl;
    3. the mutable structs of each agent type that defines properties and variables structs.jl;
    4. some functions of general utility in utils.jl which also includes the Stock-Flow consistency checks performed at each simulation step;
    5. a folder SFC where all behavioural rules are defined for each class of agents/sectors:
  4. the scripts to load the data collected and generate plots plots;

  5. the scripts to run sensitivity analysis on parameter values and plot the results sensitivity-analysis.

Interbank matching mechanism

Interbank Market

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} .