Our models
How good is our price model?
We trained five models on 22,507 Houston-area listings (June 2024) to estimate what a home like each one usually lists for. Here are the real results, including where Zillow's own estimate, the Zestimate, beats us.
Head to head
Our model vs Zillow's Zestimate
Both are scored against the same 21,106 homes that have a Zestimate. Each of our estimates is out-of-sample: made by a model that never saw that home.
Our typical error
6.7%
Half of homes are off by less than this
Zestimate typical error
3.1%
Same homes, same measure
Our average miss
$54,773
R² 0.89
Zestimate average miss
$17,733
R² 0.99
Zillow's Zestimate is clearly more accurate. It misses by about $17,733 on average; we miss by about $54,773. We are not claiming to beat it.
That makes sense. We only use what is in the listing file (size, location, home type, new construction, county assessed value). We have no year built, condition, photos or sale history, and Zillow has far more data and years of tuning.
One caution: these are homes currently for sale, and a Zestimate for a listed home may already take the asking price into account. If it does, this comparison flatters it. We cannot tell that from the data, so read the gap as an upper bound on Zillow's lead.
What we add is not a better estimate. It is what we do with one: check the fair price against the asking price, warn about flood-prone zips, and tie it all to what a household can afford.
Model comparison
Which model did best?
Average dollar miss for each model on all 22,507 homes, using 5-fold cross-validation (shorter is better). The three tree models cut the miss by about 38% compared with the simple baseline.
- Ridge (baseline)Simple linear baseline$91,495
- LightGBM (tuned)Tree model, best of 4 settings$57,367
- XGBoostTree model$57,862
- CatBoostTree model$60,131
- EnsembleAverage of the three tree models: our final model$57,146
View as table
| Model | Average miss | Median error | Average error | R² |
|---|---|---|---|---|
| Ridge (baseline) | $91,495 | 12.2% | 16.9% | 0.73 |
| LightGBM (tuned) | $57,367 | 6.6% | 10.1% | 0.87 |
| XGBoost | $57,862 | 6.7% | 10.2% | 0.87 |
| CatBoost | $60,131 | 7.4% | 10.8% | 0.87 |
| Ensemble (LGBM+XGB+Cat) | $57,146 | 6.7% | 10.1% | 0.88 |
Where it works
Error by price range
Typical error (median, as a share of the price) in each price range. Both models are weakest at the cheap end, which is where buyers on a tight budget shop. Our weakest range is under $200,000, so treat bargains there with extra care.
- Our model
- Zillow Zestimate
- Under $200k1,474 homes12.5%6.5%
- $200-300k4,264 homes6.0%3.6%
- $300-450k7,712 homes5.6%2.9%
- $450-700k4,973 homes6.8%2.7%
- Over $700k2,683 homes10.7%3.9%
View as table
| Price range | Homes | Our typical error | Zestimate typical error | Our average miss | Zestimate average miss |
|---|---|---|---|---|---|
| Under $200k | 1,474 | 12.5% | 6.5% | $27,148 | $9,031 |
| $200-300k | 4,264 | 6.0% | 3.6% | $22,334 | $9,485 |
| $300-450k | 7,712 | 5.6% | 2.9% | $28,503 | $10,954 |
| $450-700k | 4,973 | 6.8% | 2.7% | $52,616 | $15,809 |
| Over $700k | 2,683 | 10.7% | 3.9% | $201,010 | $58,676 |
Predicted vs actual
How close are the estimates?
Each dot is a home: its asking price across, the estimate up. A dot on the dashed line was estimated exactly. A tighter cloud around the line is a better model. Random sample of 1,200 homes; 36 above $1.5M are off the chart.
- Our model
- Zillow Zestimate
View as table
| Average miss | Median error | Average error | R² | |
|---|---|---|---|---|
| Our model | $54,773 | 6.7% | 9.9% | 0.89 |
| Zillow Zestimate | $17,733 | 3.1% | 3.5% | 0.99 |
Inside the model
What drives the price?
How much, on average, each factor moves a home's estimated price up or down. Size matters most, then the county's assessed value and how expensive the zip usually is.
- Living area±24.6%
- County assessed value±11.3%
- Typical price per sqft in the zip±7.3%
- New construction±5.2%
- Lot size±5.1%
- Home type±3.5%
- Distance to the Galleria±2.9%
- Bathrooms±2.8%
View as table
| Factor | Typical swing in price |
|---|---|
| Living area | ±24.6% |
| County assessed value | ±11.3% |
| Typical price per sqft in the zip | ±7.3% |
| New construction | ±5.2% |
| Lot size | ±5.1% |
| Home type | ±3.5% |
| Distance to the Galleria | ±2.9% |
| Bathrooms | ±2.8% |
| East-west location | ±2.0% |
| North-south location | ±1.4% |
| Distance to downtown | ±1.3% |
| Bathrooms per bedroom | ±0.9% |
| Number of listings in the zip | ±0.9% |
| Distance to Medical Center | ±0.8% |
| Days on market | ±0.7% |
| Flood claims in the zip | ±0.6% |
| Bedrooms | ±0.5% |
Read this
What these numbers do and don't mean
- The models learn asking prices, not final sale prices. "Fair" means what similar homes list for.
- They cannot see condition, age, photos or the street. A cheap home may be cheap for a real reason.
- The data is one June 2024 snapshot, so prices will have moved.
- A "Real bargain" needs all three tree models to say the asking price is at least 10% below fair. That cuts noise, but it is still a screening tool, not a verdict.
- Accuracy is measured out-of-sample with 5-fold cross-validation, so the numbers are not flattered by memorizing the data.