The applet requires Java 1.4.1 or higher. It will not run on Windows 95 or Mac OS 8 or 9. Mac users must have OS X 10.2.6 or higher and use a browser that supports Java 1.4. (Safari works, IE does not. Mac OS X comes with Safari. Open Safari and set it as your default web browser under Safari/Preferences/General.) On other operating systems, you may obtain the latest Java plugin from Sun's Java site.
powered by NetLogo
view/download model file: microcredit_in_a_district.nlogo
Our model is an attempt of simulating the activity of a microcredit institution in a little economy. The microcredit represent a way of getting a loan for those persons who are in a difficult economic situation. The loan allows them to start a new little activity that can get them out poverty.
Our model represents an industrialized district (for the data we have looked to Ivrea which is a little city in the north of Italy). Consequently the microcredit loans are bigger than the usual microcredit loans in the third world and are given to those persons who don’t have very high guarantees and can’t get a loan from a traditional bank.
Our aim is to monitor the benefits that the institution could give to the environment, even during crisis periods.
The bank in the model is represented by the orange house, while the microcredit institution is the yellow house. Peoples are placed in the space on the basis of their breed, we have the managers on the top, then the workers (divided in middle managers and normal workers) and, on the bottom the poor. If a manager get a loan (from the bank) he becomes an entrepreneurs (with white color until he is a borrower and purple when he has finished to repay his debt) and he moves in a topper place in the space. Contemporaneously he hired some poor (if there are any) who become recruits with orange color and move in a topper place.
The same thing happens when a lower class worker get a loan from the microcredit institution. In this case the worker becomes a small entrepreneurs (s_entrepreneur) and he can hires one (or zero, it depends on the relative switch) poor who become a yellow recruits.
Both borrowers own a certain percentage (lower for the small entrepreneurs) of not being able to repay their debt.
We can also monitor the environment in the case of a financial crisis which brings negative income to the agents.
Start the simulation by clicking the button “setup”. After clicking “go” the turtles start interacting in the way explained above. They keep on doing so until the button “go” is clicked again. If you want to see what happens in one single click you can press “step” instead of “go”.
Button: setup
It cleans the environment by resetting everything to the initial values.
Button: go
It runs the model until you press it again.
Button: step
It runs the model for one cycle.
Button: crisis
It introduce the financial crisis in the environment.
Button: stop_crisis
It ends the crisis period.
Switch: microcredit
The microcredit is active only if it is “on”.
Sliders: n_managers – n_workers – n_poors
By moving this sliders you can choose the percentage of poor people in the environment.
Sliders: n_hired_by_entrepreneurs – n_hired_by_s_entrepreneurs.
You can choose the number of poor who can be hired respectively by the entrepreneur (between 1 and 5) and by the small entrepreneur (0 or 1).
Sliders: n_installments_bank_loan – n_installments_microcredit_loan
You can choose the number of installments respectively for the bank loan and the microcredit loan.
Sliders: bank_interest_rate – microcredit_interest_rate
You can change the interest rate for both the kind of loans.
Sliders: percentage_m – percentage_w
They represent the probability of obtaining a loan at each tick for the managers and the workers.
Monitors: poor – managers – workers – middle_managments
They reports the number of agents who own those breeds in the environment.
Monitors: recruits_by_entrepreneurs – recruits_s_entrepreneurs
They display the number of agent hired by the entrepreneurs and by the small entrepreneurs.
Monitors: entrepreneurs – s_entrepreneurs
They shows the number of entrepreneurs and of small entrepreneurs.
Monitor: recruits_fired
It reports the number of poor who got a job and then loose it.
Monitors: entrepreneurs_failed – s_entrepreneurs_failed
They display the number of entrepreneurs who are failed but are not completely poor (indeed they have brown color and they are placed a little bit topper than the normal poor).
Monitor: poors_dead
It reports the number of poor who aren’t able to get out from their situation for a long period, and so they are no more active in the model.
Plot: Total wealth
It shows the wealth of those agents who are involved in the new enterprises.
Plot: failure
It shows the entrepreneurs and small entrepreneurs who are failed in the period in which we run the model.
Plot: poors_population
It shows the variation in the number of poor during the period.
It’s interesting to look at the differences in the “poor_population” plot when the microcredit is either on or off. It’s easy to see that it is steeper when the microcredit is active.It is the easiest way to understand the importance that this institution can have in defeating the unemployment rate.
It is interesting to see what happens when there is a crisis of a certain amount of year in the model, and you can notice the difference in the environment between the case with the microcredit active and the case without it.
Moreover it’s interesting to change the percentage of poor.
Microcredit: a Micro Way for a Macro Challenge.
www.comune.ivrea.to.it
www.bancaditalia.it
www.pie.camcom.it
www.odmconsulting.com
globals [f_crisis?] breed [managers manager] breed [workers worker] breed [poors poor] breed [bank] breed [microcredit_bank] breed [entrepreneurs entrepreneur] breed [s_entrepreneurs s_entrepreneur] breed [recruits recruit] managers-own [wealth job? net_income borrower? ] workers-own [wealth job? net_income borrower? ] poors-own [wealth job? net_income pay? fire? ] bank-own [capital liquidity? ] microcredit_bank-own [capital liquidity? ] entrepreneurs-own [job? wealth borrower? stop_hiring? repayments pay? fire? ] s_entrepreneurs-own [ job? wealth borrower? stop_hiring? repayments pay? fire? ] recruits-own [wealth job? ] ;################################################################### SETUP ################################################################### to setup ca setup-turtles set f_crisis? false end to setup-turtles create-bank 1 ask bank [setxy 1 1 set shape "house" set color orange set size 3 set capital 1500000 ] create-microcredit_bank 1 ask microcredit_bank [setxy 49 1 set shape "house" set color yellow set size 3 set capital 50000 ] create-managers n_managers ask managers [setxy random-pxcor 43 set shape "person" set color green set wealth (5200 + random 520) set job? true set borrower? false ] create-workers n_workers ask workers [set shape "person" set job? true set borrower? false ifelse random 100 < 66 [ set wealth (1600 + random 160) set color cyan setxy random-pxcor 25] [set wealth (2900 + random 290) set color blue setxy random-pxcor 31] ] create-poors n_poors ask poors [setxy random-pxcor 7 set shape "person" set color red set wealth (1000 + random 200) set job? false ] end ;################################################################### GO ################################################################### to go tick earn ask managers [income] ask workers [income] ask poors [income] borrow microcredit produce hire pay fire probability_to_pay repay_micro repay_bank stop_repay_micro stop_repay_bank change_status stop_loan dead do_plots end to earn if f_crisis? = false [ ask managers [ set net_income (3000 + random 500)] ask workers [ ifelse color = cyan [ set net_income (800 - random 850)] [set net_income (1400 + random 400)]] ask poors [ set net_income (0 - random 10)] ] end to income set wealth (wealth + net_income - (net_income / 2)) end ;################################################################### BORROW ################################################################### to borrow if f_crisis? = false[ ask bank [if liquidity? = true and count managers > 0 [ask one-of managers [ if random 100.0 < percentage_m and borrower? = false [ set wealth (wealth + 250000) set borrower? true set color white set breed entrepreneurs set shape "person" setxy random-pxcor 49 set stop_hiring? false set fire? false set pay? true ask bank [ set capital (capital - 250000)] ]]]] ] end ;################################################################### MICROCREDIT ################################################################### to microcredit if f_crisis? = false [ if activate_microcrocredit[ ask microcredit_bank [if liquidity? = true and count workers > 0 [ask one-of workers [ if random 100 < percentage_w and borrower? = false and color = cyan [ set wealth (wealth + 2500) set borrower? true set color white set breed s_entrepreneurs set shape "person" setxy random-pxcor 37 set stop_hiring? false set fire? false set pay? true ask microcredit_bank [ set capital (capital - 2500) ] ]]]]]] end ;################################################################### PRODUCE ################################################################### to produce ifelse f_crisis? = false[ ask entrepreneurs [ set wealth (wealth + random 8000)] ask s_entrepreneurs [ set wealth (wealth + random 2500)]] [ask entrepreneurs [ set wealth (wealth - random 3000)] ask s_entrepreneurs [ set wealth (wealth - random 500)]] end ;################################################################### HIRE ################################################################### to hire ask entrepreneurs [ if f_crisis? = false and stop_hiring? = false [if (count poors > n_hired_by_entrepreneurs) [employ_m] ]] ask s_entrepreneurs [ if f_crisis? = false and stop_hiring? = false [if (count poors > n_hired_by_s_entrepreneurs) [employ_w] ]] end to employ_m if count poors with [shape = "person"] > n_hired_by_entrepreneurs[ let hired 0 set hired n-of n_hired_by_entrepreneurs poors with [shape = "person"] if hired != nobody [ ask hired [ set job? true set breed recruits set shape "person" set color orange setxy random-pxcor 19 ]] ask entrepreneurs [ set stop_hiring? true]] end to employ_w if count poors with [shape = "person"] > n_hired_by_s_entrepreneurs[ let hired 0 set hired n-of n_hired_by_s_entrepreneurs poors with [shape = "person"] if hired != nobody [ ask hired [ set job? true set breed recruits set shape "person" set color yellow setxy random-pxcor 13 ]] ask s_entrepreneurs [ set stop_hiring? true]] end to pay if (count recruits with [color = orange] > 0) [ ask entrepreneurs [ set wealth (wealth - 1300 * n_hired_by_entrepreneurs)] ask recruits with [color = orange] [ ifelse job? = true [ set wealth (wealth + 650 - random 700 - ((650 - random 700) / 2))] [set wealth (wealth - random 200)]] ] if (count recruits with [color = yellow] > 0) [ ask s_entrepreneurs [ set wealth (wealth - 1000 * n_hired_by_s_entrepreneurs)] ask recruits with [color = yellow] [ ifelse job? = true [ set wealth (wealth + 500 - random 550 - ((500 - random 550) / 2))] [set wealth (wealth - random 150)] ] ] end ;################################################################### FIRE ################################################################### to fire if count recruits with [color = yellow] > 0[ ask s_entrepreneurs with [fire? = false] [ if wealth <= ((2500 + (microcredit_interest_rate * 2500)) * 2) [set wealth (wealth + 1000 * n_hired_by_s_entrepreneurs) set fire? true ask n-of n_hired_by_s_entrepreneurs recruits with [color = yellow] [ set job? false]]]] if count recruits with [color = yellow] > 0 [ ask poors with [color = brown + 1 and fire? = false and pay? = false] [set wealth (wealth + 1000 * n_hired_by_s_entrepreneurs) set fire? true ask n-of n_hired_by_s_entrepreneurs recruits with [color = yellow] [ set job? false]]] if count recruits with [color = orange] > 0[ ask entrepreneurs with [fire? = false] [ if wealth <= ((250000 + (bank_interest_rate * 250000)) * 2 / 3) [set wealth (wealth + 1300 * n_hired_by_entrepreneurs) set fire? true ask n-of n_hired_by_entrepreneurs recruits with [color = orange] [ set job? false]]]] if count recruits with [color = orange] > 0 [ ask poors with [color = brown - 1 and fire? = false and pay? = false] [set wealth (wealth + 1300 * n_hired_by_entrepreneurs) set fire? true ask n-of n_hired_by_entrepreneurs recruits with [color = orange] [ set job? false]]] end ;################################################################### REPAY ################################################################### to probability_to_pay if count entrepreneurs > 0[ ask one-of entrepreneurs[ if borrower? = true and random 1000 < 8 [set pay? false]]] if count s_entrepreneurs > 0[ ask one-of s_entrepreneurs[ if borrower? = true and random 1000 < 5 [set pay? false]]] end to repay_micro ask s_entrepreneurs [ if borrower? = true and pay? = true [ set wealth (wealth - ((2500 / n_installments_microcredit_loan) + (microcredit_interest_rate / n_installments_microcredit_loan) * 2500)) set repayments (repayments + ((2500 / n_installments_microcredit_loan) + (microcredit_interest_rate / n_installments_microcredit_loan) * 2500)) ask microcredit_bank [ set capital (capital + ((2500 / n_installments_microcredit_loan) + (microcredit_interest_rate / n_installments_microcredit_loan) * 2500))]]] end to repay_bank ask entrepreneurs [ if borrower? = true and pay? = true [ set wealth (wealth - ((250000 / n_installments_bank_loan) + (bank_interest_rate / n_installments_bank_loan) * 250000)) set repayments (repayments + ((250000 / n_installments_bank_loan) + (bank_interest_rate / n_installments_bank_loan) * 250000)) ask bank [set capital (capital + ((250000 / n_installments_bank_loan) + (bank_interest_rate / n_installments_bank_loan) * 250000))]]] end to stop_repay_micro let c 2500 + (microcredit_interest_rate * 2500) ask s_entrepreneurs[ if borrower? = true and repayments >= c and wealth >= ( c - repayments) [ set borrower? false set color gray set repayments 0 stop (repay_micro)]] end to stop_repay_bank let c 250000 + (bank_interest_rate * 250000) ask entrepreneurs[ if borrower? = true and repayments >= c and wealth >= ( c - repayments) [ set borrower? false set color violet set repayments 0 stop (repay_bank)]] end ;################################################################### CRISIS ################################################################### to crisis set f_crisis? true if f_crisis? = true[ ask managers[ set net_income random -1000] ask workers [ ifelse color = cyan [ set net_income random -250] [set net_income random -450]] ] end to stop_crisis set f_crisis? false end ;################################################################### CHANGE-STATUS ################################################################### to change_status ask poors [ if (wealth > 1300) and color = red[ set breed workers set shape "person" setxy random-pxcor 25 set color cyan set net_income (800 - random 850)]] ask one-of workers[if random 100 < 10 and color = blue and wealth >= 100000 [ set breed managers set shape "person" set color green setxy random-pxcor 43 set net_income (3000 + random 500)]] ask workers [if (wealth < 1300)[ set breed poors set shape "person" setxy random-pxcor 7 set color red set net_income (0 - random 10) set job? false]] ask managers [ if (wealth < 1300)[ set breed poors set shape "person" setxy random-pxcor 7 set color red set net_income (0 - random 10) set job? false]] ask s_entrepreneurs [ if (wealth < 1300)[ set breed poors set shape "person" setxy random-pxcor 10 set color gray + 2 set net_income (0 - random 10) set job? false]] ask s_entrepreneurs [ if pay? = false[ set breed poors set shape "person" setxy random-pxcor 10 set color brown + 1 set net_income (0 - random 10) set job? false]] ask entrepreneurs [ if (wealth < 1300)[ set breed poors set shape "person" setxy random-pxcor 10 set color violet + 2 set net_income (0 - random 10) set job? false]] ask entrepreneurs [ if pay? = false[ set breed poors set shape "person" setxy random-pxcor 10 set color brown - 1 set net_income (0 - random 10) set job? false]] ask recruits[ if job? = false [ set breed poors set shape "person" setxy random-pxcor 9 set color red + 2 set net_income (0 - random 10)]] end ;################################################################### STOP-LOAN ################################################################### to stop_loan ask bank [ ifelse capital > 250000 [set liquidity? true] [set liquidity? false]] ask microcredit_bank [ifelse capital > 0 [set liquidity? true] [set liquidity? false]] end ;################################################################### DEAD ################################################################### to dead ask poors with [wealth <= 0][ set shape "x" setxy 0 4] end ;################################################################### PLOTS ################################################################### to do_plots set-current-plot "failure" set-current-plot-pen "entrepreneurs_failed" plot count poors with [color = brown - 1] set-current-plot-pen "s_entrepreneurs_failed" plot count poors with [color = brown + 1] set-current-plot-pen "entrepreneurs_failed_by_crisis" plot count poors with [color = violet + 2] set-current-plot-pen "s_entrepreneurs_failed_by_crisis" plot count poors with [color = gray + 2] set-current-plot "Total Wealth" set-current-plot-pen "recruits" plot sum [wealth] of recruits with [color = orange] set-current-plot-pen "s_recruits" plot sum [wealth] of recruits with [color = yellow] set-current-plot-pen "entrepreneurs" plot sum [wealth] of entrepreneurs set-current-plot-pen "s_entrepreneurs" plot sum [wealth] of s_entrepreneurs set-current-plot "poors_population" set-current-plot-pen "poors" plot count poors end