Code Monkey home page Code Monkey logo

model-condo-avm's Introduction

Table of Contents

⚠️ NOTE ⚠️

The condominium model (this repo) is nearly identical to the residential (single/multi-family) model, with a few key differences. Please read the documentation for the residential model first.

Prior Models

This repository contains code, data, and documentation for the Cook County Assessor’s condominium reassessment model. Information about prior year models can be found at the following links:

Year(s) Triad(s) Method Language / Framework Link
2015 City N/A SPSS Link
2018 City N/A N/A Not available. Values provided by vendor
2019 North Linear regression or GBM model per township R (Base) Link
2020 South Linear regression or GBM model per township R (Base) Link
2021 City County-wide LightGBM model R (Tidyverse / Tidymodels) Link
2022 North County-wide LightGBM model R (Tidyverse / Tidymodels) Link
2023 South County-wide LightGBM model R (Tidyverse / Tidymodels) Link
2024 City County-wide LightGBM model R (Tidyverse / Tidymodels) Link

Model Overview

The duty of the Cook County Assessor’s Office is to value property in a fair, accurate, and transparent way. The Assessor is committed to transparency throughout the assessment process. As such, this document contains:

The repository itself contains the code for the Automated Valuation Model (AVM) used to generate initial assessed values for all condominium properties in Cook County. This system is effectively an advanced machine learning model (hereafter referred to as “the model”). It uses previous sales to generate estimated sale values (assessments) for all properties.

Differences Compared to the Residential Model

The Cook County Assessor’s Office has started to track a limited number of characteristics (building-level square footage, unit-level square footage, bedrooms, and bathrooms) for condominiums, but the data we have varies in both the characteristics available and their completeness between triads. Staffing limitations have forced the office to prioritize smaller condo buildings less likely to have recent unit sales in certain parts of the county.

Like most assessors nationwide, our office staff cannot enter buildings to observe property characteristics. For condos, this means we cannot observe amenities, quality, or any other interior characteristics which must instead be gathered from listings and a number of additional third-party sources.

The only complete information our office currently has about individual condominium units is their age, location, sale date/price, and percentage of ownership. This makes modeling condos particularly challenging, as the number of usable features is quite small. Fortunately, condos have two qualities which make modeling a bit easier:

  1. Condos are more homogeneous than single/multi-family properties, i.e. the range of potential condo sale prices is much narrower.
  2. Condo are pre-grouped into clusters of like units (buildings), and units within the same building usually have similar sale prices.

We leverage these qualities to produce what we call strata, a feature unique to the condo model. See Condo Strata for more information about how strata is used and calculated.

Features Used

Because our individual condo unit characteristics are sparse and incomplete, we primarily must rely on aggregate geospatial features, economic features, strata, and time of sale to determine condo assessed values. The features in the table below are the ones used in the 2024 assessment model.

Feature Name Category Type Notes Unique to Condo Model
Condominium Building Year Built Characteristic numeric Year the property was constructed X
Total Condominium Building Livable Parcels Characteristic numeric Count of livable 14-digit PINs (AKA condo units) X
Total Condominium Building Non-Livable Parcels Characteristic numeric Count of non-livable 14-digit PINs X
Condominium Building Is Mixed Use Characteristic logical The 10-digit PIN (building) contains a 14-digit PIN that is neither class 299 nor 399 X
Total Condominium Building Square Footage Characteristic numeric Square footage of the building (PIN10) containing this unit X
Building Square Footage Characteristic numeric Square footage of the building (PIN10) containing this unit X
Condominium Unit Square Footage Characteristic numeric Square footage of the condominium unit associated with this PIN X
Unit Square Footage Characteristic numeric Square footage of the condominium unit associated with this PIN X
Condominium Unit Bedrooms Characteristic numeric Number of bedrooms in the building X
Bedrooms Characteristic numeric Number of bedrooms in the building X
Condominium Unit Half Baths Characteristic numeric Number of half baths X
Half Baths Characteristic numeric Number of half baths X
Condominium Unit Full Baths Characteristic numeric Number of full bathrooms X
Full Baths Characteristic numeric Number of full bathrooms X
Condominium % Ownership Meta numeric Proration rate applied to the PIN X
Condominium Building Strata 1 Meta character Condominium Building Strata - 10 Levels X
Condominium Building Strata 2 Meta character Condominium Building Strata - 100 Levels X
Percent Population Age, Under 19 Years Old ACS5 numeric Percent of the people 17 years or younger
Percent Population Age, Over 65 Years Old ACS5 numeric Percent of the people 65 years or older
Median Population Age ACS5 numeric Median age for whole population
Percent Population Mobility, Moved From Other State in Past Year ACS5 numeric Percent of people (older than 1 year) who moved from another state in the past 12 months
Percent Households Family, Married ACS5 numeric Percent of households that are family, married
Percent Households Nonfamily, Living Alone ACS5 numeric Percent of households that are non-family, alone (single)
Percent Population Education, High School Degree ACS5 numeric Percent of people older than 25 who attained a high school degree
Percent Population Education, Bachelor Degree ACS5 numeric Percent of people older than 25 who attained a bachelor’s degree
Percent Population Education, Graduate Degree ACS5 numeric Percent of people older than 25 who attained a graduate degree
Percent Population Income, Below Poverty Level ACS5 numeric Percent of people above the poverty level in the last 12 months
Median Income, Household in Past Year ACS5 numeric Median income per household in the past 12 months
Median Income, Per Capita in Past Year ACS5 numeric Median income per capita in the past 12 months
Percent Population Income, Received SNAP in Past Year ACS5 numeric Percent of households that received SNAP in the past 12 months
Percent Population Employment, Unemployed ACS5 numeric Percent of people 16 years and older unemployed
Median Occupied Household, Total, Year Built ACS5 numeric Median year built for all occupied households
Median Occupied Household, Renter, Gross Rent ACS5 numeric Median gross rent for only renter-occupied units
Percent Occupied Households, Owner ACS5 numeric Percent of households that are owner-occupied
Percent Occupied Households, Total, One or More Selected Conditions ACS5 numeric Percent of occupied households with selected conditions
Percent Population Mobility, Moved From Within Same County in Past Year ACS5 numeric Percent of people (older than 1 year) who moved in county in the past 12 months
Land Square Feet Characteristic numeric Square footage of the land (not just the building) of the property
Longitude Location numeric X coordinate in degrees (global longitude)
Latitude Location numeric Y coordinate in degrees (global latitude)
Census Tract GEOID Location character 11-digit ACS/Census tract GEOID
First Street Factor Location numeric First Street flood factor The flood factor is a risk score, where 10 is the highest risk and 1 is the lowest risk
School Elementary District GEOID Location character School district (elementary) GEOID
School Secondary District GEOID Location character School district (secondary) GEOID
CMAP Walkability Score (No Transit) Location numeric CMAP walkability score for a given PIN, excluding transit walkability
CMAP Walkability Total Score Location numeric CMAP walkability score for a given PIN, including transit walkability
Municipality Name Location character Taxing district name, as seen on Cook County tax bills
Township Code Meta character Cook County township code
Neighborhood Code Meta character Assessor neighborhood code
Property Tax Bill Aggregate Rate Other numeric Tax bill rate for the taxing district containing a given PIN
Active Homeowner Exemption Other logical Parcel has an active homeowner exemption
Corner Lot Other logical Corner lot indicator
Number of Years Active Homeowner Exemption Other numeric Number of years parcel has had an active homeowner exemption
Number of PINs in Half Mile Proximity numeric Number of PINs within half mile
Number of Bus Stops in Half Mile Proximity numeric Number of bus stops within half mile
Number of Foreclosures Per 1000 PINs (Past 5 Years) Proximity numeric Number of foreclosures per 1000 PINs, within half mile (past 5 years)
Number of Schools in Half Mile Proximity numeric Number of schools (any kind) within half mile
Total Airport Noise DNL Proximity numeric Estimated DNL for a PIN, assuming a baseline DNL of 50 (“quiet suburban”) and adding predicted noise from O’Hare and Midway airports to that baseline
Nearest Bike Trail Distance (Feet) Proximity numeric Nearest bike trail distance (feet)
Nearest Cemetery Distance (Feet) Proximity numeric Nearest cemetery distance (feet)
Nearest CTA Route Distance (Feet) Proximity numeric Nearest CTA route distance (feet)
Nearest CTA Stop Distance (Feet) Proximity numeric Nearest CTA stop distance (feet)
Nearest Hospital Distance (Feet) Proximity numeric Nearest hospital distance (feet)
Lake Michigan Distance (Feet) Proximity numeric Distance to Lake Michigan shoreline (feet)
Nearest Major Road Distance (Feet) Proximity numeric Nearest major road distance (feet)
Nearest Metra Route Distance (Feet) Proximity numeric Nearest Metra route distance (feet)
Nearest Metra Stop Distance (Feet) Proximity numeric Nearest Metra stop distance (feet)
Nearest Park Distance (Feet) Proximity numeric Nearest park distance (feet)
Nearest Railroad Distance (Feet) Proximity numeric Nearest railroad distance (feet)
Nearest Secondary Road Distance (Feet) Proximity numeric Nearest secondary road distance (feet)
Nearest University Distance (Feet) Proximity numeric Nearest university distance (feet)
Nearest Vacant Land Parcel Distance (Feet) Proximity numeric Nearest vacant land (class 100) parcel distance (feet)
Nearest Water Distance (Feet) Proximity numeric Nearest water distance (feet)
Nearest Golf Course Distance (Feet) Proximity numeric Nearest golf course distance (feet)
Sale Year Time numeric Sale year calculated as the number of years since 0 B.C.E
Sale Day Time numeric Sale day calculated as the number of days since January 1st, 1997
Sale Quarter of Year Time character Character encoding of quarter of year (Q1 - Q4)
Sale Month of Year Time character Character encoding of month of year (Jan - Dec)
Sale Day of Year Time numeric Numeric encoding of day of year (1 - 365)
Sale Day of Month Time numeric Numeric encoding of day of month (1 - 31)
Sale Day of Week Time numeric Numeric encoding of day of week (1 - 7)
Sale After COVID-19 Time logical Indicator for whether sale occurred after COVID-19 was widely publicized (around March 15, 2020)

Valuation

For the most part, condos are valued the same way as single- and multi-family residential property. We train a model using individual condo unit sales, predict the value of all units, and then apply any post-modeling adjustment.

However, because the CCAO has so little information about individual units, we must rely on the condominium percentage of ownership to differentiate between units in a building. This feature is effectively the proportion of the building’s overall value held by a unit. It is created when a condominium declaration is filed with the County (usually by the developer of the building). The critical assumption underlying the condo valuation process is that percentage of ownership correlates with the relative market value differences between units.

Percentage of ownership is used in two ways:

  1. It is used directly as a predictor/feature in the regression model to estimate differing unit values within the same building.
  2. It is used to reapportion unit values directly i.e. the value of a unit is ultimately equal to % of ownership * total building value.

Visually, this looks like:

For what the office terms “nonlivable” spaces — parking spaces, storage space, and common area — the breakout of value works differently. See this excel sheet for an interactive example of how nonlivable spaces are valued based on the total value of a building’s livable space.

Percentage of ownership is the single most important feature in the condo model. It determines almost all intra-building differences in unit values.

Multi-PIN Sales

The condo model is trained on a select number of “multi-PIN sales” (or “multi-sales”) in addition to single-parcel sales. Multi-sales are sales that include more than one parcel. In the case of condominiums, many units are sold bundled with deeded parking spaces that are separate parcels. These two-parcel sales are highly reflective of the unit’s actual market price. We split the total value of these two-parcel sales according to their relative percent of ownership before using them for training. For example, for a $100,000 sale of a unit (4% ownership) and a parking space (1% ownership), the sale would be adjusted to $80,000:

$$\frac{0.04}{0.04 + 0.01} * $100,000 = $80,000$$

Condo Strata

The condo model uses an engineered feature called strata to deliver much of its predictive power. Strata is the binned, time-weighted, 5-year average sale price of the building. There are two strata features used in the model, one with 10 bins and one with 100 bins. Buildings are binned across each triad using either quantiles or 1-dimensional k-means. A visual representation of quantile-based strata binning looks like:

To put strata in more concrete terms, the table below shows a sample 5-level strata. Each condominium unit would be assigned a strata from this table (Strata 1, Strata 2, etc.) based on the 5-year weighted average sale price of its building. All units in a building will have the same strata.

Strata Range of 5-year Average Sale Price
Strata 1 $0 - $121K
Strata 2 $121K - $149K
Strata 3 $149K - $199K
Strata 4 $199K - $276K
Strata 5 $276K+

Some additional notes on strata:

  • Strata is calculated in the ingest stage of this repository.
  • Calculating the 5-year average sale price of a building requires at least 1 sale. Buildings with no sales have their strata imputed via KNN (using year built, number of units, and location as features).
  • Number of bins (10 and 100) was chosen based on model performance. These numbers yielded the lowest root mean-squared error (RMSE).

Ongoing Issues

The CCAO faces a number of ongoing issues specific to condominium modeling. We are currently working on processes to fix these issues. We list the issues here for the sake of transparency and to provide a sense of the challenges we face.

Unit Heterogeneity

The current modeling methodology for condominiums makes two assumptions:

  1. Condos units within the same building are similar and will sell for similar amounts.
  2. If units are not similar, the percentage of ownership will accurately reflect and be proportional to any difference in value between units.

The model process works even in heterogeneous buildings as long as assumption 2 is met. For example, imagine a building with 8 identical units and 1 penthouse unit. This building violates assumption 1 because the penthouse unit is likely larger and worth more than the other 10. However, if the percentage of ownership of each unit is roughly proportional to its value, then each unit will still receive a fair assessment.

However, the model can produce poor results when both of these assumptions are violated. For example, if a building has an extreme mix of different units, each with the same percentage of ownership, then smaller, less expensive units will be overvalued and larger, more expensive units will be undervalued.

This problem is rare, but does occur in certain buildings with many heterogeneous units. Such buildings typically go through a process of secondary review to ensure the accuracy of the individual unit values.

Buildings With Few Sales

The condo model relies on sales within the same building to calculate strata. This method works well for large buildings with many sales, but can break down when there are only 1 or 2 sales in a building. The primary danger here is unrepresentative sales, i.e. sales that deviate significantly from the real average value of a building’s units. When this happens, buildings can have their average unit sale value pegged too high or low.

Fortunately, buildings without any recent sales are relatively rare, as condos have a higher turnover rate than single and multi-family property. Smaller buildings with low turnover are the most likely to not have recent sales.

Buildings Without Sales

When no sales have occurred in a building in the 5 years prior to assessment, the building’s strata features are imputed. The model will look at nearby buildings that have similar unit counts/age and then try to assign an appropriate strata to the target building.

Most of the time, this technique produces reasonable results. However, buildings without sales still go through an additional round of review to ensure the accuracy of individual unit values.

FAQs

Note: The FAQs listed here are for condo-specific questions. See the residential model documentation for more general FAQs.

Q: What are the most important features in the condo model?

As with the residential model, the importance of individual features varies by location and time. However, generally speaking, the most important features are:

  • Location, location, location. Location is the largest driver of county-wide variation in condo value. We account for location using geospatial features like neighborhood.
  • Condo percentage of ownership, which determines the intra-building variation in unit price.
  • Condo building strata. Strata provides us with a good estimate of the average sale price of a building’s units.

Q: How do I see my condo building’s strata?

Individual building strata are not included with assessment notices or shown on the CCAO’s website. However, strata are stored in the sample data included in this repository. You can load the data (input/condo_strata_data.parquet) using R and the read_parquet() function from the arrow library.

Q: How do I see the assessed value of other units in my building?

You can use the CCAO’s Address Search to see all the PINs and values associated with a specific condominium building, simply leave the Unit Number field blank when submitting a search.

Q: How do I view my unit’s percentage of ownership?

The percentage of ownership for individual units is printed on assessment notices. You may also be able to find it via your building’s board or condo declaration.

Usage

Installation and usage of this model is identical to the installation and usage of the residential model. Please follow the instructions listed there.

Getting Data

The data required to run these scripts is produced by the ingest stage, which uses SQL pulls from the CCAO’s Athena database as a primary data source. CCAO employees can run the ingest stage or pull the latest version of the input data from our internal DVC store using:

dvc pull

Public users can download data for each assessment year using the links below. Each file should be placed in the input/ directory prior to running the model pipeline.

2021

2022

2023

2024

Due to a data issue with the initial 2024 model run, there are actually two final 2024 models. The run 2024-02-16-silly-billy was used for Rogers Park only, while the run 2024-03-11-pensive-manasi was used for all subsequent City of Chicago townships.

The data issue caused some sales to be omitted from the 2024-02-16-silly-billy training set, however the actual impact on predicted values was extremely minimal. We chose to update the data and create a second final model out of an abundance of caution, and, given low transaction volume in 2023, to include as many arms-length transactions in the training set as possible.

2024-02-16-silly-billy
2024-03-11-pensive-manasi (final)

For other data from the CCAO, please visit the Cook County Data Portal.

License

Distributed under the AGPL-3 License. See LICENSE for more information.

Contributing

We welcome pull requests, comments, and other feedback via GitHub. For more involved collaboration or projects, please see the Developer Engagement Program documentation on our group wiki.

model-condo-avm's People

Contributors

dfsnow avatar jeancochrane avatar wrridgeway avatar

Stargazers

 avatar  avatar

model-condo-avm's Issues

Remove common area specific valuation

Valuations believes we are likely perpetuating inaccurate common area designations for condo parcels and that common areas should not be designated as condo parcels anyhow. We should completely ignore common area as a category when valuing condos in the pipeline.

Value nonlivables as a function of livables within building

Nonlivables are difficult to assign a value to pre-disaggregation. If we exclude them from aggregation and then only assign them a value using their relative share of a building's total value, this could avoid shifting values for livable units.

Fix write_csv issue in export script

For whatever reason, DESCRIPTION and setup.R are not loading readr into the library while running export. Name-spacing it resolves the issue.

Set 299 parking space values

In the 2021 model, the CCAO used a few different methods to value parking. Primarily, it used a flat $10K FMV for most spaces. We should revisit this method and replace it with a variable rate or regression-based model.

[Infra updates] Copy res model infra updates to the condo model

We have a number of issues in the backlog to make it easier to deploy and run the residential model:

Once these changes have been deployed to the res model and we're feeling confident in their stability and their usefulness, we should replicate them in the condo model as well.

There may be opportunities for factoring out some shared code into a shared composite action, but that would have the downside of requiring us to manage a third repo containing the action that would need to be updated and versioned in order to make any changes. It may be simpler to just duplicate the logic between these two repos, unless A) the logic is nearly 100% identical or B) we realize that we'll want to use such an action in other repos as well.

Add price breakdowns by strata to condo pipeline report

It's a little difficult currently to evaluate the precision with which strata are built and imputed. We should add a section to the pipeline report that breaks down sales prices (min, med, mean, max) by strata that are assigned and imputed.

Revisit condo strata imputation

The condo model uses recipes-based imputation for condo strata. Currently, it uses KNN using Gower's distance and a few of the most salient condo features (year built, distance, etc.). We should revisit this method considering the strata features do most of the work in the condo model and there are many condos in the City.

Update documentation

This repo has undergone major changes over the last year. We need to update readmes to properly reflect those changes.

Add new filters for ingesting sales

default.vw_pin_sale will soon be unfiltered by default and we need to use certain conditions to make sure we don't ingest unwanted sales:

AND NOT sale.sale_filter_is_outlier
AND NOT sale.sale_filter_deed_type
AND NOT sale.sale_filter_less_than_10k
AND NOT sale.sale_filter_same_sale_within_365

Improve handling of new construction and divisions

The condo model currently handles new construction the same way it handles any other property: by using sales to predict the value of unsold properties. This method doesn't work well for new properties because the sales are inevitably higher than similar non-new properties.

We should add flags and/or a separate valuation methodology for new construction condos. Specifically, we should look for new 299 PINs resulting from divisions and 297 PINs that become 299s. We should also flag large YoY drops in building price, as this can be an additional indicator of misvalued new construction.

Note that for the under construction 297 or 299 PINs may not be the same as the final 299 PINs.

Maintain feature parity with `model-res-avm`

model-res-avm has been undergoing significant upgrades for modelling this year. We need to make sure these upgrades are incorporated into the condo model. This includes:

  • Model features
  • Pipeline structure (Setup.R, removing sales val, etc.)
  • Adjustments to reporting ingest and structure
  • AWS EC2 integration

Update pipeline to run with new column names

We've changed a lot of column names since we last ran the pipeline. We'll need to update instances where they're hard-coded to make sure the pipeline can run for the sake of investigating the importance of characteristics.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.