Analyze Real Estate Market Velocity & Inventory Supply
Units sold during the period
Usually 1 month or 12 months
Total homes currently available for sale
Absorption Rate
0%
Monthly sales velocity
Months of Supply
0
To exhaust inventory
Market Analysis Result
What is the Absorption Rate?
In real estate, the absorption rate is a metric used to evaluate how quickly available homes are being sold in a specific market over a given period. It helps agents, buyers, and investors understand the supply and demand dynamics of a neighborhood or city.
How the Calculation Works
The formula for absorption rate is straightforward:
Absorption Rate = (Number of Homes Sold / Number of Months) / Current Active Listings
Once you have the absorption rate, you can determine the Months of Supply (also known as Inventory Turnover) by dividing 1 by the monthly absorption rate, or by dividing current listings by the average monthly sales.
Interpreting Your Results
Real estate experts generally use these thresholds to determine market temperature:
Seller's Market: Absorption rate above 20% (less than 5 months of supply). Prices tend to rise due to high demand.
Balanced Market: Absorption rate between 15% and 20% (5 to 7 months of supply). Supply and demand are roughly equal.
Buyer's Market: Absorption rate below 15% (more than 7 months of supply). Prices may stagnate or drop as inventory sits longer.
Practical Example
If a neighborhood has 100 active listings and 20 homes were sold in the last month, the absorption rate is 20% (20 / 100). This indicates a healthy market leaning toward sellers. It would take exactly 5 months to sell all current inventory if no new homes were listed.
function calculateAbsorption() {
var sold = parseFloat(document.getElementById('homesSold').value);
var months = parseFloat(document.getElementById('timePeriod').value);
var active = parseFloat(document.getElementById('activeListings').value);
var resultsDiv = document.getElementById('results');
var rateOutput = document.getElementById('rateOutput');
var supplyOutput = document.getElementById('supplyOutput');
var statusDiv = document.getElementById('marketStatus');
if (isNaN(sold) || isNaN(months) || isNaN(active) || months <= 0 || active 20) {
statusDiv.innerText = "Current Status: Seller's Market (High Demand)";
statusDiv.style.backgroundColor = "#d4edda";
statusDiv.style.color = "#155724";
statusDiv.style.border = "1px solid #c3e6cb";
} else if (absorptionRate >= 15 && absorptionRate <= 20) {
statusDiv.innerText = "Current Status: Balanced Market";
statusDiv.style.backgroundColor = "#fff3cd";
statusDiv.style.color = "#856404";
statusDiv.style.border = "1px solid #ffeeba";
} else {
statusDiv.innerText = "Current Status: Buyer's Market (High Inventory)";
statusDiv.style.backgroundColor = "#f8d7da";
statusDiv.style.color = "#721c24";
statusDiv.style.border = "1px solid #f5c6cb";
}
resultsDiv.scrollIntoView({ behavior: 'smooth' });
}