Methodology

How the Plotix score is built.

We aggregate eighteen French public datasets into a calibrated 0–100 score per ~500 m hex. The methodology below is the full pipeline — every step is honest about its data sources, its validation rules, and its limits.

01 · Spatial grid

Every zone is an Uber H3 resolution-8 hexagon — about 500 m across, the readable scale for residential analysis. A zone is anchored on its containing commune so commune-level normalisation is always available. At launch we cover 5 771 zones across 187 communes in Lyon Métropole, Aix-Marseille-Provence and Toulouse Métropole; Bordeaux, Nantes and Lille queue next.

02 · Eighteen sources, one zone

For each zone we compute features from all eighteen sources, point-in-time-correct: a feature available on date t only ever uses data publicly observable at t, never the future. Per-source detail:

FamilySourceRefreshNotes
PriceDVF (Demandes de valeurs foncières)Quarterly · ~6 mo lagEvery recorded sale since 2014. Geocoded + H3-indexed per zone.
PriceADEME DPEContinuousPer-building energy class. F+G share fed in as 'passoires thermiques'.
PriceEncadrement des loyersAnnual decreeLyon Métropole (2021), Marseille (2022). Binary feature.
DemandINSEE Filosofi (carroyée 200 m)AnnualEquivalised income + poverty rate at 200 m grid.
DemandINSEE Recensement PopulationAnnualAge structure / cohort migration signal (25–40).
DemandINSEE SIRENEContinuousActive business establishments per zone, NAF-bucketed.
PipelineSITADEL (SDES)MonthlyBuilding permit pipeline + dépôt-rate anomaly (modified-z).
PipelineCadastreContinuousParcel boundaries + surfaces. Sets the zoning baseline.
PipelinePLU (CNIG zone_urba)Per releasePlan local d'urbanisme — pulled from data.geopf.fr WFS. Per-cell share in U / AU / A / N zoning classes.
PipelineZAN (Zéro artificialisation nette)AnnualHard cap on artificialised land — surface scarcity signal.
RiskGéorisques Cat-Nat (GASPAR)ContinuousDeclared natural-disaster events per commune (20-yr window).
RiskGéorisques RGA argiles (BRGM)AnnualClay shrink-swell exposure — foundations risk + insurance cost.
RiskGéorisques ICPEContinuousIndustrial classified facilities — proximity penalty.
RiskGéorisques TRI (flood)Per PPRi cycleMapped flood-risk areas.
MobilityGTFS — TCL, RTM, TisséoPer operatorBus / metro / tram stops + lines. Nearest-stop + density per zone.
MobilityIGN BD TOPO (troncon_de_route)ContinuousRoad network from data.geopf.fr WFS — per-cell road length + major-axes count.
QualityAnnuaire de l'éducationAnnualSchools / colleges / lycées per zone. Family attraction proxy.
QualityBPE (Base permanente des équipements)AnnualAmenities count — shops, health, services.

Every source is under Licence Ouverte. Notarial data (BIEN / PERVAL) requires a commercial agreement and is explicitly not scraped.

03 · The model

  • Target.Whether a zone's apartment median €/m² over the next twelve months outperforms its commune's twelve-month change. Computed on hedonic-residual prices so the median isn't distorted by changing unit-size mix.
  • Algorithm. LightGBM gradient boosting, 300 estimators, learning rate 0.05, num_leaves 31, regularisation 0.1.
  • Validation. Walk-forward — for each as_of date, train on everything strictly older, validate on the held-out forward window. No future leakage.
  • Calibration. The raw LightGBM probability is mapped through an isotonic regression fit on out-of-sample predictions, so a score of 60 means we observed roughly a 60 % outperform rate among past zones the model rated 60.
  • Driver attribution. SHAP values surface the three to five features that pushed the score up or down on this specific zone.
  • Historical analogs. For each zone we compute Euclidean distance over ten curated *_vs_commune features against the 8 695 past (zone, quarter) pairs whose twelve-month outcome we can already observe. The three closest analogs ship with their actual realised excess return — you read the prediction against history, not against trust.
  • Feature set, by version. v6 wrapped the V4 temporal stack with schools, encadrement and clay-risk. v8 added cadastre built-density, INSEE BPE amenity counts and the INSEE RP 2021 30–44 cohort share. v9 (current production) layers the CNIG PLU zoning shares (U / AU / A+N) on top — fifty- two inputs total. BD TOPO road-density is fully staged in the training dataset but did not beat v9 on hit rate; held back for a future feature-selection revisit.

04 · Backtest, honestly

On the most recent fully-observable hold-out (as_of 2024-Q1, with twelve-month outcomes observed through 2025-Q1, 210 commune-quarter groups evaluated):

Top-30 % hit rate
65.6 %
zones beating their commune
Baseline
52.7 %
naïve commune-mean strategy
Lift
+12.9 pp
vs baseline

Top-30 % means: the model picks the top 30 % of zones in a commune by score and we measure what fraction actually outperform the commune by any positive margin over the next twelve months. 65.6 % is materially above the 52.7 % random pick. The realised excess return on the model's picks was +4.37 % versus +0.85 % for the commune as a whole — a +3.52 pp lift on realised return. Live model version is v9.metros.calibrated.2026-05-27.

Note: a previous build reported a 67.5 % hit rate. The drop to 65.6 % reflects a fix to how INSEE / ADEME / SIRENE key Marseille and Lyon arrondissement codes — the old number was inflated by the model implicitly using the all-null arrondissement pattern as a feature. The new model is trained on the actual demographic / business / energy data you see in the right panel.

05 · Known limits — what we tell every buyer

  • DVF coverage gaps. About 14 % of Aix-Marseille cells have a recorded transaction in the current quarter. For those zones the score still computes from the other signals, but the prediction is less anchored than for dense urban cores.
  • DVF publication lag. DVF lands ~6 months after the recording quarter. We surface the as-ofdate on every DVF-derived feature and never claim "real-time".
  • 12-month horizon. The model targets twelve months forward. It is not a six-month flip signal, and it is not a five-year hold projection.
  • PLU coverage gap.The CNIG zone_urba layer covers 47 % of our 5 771 cells. The rest are mostly AMP rural communes still under a Carte Communale or RNU regime — those cells are surfaced as "Not in PLU coverage" in the panel and never faked with a default.
  • BD TOPO bbox cutoff.Road density covers cells inside each metro's bounding box (~36 % of all cells). Cells on the perimeter render "Not indexed" rather than a misleading zero.
  • No notarial data. BIEN / PERVAL are not open and we do not scrape. Some signals (granular ownership, motivation) require that agreement and are simply absent today.
§ Begin

Pick a zone. See the score, the drivers, the analogs.

Full Team plan free for fifteen days. No card on file. Decide on day 16.

Start free 15-day trial →
No card · No auto-renew · Cancel any day