UDST / developer

Redesigned UrbanSim developer/pro forma models
https://udst.github.io/developer/
BSD 3-Clause "New" or "Revised" License
3 stars 5 forks source link

Design Proposal: Absorption Feedback into Feasibility #43

Closed pksohn closed 7 years ago

pksohn commented 7 years ago

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):

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:

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:

building_revenue = (building_bulks *
                    (1 - parking_sqft_ratio) *
                    self.building_efficiency *
                    df.weighted_rent.values /
                    self.cap_rate)

The simplest intervention is to subtract some amount from this:

building_revenue = (building_bulks *
                    (1 - parking_sqft_ratio) *
                    self.building_efficiency *
                    df.weighted_rent.values /
                    self.cap_rate)

# calculate absorption discount

building_revenue -= absorption_discount

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_discount = self.cap_rate * building_revenue * 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.

pksohn commented 7 years ago

Closing, moved to wiki because this is a larger, nested design project. https://github.com/urbansim/developer/wiki/Market-research-model