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:
| Family | Source | Refresh | Notes |
|---|---|---|---|
| Price | DVF (Demandes de valeurs foncières) | Quarterly · ~6 mo lag | Every recorded sale since 2014. Geocoded + H3-indexed per zone. |
| Price | ADEME DPE | Continuous | Per-building energy class. F+G share fed in as 'passoires thermiques'. |
| Price | Encadrement des loyers | Annual decree | Lyon Métropole (2021), Marseille (2022). Binary feature. |
| Demand | INSEE Filosofi (carroyée 200 m) | Annual | Equivalised income + poverty rate at 200 m grid. |
| Demand | INSEE Recensement Population | Annual | Age structure / cohort migration signal (25–40). |
| Demand | INSEE SIRENE | Continuous | Active business establishments per zone, NAF-bucketed. |
| Pipeline | SITADEL (SDES) | Monthly | Building permit pipeline + dépôt-rate anomaly (modified-z). |
| Pipeline | Cadastre | Continuous | Parcel boundaries + surfaces. Sets the zoning baseline. |
| Pipeline | PLU (CNIG zone_urba) | Per release | Plan local d'urbanisme — pulled from data.geopf.fr WFS. Per-cell share in U / AU / A / N zoning classes. |
| Pipeline | ZAN (Zéro artificialisation nette) | Annual | Hard cap on artificialised land — surface scarcity signal. |
| Risk | Géorisques Cat-Nat (GASPAR) | Continuous | Declared natural-disaster events per commune (20-yr window). |
| Risk | Géorisques RGA argiles (BRGM) | Annual | Clay shrink-swell exposure — foundations risk + insurance cost. |
| Risk | Géorisques ICPE | Continuous | Industrial classified facilities — proximity penalty. |
| Risk | Géorisques TRI (flood) | Per PPRi cycle | Mapped flood-risk areas. |
| Mobility | GTFS — TCL, RTM, Tisséo | Per operator | Bus / metro / tram stops + lines. Nearest-stop + density per zone. |
| Mobility | IGN BD TOPO (troncon_de_route) | Continuous | Road network from data.geopf.fr WFS — per-cell road length + major-axes count. |
| Quality | Annuaire de l'éducation | Annual | Schools / colleges / lycées per zone. Family attraction proxy. |
| Quality | BPE (Base permanente des équipements) | Annual | Amenities 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_communefeatures 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 % 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.
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.