Technical methodology
How REAISALE Calculates Metrics
Detailed explanation of the mathematical formulas and data processing methods behind each REAISALE metric. For investors, analysts, and developers who want to understand our calculation methodology.
Median Price per Square Foot (Psf)
Formula
median([filtered_psf_values]) where filtered_psf_values = [p.price / p.sqft for p in properties if p.price > 0 and p.sqft > 0 and psf_within_plausible_range(p.price / p.sqft)]Description
The median price per square foot for a district is calculated by first filtering out implausible values (typically outside a reasonable range for Dubai real estate), then computing the statistical median of the remaining price-per-square-foot values.
Sample Requirements
Requires minimum 4 valid listings in the district, each with non-zero price and area values. Outliers beyond plausible ranges are filtered out before calculation.
Confidence Factors
- •Sample size (larger samples = higher confidence)
- •Data recency (listings within last 30 days)
- •Area validity (cross-checked against property type norms)
- •Price reasonableness (within Dubai market bands)
Modelled Rental Yield (Heuristic)
Formula
base_yield = is_villa ? (loc >= 90 ? 4.0 : loc >= 75 ? 4.8 : loc >= 65 ? 5.5 : 6.2) : (loc >= 90 ? 5.5 : loc >= 75 ? 6.5 : loc >= 65 ? 7.2 : 8.0) yield_adjustment = clamp(-1.5, 1.5, price_vs_market * -0.04) rental_yield = round(base_yield + yield_adjustment, 1)Description
Gross rental yield is a modelled estimate keyed off property type (villa/townhouse vs apartment) and district location desirability, with a marginal adjustment (-1.5% to +1.5%) for units priced below their peer benchmark. There is NO observed tenancy contract or rent field anywhere in the sales data layer; this is a heuristic rule of thumb, not a lease-backed yield.
Sample Requirements
Computed for every listing with a valid property type and district. Two identical units in the same building receive the same base yield figure.
Confidence Factors
- •Property type classification (Villa/Townhouse vs Apartment)
- •District location desirability score (0–100)
- •Price position relative to peer benchmark (yieldAdjustment)
- •Absence of observed rental contracts (documented model limit)
Intelligence Score (Overall)
Formula
overall_score = weighted_average([dimension_scores]) where weights are proprietary but sum to 100% across six dimensionsDescription
The overall Intelligence Score is a weighted combination of six dimensions: Price vs Peer Benchmark, Location Score, Modelled Rental Yield, Growth Potential, Risk Index, and Source Confidence. Exact weights are proprietary.
Sample Requirements
Calculated for each property with complete data across all six dimensions. Properties with missing data receive reduced scores or are excluded.
Confidence Factors
- •Completeness of property data fields
- •Reliability of comparable properties in the area
- •Recency of the underlying data
- •Consistency checks across data sources
Peer Benchmark $/Sqft Hierarchy (v2.1)
Formula
resolveBenchmark(listing): Level 0 (exact_peers): median([ppsf in feed matching district + status + type + beds]) if comps >= 4 Level 1 (segment_peers): median([ppsf in feed matching district + type + beds]) if comps >= 4 Level 2 (district_type): median([ppsf in feed matching district + type]) if comps >= 4 Level 3 (static_table): static_benchmark_table[district] -> confidenceTier: 'unanchored', priceVsMarket: nullDescription
Methodology v2.1 resolves peer benchmarks dynamically from active feed inventory through a 4-level fallback hierarchy. Each peer bucket requires a minimum threshold of 4 comparable units (MIN_COMPS_THRESHOLD = 4). When a listing cannot be anchored to at least 4 active comps, it falls back to Level 3 static baseline data, is marked unanchored, and the peer-relative price percentage is withheld entirely (rendered as null) rather than publishing an ungrounded comparison.
Sample Requirements
Requires at least 4 comparable active listings in the current feed for high/medium/low confidence tiers. Unanchored listings are withheld from GOLD eligibility and peer comparisons.
Confidence Factors
- •Active comparable count in feed (>=4 required to anchor)
- •Specificity of match (exact status+beds vs segment vs district-wide)
- •Withholding price comparison when unanchored (preventing false precision)
- •Independent median computation across clean plausible records
Source Confidence Measure (Code Implementation)
Formula
confidence_score = clamp(0, 100, round(comp_score + field_score + freshness_score)) where: comp_score (0–65): 0 comps -> 5; 1–3 -> 20; 4–7 -> 40; 8–15 -> 52; 16–30 -> 60; >30 -> 65 field_score (0–25): 25 - (corrupt_area? 15:0) - (outlier? 5:0) - (!price? 5:0) - (!sqft? 5:0) - (!district? 5:0) - (!type? 3:0) freshness_score (5–10): days_on_market <= 90 -> 10; <= 180 -> 7; > 180 -> 5Description
Source confidence is an additive 0–100 score computed from three code-defined factors: comp depth in the active feed (up to 65 points), input field completeness and area plausibility (up to 25 points), and listing recency/freshness (up to 10 points). The previously documented 0.4 / 0.3 / 0.3 formula was a fabricated prose placeholder; this formula reflects the exact code running in computeSourceConfidence().
Sample Requirements
Evaluated across all listings. Listings with fewer than 4 comps receive at most 20 comp points and are marked sample-thin; unanchored listings cannot qualify for GOLD.
Confidence Factors
- •Comp depth in active feed (dominant weight: up to 65% of score)
- •Physical plausibility of price-per-sqft and area
- •Listing recency (days on market <= 90 days receives full 10 points)
- •Presence of all core schema fields (price, sqft, district, type)
Data Processing Pipeline
Data Ingestion
- 1.Data collected from verified partner network
- 2.Normalised into internal schema (district, price, area, etc.)
- 3.Sanitised to remove promotional language
Quality Assurance
- 4.Malformed prices/areas coerced or dropped
- 5.Plausibility checks applied
- 6.Final validation before scoring