DRAFT Model feedback loop: housing absorption to feasibility
User stories
As a modeler, I want information about housing supply absorption in a given year to factor into the calculation of feasibility for potential developments in the same simulation year.
As a modeler, I want to be able to control the extent to which housing supply affects the calculation of feasibility for potential developments in the same simulation year.
Basic mechanics
Current situation
The important output of this system is how many new developments are built in a given simulation year. Currently, this is determined through two models:
The Pro Forma step calculates profitability for parcels. The primary endogenous inputs are 1) the current rents of the parcels, and 2) the typical rents for each use for each parcel. This does not currently use information about housing supply other than indirectly through prices.
The developer step selects parcels for development. The way this currently works is:
Parcels are assigned a development probability based on results from pro forma
A target number of units to build is assigned. This is either an input, or calculated using the number of existing agents, number of existing units, and a target vacancy.
Enough buildings are built to match that unit target.
Problem with the current situation
In real life, how much development happens in a given year is more influenced by individual developers' decision making (i.e. profitability) than is reflected in the model. There are indeed development caps and other regulations that influence how much development happens, but a supply/demand equilibrium really should be the primary mechanism. And this shortcoming of the model is because there exists no feedback loop that provides information about building supply absorption back into the feasibility calculation.
Proposed solution
The basic steps we need are:
Calculate absorption
Add absorption to the feasibility step
Revise developer process to select developments using a different metric
Detailed mechanics
Calculate absorption
What is absorption? (from Real Estate Market Analysis, page 20):
The pace at which the proposed project will be able to lease or sell space. Depending on the property type, the absorption rate could be expressed as:
the number of apartments that will be leased or homes that will be sold each month;
the length of time it will take to sell building sites in an industrial park; or
the number of months until an office building or shopping center is fully leased.
A useful set of absorption related metrics for urbansim would be:
Square footage absorbed for every simulation year, for every use. Save the absolute numbers (e.g. 50000 sq. ft. absorbed out of 100000 new and previously vacant) and the percentage (50% absorption).
(Derived from above) Average % absorption for the last X (5?) years.
(Derived from above) Rate of change in % or absolute absorption for the last X years.
As noted above, it will be useful to disaggregate absorption into uses: residential, office, industrial, etc. Residential and non-residential absorption will have to be calculated separately at the very least. The time period over which absorption is calculated is also important: this should be user-specified, but a good range would be 3-5 years.
Square footage is an easier unit than "units" or "job spaces" for now, since that's what the developer and pro forma models use.
Implementation, for every simulation year:
After location choice step:
Calculate vacant square footage for this year (for each subgroup)
If last year's vacancy + new building information exists, calculate absorption
After developer step: calculate new square footage for this year (for each subgroup)
Save absorption for every simulation year. Feasibility step can decide which records to use.
Add absorption to the feasibility step
Absorption for all previous simulation years is now an input. The current calculation of projected building revenue is as follows:
How absorption_discount is generated from the absorption table can be an injected function, similar to the "profit to percentage" function in the developer model. One simple calculation could be:
Treat the % not absorbed as the number of years it will take to fill the square footage. (absorption_years)
Discount that number of years of revenue (requires using the cap rate):
Revise developer process to select developments using a different metric
The number of developments that get built are determined in the developer model.
Currently, the rule is:
If the number of target units (derived from target vacancy) is 0, don't build anything
If the number of target units is greater than the number of profitable buildings, build everything
If the number of target units is > 0 and < the number of profitable buildings, select buildings by probability (based on profitability)
New logic should look like this:
If no development caps: build everything above a certain minimum profitability
If development caps: for each cap,
Select buildings in relevant geography/subtype based on probability
Next steps
The absorption calculation should be built out into a more generalized market analysis module that includes other calculations, and which interfaces with feasibility in different ways.
DRAFT Model feedback loop: housing absorption to feasibility
User stories
Basic mechanics
Current situation
The important output of this system is how many new developments are built in a given simulation year. Currently, this is determined through two models:
Problem with the current situation
In real life, how much development happens in a given year is more influenced by individual developers' decision making (i.e. profitability) than is reflected in the model. There are indeed development caps and other regulations that influence how much development happens, but a supply/demand equilibrium really should be the primary mechanism. And this shortcoming of the model is because there exists no feedback loop that provides information about building supply absorption back into the feasibility calculation.
Proposed solution
The basic steps we need are:
Detailed mechanics
Calculate absorption
What is absorption? (from Real Estate Market Analysis, page 20):
A useful set of absorption related metrics for urbansim would be:
As noted above, it will be useful to disaggregate absorption into uses: residential, office, industrial, etc. Residential and non-residential absorption will have to be calculated separately at the very least. The time period over which absorption is calculated is also important: this should be user-specified, but a good range would be 3-5 years.
Square footage is an easier unit than "units" or "job spaces" for now, since that's what the developer and pro forma models use.
Implementation, for every simulation year:
Save absorption for every simulation year. Feasibility step can decide which records to use.
Add absorption to the feasibility step
Absorption for all previous simulation years is now an input. The current calculation of projected building revenue is as follows:
The simplest intervention is to subtract some amount from this:
How
absorption_discount
is generated from the absorption table can be an injected function, similar to the "profit to percentage" function in the developer model. One simple calculation could be:absorption_years
)Revise developer process to select developments using a different metric
The number of developments that get built are determined in the developer model. Currently, the rule is:
New logic should look like this:
Next steps
The absorption calculation should be built out into a more generalized market analysis module that includes other calculations, and which interfaces with feasibility in different ways.