How much should an apartment in Bogotá rent for? How much should you pay for an investment property to hit your target yield? This page walks through the exact math behind the free Real Estate Analyzer — built on 12,115 real listings across 12 of Bogotá's 20 official localities.
Most rental and sale price guidance in Bogotá is anecdotal — a broker's gut feeling, or a handful of nearby listings eyeballed on a classifieds site. This tool replaces that with a calibrated model: every locality has its own price-per-m² range, yield, and sample size, all derived from real market data instead of asking prices alone. The goal is simple — give renters, buyers, and small investors a defensible number before they negotiate.
The valuation model is a five-step pipeline. Each step is transparent and reproducible — there is no black box.
Every one of the 12 modeled localities — and, where sample size allows, individual barrios within them — has a calibrated rental price-per-m² range (low–high) derived from real listings. This is the foundation the rest of the model builds on.
basePerM2 = midpoint(localityRentalRange) base = basePerM2 × area_m2
Colombia classifies residential property into strata 1–6 based on socioeconomic conditions, and stratum is one of the strongest predictors of price within a given locality. The model applies a multiplier ranging from 0.72× at stratum 1 to 1.48× at stratum 6.
stratumMultiplier ∈ {1: 0.72, 2: 0.83, 3: 0.93, 4: 1.08, 5: 1.26, 6: 1.48}Each bedroom beyond the first adds a flat premium, scaled to the locality's price tier (high / mid / low). Amenities — parking, gym, pool, doorman — each add their own tier-scaled premium, calibrated from the price difference between otherwise-similar listings with and without that amenity.
adjustedBase = base + (bedrooms − 1) × bedroomPremium[tier] + Σ amenityPremium[tier]
The stratum multiplier is applied last, then the model outputs a ±12% range around that point estimate rather than a single number — because real markets have variance, and presenting a single false-precise figure would be misleading. That width is a deliberate buffer for factors the model doesn't see — floor level, view, condition, building age — not a statistically backtested confidence interval.
point = adjustedBase × stratumMultiplier range = [point × 0.88, point × 1.12]
Every locality also has a calibrated average annual rental yield (annual rent ÷ property value). The investment calculator inverts this relationship two ways: given a price, it tells you the expected monthly income; given a target income, it tells you the maximum price that still hits your yield goal.
propertyValue = (monthlyRent × 12) / avgYield expectedMonthlyRent = (propertyValue × avgYield) / 12
A summary of the inputs and how each one moves the estimate.
| Input | Range | Effect on price |
|---|---|---|
| Locality / barrio | 12 localities, 98 barrios | Sets the base price-per-m² |
| Estrato | 1 – 6 | 0.72× to 1.48× multiplier |
| Bedrooms | 1 – 6 | Flat premium per extra bedroom, by tier |
| Amenities | parking, gym, pool, doorman | Flat premium per amenity, by tier |
| Area (m²) | 20 – 500 | Linear scaling of the base rate |
This is a calibrated rule-based estimator, not a trained regression model — so there is no formal R² to report. Locality and stratum benchmarks are derived directly from real listings, but factors not captured here — floor level, natural light, building age, view, and hyper-local block-by-block effects — can shift the true price meaningfully within (or occasionally outside) the displayed ±12% range. It covers apartments only — not houses or commercial space — and only the 12 of Bogotá's 20 localities where sample size was large enough to be statistically meaningful. Listings reflect asking prices, not closed transaction prices, which tend to run slightly below ask.
A more capable model already runs locally against the raw scraped dataset: a Random Forest regression trained separately for apartments and houses, feeding a full ROI and cap-rate pipeline for investment properties. Bringing that model online here — and using an LLM to read unstructured listing descriptions for renovation quality, view, and condition signals the structured fields miss — is the planned next step to tighten the ±12% range.
The free tool gives you a fast estimate. If you want a full ROI assessment, locality screening across multiple candidates, or negotiation support backed by this data, that's a paid advisory service.
See real estate investment advisory →Yes. Both the rental estimator and the investment calculator are free, with no login required.
Bogotá D.C. is officially divided into 20 localities. This model currently covers 12 of them — the ones with enough listing volume to produce a statistically reliable estimate. The remaining localities have too few comparable listings to model responsibly yet.
It is a transparent rule-based estimate, not a trained statistical model — so there is no formal accuracy score (R²) to quote. Locality, stratum, bedroom, and amenity adjustments are calibrated from real listing data; the ±12% range is a deliberate buffer for factors like floor, view, and condition that are not modeled. Treat it as a reference guide, not a certified appraisal.
Rental yield is annual rental income divided by the property's purchase price. A property priced at COP 500M generating COP 30M/year in rent has a 6% yield. Comparing yield across localities is usually a better investment signal than comparing price alone.
Yes — that is exactly what the real estate investment advisory service covers: a structured ROI assessment for a specific property or shortlist, going beyond what the free tool outputs.