Income distribution inequality and credit risk

Income distribution inequality and credit risk preview image

This model is seeking new collaborators — would you please help?

1 collaborator

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by the author
Model was written in NetLogo 5.2.0 • Viewed 831 times • Downloaded 44 times • Run 0 times
Download the 'Income distribution inequality and credit risk' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


WHAT IS IT?

This is a simple model to explore the effect of income distribution on the transmission of shocks and the evolution of non-performing loans and household expenditure (as a representative macroeconomic variable) under normal and adverse economic conditions.

HOW IT WORKS

Agents

The model has one type of agent named household

Properties

Households have the following properties:

  • shape is fixed to be person.
  • color assumes a different value according to the loan-servicing status of the Household.
    • blue the Household doesn't have a loan.
    • green the Household has a loan and services it from its budget.
    • orange the Household has a loan and services it from its deposits.
    • red the Household does not service its loan.
    • grey the Household does not have a loan nor can meet its basic needs. Typically this category is very small.
  • budget is the monthly income a Household receives.
  • has-loan? is True when the Household has a loan, False otherwise.
  • has-deposits? is True when the Household has deposits, false otherwise.
  • deposit-amount keeps record of the deposits a Household owns.
  • amount-withdrawn keeps record of the deposit amount withdrawn from a Household.
  • amount-needed denotes the extra amount (if the budget alone is not enough) a Household needs to meet either its basic needs or its loan payments.
  • available-this-month is the available money for spending each month. At the beggining of each month has the value of budget and it is reduced as the Household spends it for basic needs and/or loan payments.
  • expenditure-this-month keeps record of the current month expenditure of each Household
  • monthly-loan-payment is the calculated monthly loan payment for each Household. It depends on the size, the interest rate and the duration (term) of the loan.
  • monthly-loan-rate is the (monthly) loan interest rate.
  • capital-repayment keeps track of the capital repayments of each Household.
  • borrower-interest-payment keeps track of the interest repayments of each Household.
  • outstanding-borrowing is the amount of loans each Household has.
  • defaulter? is True when the Household doesn't service its loan, false otherwise.

Actions

Households can take the following actions during the simulation:

  • Spend money to meet their basic needs. This money can come either from their budget, from their deposits or both.
  • Deposit any remaining money (after they've met all their obligations) into their savings account.
  • Collect interest on their deposits. For this simulation, the annual savings interest rate is set to 1.5%.
  • Spend any remaining money (after they've met all their obligations) at the end of the month.
  • Ask for a loan. Each Household can have one loan at a time. There are two types of loans based on their size (which is randomly decided by the requesting Household and is between 5000 and 25000 currency units):
    • Loans less than or equal to 10000 currency units. Their duration (also known as "term") is 5 years (60 months) and their annual interest rate is 5%.
    • Loans greater than 10000 currency units. Their duration is 10 years (120 months) and their annual interest rate is 3%.
  • Pay a loan. This action consists of repaying a loan's interest and capital by using any funds available (budget and/or deposits).
  • Withdraw from deposits. This action is taken either when a Household cannot meet any of its needs (basic or loan paymennt) with its budget only, or when it wants to spend some amount from its savings (eg. for some luxury buys).

Environment

The environment consists of the patches and it reflects the overall "economic conditions sentiment" experienced by the Households. The environment affects Househods in their decisions to spend a proportion of their deposits (simulating some luxury buys etc.).

This environment-agent interaction is controled by the color of the patches. It can assume three different values:

  • If the economic conditions are benign (scenario is set to normal) the patches are white.
  • If the economic conditions are mildly adverse (scenario is set to mild shock) the patches are orange-ish.
  • If the economic conditions are severely deteriorated (scenario is set to severe shock) the patches are red-ish.

Order of events

Initialization (SETUP)

  1. Every Household property is initialized to zero or to false if it is boolean except for the budget.
  2. Budgets are randomly assigned to each Household according to the selected distribution (uniform, normal, exponential) following Hamill & Gilbert (2016). The mean and minimum values are approximately the same and are 1000 and 350 currency units respectively.
  3. A minimum expenditure is set to 80% of the minimum budget to simulate the minimum amount that a Household will need to meet its basic needs. Notice that this value remains fixed and does not change under the various scenarios.
  4. The reserve ratio is set to 10%. Therefore, (1 - reserve ratio) times the deposits is the available amount of money for borrowing. For more information on the reserve ratio see the respective Wikipedia lemma on [reserve requirement] (https://en.wikipedia.org/wiki/Reserve_requirement).
  5. All patches are set to be initially white. Thus, their color will change after the implementation of a given shock and remain changed for as long as the shock lasts (here until the end of the simulation).

Execution (GO)

The simulation starts by checking which scenario is selected and runs for shock-t + 36 ticks. Assuming that each tick corresponds to one month, the 3 year duration of the simulation emulates the typical time-frame used for bank stress testing exercises (Schuermann, 2014). The following scenarios are implemented:

  • In the normal scenario no shocks are implemented and it can be used as a baseline for comparison with the other scenarios.
  • In the mild shock scenario, the budget of every Household decreases by 0.2% each month or by approximately 2.4% per year. In addition, unemployment (randomly choosing Households and setting their budget = 0) rises by 2.4% per year.
  • The severe shock scenario reflects the 2010 sovereign debt crisis experienced in Greece (based on [Eurostat] (http://ec.europa.eu/eurostat/data/database) data). In this case budget decreases by 0.5% each month or by approximately 5.8% per year and unemployment increases by approximately 5% per year.

Next, each Household takes the following actions:

  1. Spend on basic needs 1.1 If the budget is greater than expenditure for basic needs, then spend from it. 1.2 Else, if budget is less than minimum expenditure and there are enough deposits, withdraw from deposits. 1.3 Else, if there are no sufficient deposits to meet basic needs, mark this Household as inactive.
  2. Collect interest on deposits, if any
  3. Repay existing loan 3.1 If budget exceeds loan payment then repay loan. 3.2 Else, if budget is less than monthly loan payment and there are enough deposits, withdraw from deposits. 3.3 If the needed funds are not available, declare Household as a defaulter.
  4. Ask for a new loan (if it doesn't have one nor is a defaulter) 4.1 Flip a coin to whether or not ask for a loan and proceed accordingly.
  5. Decide action with remaining budget 5.1 Flip a coin to decide whether to spend or deposit the remaining budget, if any, and proceed accordingly.
  6. Spend some of the deposits (thus simulating e.g. some luxury buys etc.) 6.1 If the conditions are normal (patch color is white), flip a coin to decide whether or not to spend some deposits and if so, randomly choose an amount up to 30% of the deposits. 6.2 If the conditions are adverse (patch color is orange or red) flip a coin to decide whether or not to spend some deposits and if so, randomly choose an amount up to 10% of the deposits.
  7. Finally, if a Household has repaid its loan, set all related properties to zero or false.

HOW TO USE IT

Inputs

The modeller is required to provide the following inputs:

  1. Set the number of households using the slider num-households.
  2. Select the desired income distribution from the chooser income-distribution. The available options are uniform, normal, exponential and gamma.
  3. Select the scenario from the chooser scenario. The available options are normal, mild shock and severe shock.
  4. Set the time when the shock will begin by typing an integer in the input box shock-t. Remember the following: a) The shock will be applied from the moment specified until the end of the simulation, 36 ticks later; b) Even when the normal scenario is selected (meaning that there is no shock applied) the shock-t needs to be specified in order for the simulation to terminate. This way a standard simulation time for each scenario is ensured, thus facilitating comparison among them.

After the previous core settings, there is the option to switch on or off the affordability-test and set its value using the slider budget-payment-ratio.

  1. The switch affordability-test (de)activates a check to be applied before granting a loan. The check consists of testing whether or not the monthly loan repayment plus the minimum monthly expenditure is less or equal to budget-payment-ratio times the monthly budget. If activated and this condition holds, then the loan is granted otherwise it is not.

After the aforementioned initial settings, the button go starts the simulation.

Outputs

The plot Overall income distribution and the monitor Average budget serve mainly as model verification aids. The plot displays the monthly budget distribution of all Households and the monitor shows its average value. They both assist to confirm that the distribution of income has the desired (shape and mean) properties.

There are two plots with their accompanying monitors related to measuring income inequality and its evolution. The measures used are the [ commonly] ( https://www.equalitytrust.org.uk/notes-statistical-sources-and-methods ) studied Gini index and the p80:p20 ratio. A detailed description of the former can be found in the Wikipedia [lemma] ( https://en.wikipedia.org/wiki/Gini_coefficient ), whereas the latter displays how many times richer is the upper 20% of the households compared to the bottom 20% of the households. For the estimation of the Gini index was used the respective part of the code from NetLogo Wealth Distribution model.

The plot Total non-performing loans is visualizing the main output of the model, the total amount of non-performing loans. A vertical line in this and other plots denotes the start of the stress scenario. If the normal scenario is selected, then no vertical line is drawn.

The plot # of borrowers (by type) displays the number of Households according to their loan-servicing status. There are 4 types of borrowers; Defaulted, Servicing, Servicing w deposits, No loan and Inactive. The first and fourth types are the ones who don't service their loan and don't have a loan respectively. The difference between the Servicing and Servicing w deposits is that the former pay their loan using only their budget, while the latter resort to their deposits to meet their payments. The Inactive type is always very small compared to the other types and denotes the Households which do not have a loan nor can meet their basic needs.

The plot Income distribution of deafulters shows the distribution of income of the defaulted Households. It is expected that most defaults will be from zero income (unemployed) Households.

The plot Total expenditure shows the behaviour of the total Household expenditure as an example of a macroeconomic variable and its evolution under normal and stress conditions.

The purpose of the Unemployment rate plot and its accompanying monitor is to provide a verification tool to check that the implementation of the shock is as intended. They both display the number of zero income (unemployed) Households as a percentage of all Households.

THINGS TO TRY

  • Select a given income distribution and examine the impact of different shocks to the total amount of non-performing loans and Household expenditure.
  • Select a given shock and examine the impact of different income distributions to the total amount of non-performing loans and Household expenditure.
  • Examine the effect that different shocks have to income inequality.
  • Perform the previous analyses with the affordability-test switched on/off.

EXTENDING THE MODEL

The simple model presented here can be extended in various ways such as:

  • Implement a recovery period after the end of the shock period. Examine under which conditions and/or how long will it take to return to the pre-shock levels of non-performing loans and/or Household expenditure.
  • Create a local "economic conditions sentiment" environment where agents experience the shock in a heterogeneous manner and influence their neighbours accordingly.
  • Add a breed for Bank agents so as Households can ask loans from different Banks.
  • Create a more detailed banking sector with variables such as Equity, Profits, Liquid Assets, Risk Weighted Assets etc.
  • Elaborate on Banks' behaviour by adding capital adequacy, liquidity and other regulatory constraints.

RELATED MODELS

This model is inspired by and utilizes parts from the Banking model of Hamill, L. & Gilbert, N. (2016). http://cress.soc.surrey.ac.uk/web/sites/default/files/user-uploads/u1/Chapter%209-Banking.nlogo

CREDITS AND REFERENCES

Built and runs on NetLogo 5.2.

Hamill, L. & Gilbert, N. (2016) Agent-based Modelling in Economics. Wiley: Chapter 9. http://cress.soc.surrey.ac.uk/web/publications/books/agent-based-modelling-economics/more-information

Schuermann, T. (2014). Stress testing banks. International Journal of Forecasting, 30(3), 717-728.

Wilensky, U. (1998). NetLogo Wealth Distribution model. http://ccl.northwestern.edu/netlogo/models/WealthDistribution. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

COPYRIGHT AND LICENSE

Copyright 2016 Georgios Papadopoulos

CC BY-NC-SA 3.0

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0/

Comments and Questions

Some thoughts on the model

This model is the final project for the Introduction to Agent-Based Modeling MOOC, 2016 by Bill Rand in the Complexity Explorer. Being that, it is a work in progress and not a final product. It can be extended in several ways in order to more realistically reflect the behaviour of Households and Banks under normal and stressed economic conditions. However, it indicates that income inequality affects the banking system's exposure to credit risk. Any feedback regarding the model, its implementation or its results would be more than welcome.

Posted almost 8 years ago

Help Income project

Hi, My name is Elder, how do you plan to expand your project? I would help, I'm working with netlogo for the last two years, most of the time with a financial project. my contact is: elder0055@gmail.com Good luck, elder

Posted almost 8 years ago

Click to Run Model

;; ----------------------------------------------------------------
;; Income distribution, inequality and the evolution of credit risk
;; Created by Georgios Papadopoulos as a final project for the Introduction to Agent-Based Modeling MOOC, 2016 by Bill Rand @ Complexity Explorer
;; Contact: gpapad.gr@gmail.com
;; ----------------------------------------------------------------

globals [ annual-savers-rate% monthly-savers-rate minimum-expenditure
   total-deposit-amount total-outstanding-borrowing reserve-ratio 
   total-non-performing-loans gini p10 p20 p30 p40 p50 p60 p70 p80 p90 ]

breed [ households household ]

;; Define households' properties
households-own [
    budget
    has-loan?
    has-deposits?
    deposit-amount
    amount-withdrawn
    amount-needed
    available-this-month
    expenditure-this-month
    monthly-loan-payment
    monthly-loan-rate
    capital-repayment
    borrower-interest-payment
    outstanding-borrowing
    defaulter?
  ]

to setup
    clear-all
    ask patches  [ set pcolor white ]
    
    ;; Create household agents
    create-households num-households [
    set shape "person"
    set color blue
    setxy random-pxcor random-pycor
    set has-loan? false
    set has-deposits? false
    set deposit-amount 0
    set amount-withdrawn 0
    set amount-needed 0
    set available-this-month 0
    set expenditure-this-month 0
    set monthly-loan-payment 0
    set monthly-loan-rate 0
    set capital-repayment 0
    set borrower-interest-payment 0
    set outstanding-borrowing 0
    set defaulter? false
    
    ;; Move turtles to free space
    if any? other turtles-here [ 
     move-to one-of patches with [ not any? turtles-here ] 
     ]
  ]
    
    ;; Assign budgets according to selected distribution (uniform, normal, exponential) following Hamill & Gilbert (2016)
    if income-distribution = "uniform" [
      ask households [ set budget 350 + random ( 1000 + 350 )  ]
    ]
    
    if income-distribution = "normal" [
      ask households [ set budget random-normal 1000 200  ]
    ]
    
    if income-distribution = "exponential" [
      ask households [ set budget 350 + random-exponential ( 1000 - 300 )  ]
    ]
    if income-distribution = "gamma" [
      let average 1000
      let var 80000
      let alpha average * average / var
      let lambda 1 / ( var / average )
      ask households [ set budget random-gamma alpha lambda  ]
    ]
  
    ;; Set minimum expenditure as 80% of minimum budget
    set minimum-expenditure 0.8 * min [ budget ] of households
    
    ;; Set reserve ratio
    ;; (1 - reserve-ratio) * deposits is the available amount for being lent
    set reserve-ratio 0.1 ;; directly in %
    
    ;; Initialize total deposits, loans and non-performing loans
    set total-deposit-amount 0
    set total-outstanding-borrowing 0
    set total-non-performing-loans 0
    
    ;; (income) Inequality measure estimation
    update-gini
    percentile-calc
    
  reset-ticks
end 

to go
  
  ;; The simulation will stop at 3 years (3 * 12 months) after the initiation of the stress scenario
  ;; This timeframe is typical for stress testing exercises
  if ticks >= ( shock-t + 36 ) and shock-t != 0 [ stop ]
  
  set total-deposit-amount sum [ deposit-amount ] of households with [ has-deposits? ]
  set total-outstanding-borrowing sum [ outstanding-borrowing ] of households with [ has-loan? ]
  set total-non-performing-loans sum [ outstanding-borrowing ] of households with [ defaulter? ]
  
  ;; Implement scenario
  ;; ------------------
  
  ;; Mild shock
  if scenario = "mild shock" and ( ticks >= shock-t ) [
    
    ;; The orange-ish color denotes the state of the economic "environment"
    ;; Households will take more conservative actions once in adverse (mild or severe) conditions
    ask patches  [ set pcolor 27 ]
    
    ask households [
      
      ;; Budget decreases by 0.2% each month or by approximately 2.4% per year
      set budget ( 0.998 * budget )
      
      ]
    ;; Unemployment (budget = 0) rises by 2.4% per year (number based on 500 households due to rounding)
    let num-unemployed round ( 0.0015 * num-households )
    ask n-of num-unemployed households with [ budget > 0 ] [ 
      set budget 0
    ]
  ] 
  
  ;; Severe shock
  ;; This scenario reflects the 2010 sovereign debt crisis experienced in Greece (based on Eurostat data)
  if scenario = "severe shock" and ( ticks >= shock-t ) [
    
    ;; The red-ish color denotes the state of the economic "environment"
    ;; Households will take more conservative actions once in adverse (mild or severe) conditions
    ask patches  [ set pcolor 13 ]
    
    ask households [
      
      ;; Budget decreases by 0.5% each month or by approximately 5.8% per year (number based on 500 households due to rounding)
      set budget ( 0.995 * budget )   
    ]
    ;; Unemployment (budget = 0) rises by about 5% per year
    let num-unemployed round ( 0.004 * num-households )
    ask n-of num-unemployed households with [ budget > 0 ] [ 
      set budget 0 
    ]
  ]

  ask households [
    
    set available-this-month budget
    
    ;; Spend on basic needs
    ;; --------------------

    ;; If budget greater than expenditure for basic needs (set as a percentage of minimum budget), then spend from it
    if ( budget >= minimum-expenditure ) [ 
      spend-basic
    ]
    
    ;; If budget less than minimum expenditure, then withdraw from deposits, if any
    if ( budget < minimum-expenditure ) [ 

      ;; Calculate the amount needed to meet basic needs
      set amount-needed ( minimum-expenditure - budget )
      
      ;; If the needed funds are available, withdraw them from deposits and meet basic needs
      if ( amount-needed < deposit-amount ) [ 
        
        withdraw-deposit
        spend-basic
        
      ]
      
      if ( amount-needed > deposit-amount ) [ 
        set color grey ;; To show that this household is economically inactive
      ]
      
    ]
    
    ;; Collect interest on deposits, if any
    if has-deposits? [ 
      collect-interest
    ]
    
    ;; Repay existing loan
    ;; -------------------
    
    ;; If budget exceeds loan payment then repay loan
    if ( available-this-month > monthly-loan-payment ) [ 
      pay-loan       
      set defaulter? false
    ]
    
    ;; If budget is less than monthly loan payment withdraw from deposits, if any
    if ( available-this-month < monthly-loan-payment ) [
      
      ;; Calculate the amount needed to meet the loan payment
      set amount-needed ( monthly-loan-payment - available-this-month )
      
      ;; If the needed funds are available, withdraw them from deposits and pay the loan
      if ( amount-needed < deposit-amount ) [ 
        
        withdraw-deposit
        pay-loan
        
        set color orange ;; To show that this household uses deposits to meet its needs
        set defaulter? false
        
      ]

      ;; If the needed funds are not available, declare household as a defaulter
      if ( amount-needed > deposit-amount ) [
        set defaulter? true
        set color red
      ]
      
    ]
    
    ;; Ask for a new loan
    ;; ------------------
    
    ;; Flip a coin to whether or not ask for a loan
    if random-float 1.0 < 0.5 and not has-loan? and not defaulter? [
      ask-for-loan
      ]
    
    ;; Decide action with remaining budget
    ;; -----------------------------------
    
    ;; Flip a coin to decide whether to spend or deposit the remaining budget, if any
    if available-this-month > 0 [ 
      ifelse random-float 1.0 < 0.5 [ deposit ] [ spend-extra ]
    ]
    
    ;; Spend some of the deposits (thus simulating e.g. some luxury needs, buys etc)
    ;; If the economic conditions are adverse then the overall amount spent on luxuries is lower
    ;; -----------------------------------------------------------------------------------------
    
    ;; Normal conditions
    if pcolor = white [ 
      if random-float 1.0 < 0.5 [
        let deposit%-to-spend random-float 0.3
        set expenditure-this-month ( deposit%-to-spend * deposit-amount )
        set deposit-amount ( 1 - deposit%-to-spend ) * deposit-amount
        ]
      ]
      
    ;; Adverse conditions
    if pcolor != white [
      if random-float 1.0 < 0.5 [
        let deposit%-to-spend random-float 0.1
        set expenditure-this-month deposit%-to-spend * deposit-amount
        set deposit-amount ( 1 - deposit%-to-spend ) * deposit-amount
        ]
      ]
    ]
  
  ;; For househodlds that have repaid their loan
  ask households with [ outstanding-borrowing <= 0 ] [
     set outstanding-borrowing 0
     set has-loan? false 
     set monthly-loan-payment 0
     set monthly-loan-rate 0
     set capital-repayment 0
     set borrower-interest-payment 0
     set color blue 
  ]  
    
    ;; (income) Inequality measure estimation
    update-gini
    percentile-calc
    
  tick
end 

;; ------------------
;;     PROCEDURES
;; ------------------

to spend-basic
  
  set expenditure-this-month minimum-expenditure
  set available-this-month ( available-this-month - minimum-expenditure )
end 

to deposit
  
  set deposit-amount ( deposit-amount + available-this-month )
  set available-this-month 0
  set has-deposits? true
end 

to collect-interest
  
  let savers-interest-payment 0
  
  set annual-savers-rate% 1.5
  set monthly-savers-rate annual-savers-rate% / ( 12 * 100 )

  set savers-interest-payment deposit-amount * monthly-savers-rate
  set deposit-amount ( deposit-amount + savers-interest-payment )  
end 

to spend-extra
  
  set expenditure-this-month ( expenditure-this-month + available-this-month )
  set available-this-month 0
end 

to ask-for-loan
  
  let annual-loan-rate% 0
  let loan-term-months 0
  let monthly-payment 0

  let loan-size 5000 + random 20000

  ifelse loan-size <= 10000 [
    set annual-loan-rate% 5
    set monthly-loan-rate ( annual-loan-rate% / 12 ) / 100
    set loan-term-months 60 ;; 5 years
    ]
  
  [
    set annual-loan-rate% 3
    set monthly-loan-rate ( annual-loan-rate% / 12 ) / 100
    set loan-term-months 120 ;; 10 years
    ]
  
  set monthly-payment ( loan-size * monthly-loan-rate ) / (1 - (( 1 + monthly-loan-rate) ^ ( - loan-term-months )))
  
  ;; Reserve ratio requirement must be met
  if ( total-outstanding-borrowing + loan-size ) <= ( 1 - reserve-ratio ) * total-deposit-amount [
   
    ;; Affordabiity test for loans. In its simplest form, budget should exceed monthly-payment + amount for basic needs
    ifelse affordability-test [
      if not has-loan? and ( budget-payment-ratio * budget ) >= ( monthly-payment + minimum-expenditure ) [
        set has-loan? true
        set outstanding-borrowing loan-size
        set monthly-loan-payment monthly-payment
        set deposit-amount deposit-amount + outstanding-borrowing
        set has-deposits? true
        set color green
      ]    
   ]
    [
    if not has-loan? [ 
      set has-loan? true
      set outstanding-borrowing loan-size
      set monthly-loan-payment monthly-payment
      set deposit-amount deposit-amount + outstanding-borrowing
      set has-deposits? true
      set color green
     ]
   ] 
  ]
end 

to pay-loan

  if outstanding-borrowing > 0 and not defaulter? [
    set borrower-interest-payment ( outstanding-borrowing * monthly-loan-rate )
    set capital-repayment ( monthly-loan-payment - borrower-interest-payment )
    set outstanding-borrowing ( outstanding-borrowing - capital-repayment )
    set available-this-month ( available-this-month - monthly-loan-payment )
    set expenditure-this-month ( expenditure-this-month + monthly-loan-payment )
    ]
end 

to withdraw-deposit
  
  set amount-withdrawn amount-needed
  set deposit-amount ( deposit-amount - amount-withdrawn )
  set available-this-month ( available-this-month + amount-withdrawn )
end 

to update-gini
  
  let sorted-income sort [ budget ] of households
  let min-income min [ budget ] of households
  let total-income sum sorted-income
  let income-sum-so-far 0
  let index 0
  set gini 0

  if total-income = 0 [set gini 0]
  if min-income < 0 [
    set total-income total-income - num-households * min-income
    set index 0
    repeat num-households [
      set sorted-income replace-item index sorted-income ( item index sorted-income - min-income )
      set index index + 1
    ]
  ]
  set index 0
  if total-income > 0
  [
    repeat num-households [
      set income-sum-so-far ( income-sum-so-far + item index sorted-income )
      set index (index + 1)
      set gini gini + (index / num-households) - (income-sum-so-far / total-income )
    ]
  ]
  set gini (gini / num-households ) / 0.5
end 

to percentile-calc
  
  let sorted-income sort [ budget ] of households
  set p10 item ( round ( 0.1 * num-households ) ) sorted-income
  set p20 item ( round ( 0.2 * num-households ) ) sorted-income
  set p30 item ( round ( 0.3 * num-households ) ) sorted-income
  set p40 item ( round ( 0.4 * num-households ) ) sorted-income
  set p50 item ( round ( 0.5 * num-households ) ) sorted-income
  set p60 item ( round ( 0.6 * num-households ) ) sorted-income
  set p70 item ( round ( 0.7 * num-households ) ) sorted-income
  set p80 item ( round ( 0.8 * num-households ) ) sorted-income
end 

There is only one version of this model, created almost 8 years ago by Georgios Papadopoulos.

Attached files

File Type Description Last updated
Income distribution inequality and credit risk.png preview Preview for 'Income distribution inequality and credit risk' almost 8 years ago, by Georgios Papadopoulos Download

This model does not have any ancestors.

This model does not have any descendants.