Gloria Allione Federica Berti Tomislav Simala

Computer Science and Simulation for Economics

Project work on

"Real estate and mortgage market."


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: real_estate_and_mortgage_market.nlogo


The model reproduces the real-estate market combined with the mortgage system.
Given a set of parameters, we can observe how the mean house price evolves conditioned to the presence of banks borrowing money to buyers who don't have enough cash. If the debitor can't afford the periodic mortgage repayment, the ownership of the house is transferred to the bank which tries to sell it in order to compensate the loss due to the debitor's bankrupt.
The model is a simplified version of what happened in the reality in the subprime crisis started in late 2006: because of the housing bubble, banks lent money to risky and risky borrowers believing that, even in case of the debitor's default, the price of his house (given as collateral to the loan) would be so high to compensate any loss. They didn't take into account the possibility of a collapse in real-estate price.


At the beginning every buyer has an amount of cash randomly chosen in an interval and every seller owns a house whose price is randomly chosen in an interval as well. Both agents are divided in two groups: the rich ones, whose capital is above the mean, and the poor ones, whose capital is below the mean.

When a buyer, who moves in the world, meets a seller, who stands on a particular patch, the price negotiation starts. The buyer always proposes a price below the last one the house has been sold; on the contrary the seller always offer a price above this value. If they are both rich or both poor, the final price is a random value between two offers; if the buyer is poor and the seller is rich, the final price is the one proposed by the buyer because the seller is less sensitive to changes in price and viceversa in the case of rich buyer and poor seller. If it has been a long time that the buyer doesn't find any house to purchase, he increases his price offer.

If the mortgage system is inactive, only buyers who have as much cash as the house price can buy it. If the mortgage system works, they just need the money necessary to pay the deposit (that is a percentage of the price) and they can take out a mortgage. They don't like better one bank than the other one: they just go to the first they find available.

Every month agents can receive a salary and consume a share of their capital. Agents who borrowed money from the bank must also pay the mortgage repayments. If they don't have enough cash to afford it they go bankrupt and the bank becomes the house owner.

The bank needs to sell the house as soon as possible in order to get liquidity: it reduces gradually the house price until it succeeds to trade it. When the house has been sold, the default debitor is removed from the system.

The bank can issue mortgages until it has enough cash to finance them. When the net capital of the bank goes below a certain percentage limit, it goes bankrupt and all its activities stop, but it can still receive payments from debitors who took out a mortgage before its default.


You can decide the parameters of your model by moving the following sliders:

it's the number of sellers

it's the number of buyers

the amount of cash given to each buyer is randomly chosen between this value and twice more

the price of each house is randomly chosen between this value and twice mroe

after this number of ticks has passed without the buyer has found an available house, he increases his price offer

the seller always offers the last price multiplied by this number

the buyer always offers the last price multiplied by this number

if the mortgage system works, the buyer pays by his own this share of the price and borrows the rest from the bank

if its net capital goes below this percentage (calculated on the initial capital) the bank goes bankrupt

it's the interest rate debitors have to pay in mortgage repayments

it's the initial capital of banks

it's the percentage which the bank multiplicates the house price by every 100 ticks

the salary is calculated as this percentage on the initial capital of agents

the consumption is calculated as this percentage on the current capital of agent

Sliders can be moved even when the model is running.

Once you fixed the parameters, you can prepare your simulation by clicking the button "Setup": it resets everything to the beginning values and creates buyers, sellers and banks.

You can decide whether bank can issue mortgages or can't by the switch "mortgage_on"

The model starts running by clicking the button "go" and it keeps on going until this button is pressed.

There are two more buttons:

get new buyers:
it creates new buyers using the current parameters

get new liquidity for banks:
it multiplies the current capital of banks by 1.5

There are several monitors between sliders and monitors:

number of payed mortgages:
it's the number of mortgages fully repaid

number of defaults agents:
it's the number of debitors gone bankrupt

it's the average cash of buyers

it's the average house price

month, negotiation, mortgages:
it's the respective number of months (1 month is equivalent to 300 ticks), negotiations and issued mortgages.

There are three graphs:

mean house price:
the red line shows the initial average price of houses; the black one shows the current average price and the blue one shows the number of defaults of borrowers (multiplied by 1% of house price basis because of a scale problem)

net capital:
the red line shows the default threshold; the other ones show the current net capital for each bank

defaults per bank:
each line shows the number of failed debitors per bank

Last two graphs makes the program go slower so you can choose whether building them or not by the switch other_graphs_on


You can easily see from the graph "mean house price" that the house price decreases sharply when one of borrowers' defaults happen. It's also interesting to notice from the other two graphs that it's not always the case the bank registering the higher number of debitors' defaults is the first one to fail.


It's very interesting to notice how changing parameters, even during the simulation, can affect the results. In particular, we point out that a higher percentage a deposit doesn't always protects better the banks from debitors' defaults.


The model doesn't allow banks to transfer mortgages or their risks one each other: it would be interesting let banks interact and issue securities related to mortgages (MBS). Moreover, it could be introduced the figure of a central bank lending money to banks themselves.


Modelli per la complessitÓ - La simulazione ad agenti in economia, a cura di Pietro Terna, Riccardo Boero, Matteo Morini e Michele Sonnessa, ed. il Mulino