Observatoire · Méthodologie · édition 2026-10-26
Méthodologie de l’observatoire
Règles appliquées à chaque édition. Dernière édition : Casablanca, 2026-10-26.
Périmètre
Casablanca : Sidi Maârouf, Oasis, Route d’El Jadida, Ferme Bretonne. Bureaux et locaux commerciaux, vente et location.
Nature des données
- Prix demandés sur annonces publiques (
price_nature = asking_not_transaction). Aucun prix de transaction. availability_confirmed = falsepour tous les relevés : la disponibilité n’est pas confirmée.- Aucune coordonnée d’annonceur ou de propriétaire n’est collectée ni publiée.
Frais et historique
- Frais : fiches individuelles consultées à la date de l’édition.
- Historique : relevés antérieurs (souvent sur pages de résultats), note C ou B ; conservés pour traçabilité, jamais intégrés aux agrégats frais.
- Une fiche fraîche ayant la même URL qu’un relevé historique est un nouvel état de la même annonce et n’est comptée qu’une fois.
Calculs
- Location : ratio = loyer mensuel annoncé (MAD) / surface explicitée (m²) → MAD/m²/mois.
- Vente : ratio = prix annoncé (MAD) / surface explicitée (m²) → MAD/m².
- Agrégats par quartier × type × transaction, sur les seules observations fraîches
eligible_displayed_statistics = true, unités distinctes (dédoublonnage par URL), poids égal. - Médiane publiée si n ≥ 3. P25/P75 publiés si n ≥ 5.
- Percentiles : interpolation linéaire, h = (n − 1) × p, valeur = x[⌊h⌋] + (h − ⌊h⌋) × (x[⌈h⌉] − x[⌊h⌋]) sur l’échantillon trié.
- n = 1 ou 2 : observations et min–max affichés ; médiane = null avec la raison.
- Indice HT hors charges : null (aucun indice HT HC calculable sur des surfaces admissibles). TTC, HT et « charges comprises » ne sont jamais mélangés pour produire un indice normalisé ; les montants TTC sont libellés et isolés.
- Rendement par quartier : null tant qu’il n’existe pas d’échantillons vente et location compatibles.
Dates et niveaux de vérification
observed_at: Date de consultation de la page par Broker.ma (parfois via une copie en cache d’un moteur de recherche), pas la date de mise à jour de l’annonce par le vendeur.- Note B : Fiche professionnelle individuelle consultée ; aucune confirmation du propriétaire ou de l’annonceur.
- Note C : Fiche ou relevé présentant des incohérences (surface, prix par lot, montant) ou relevé sur page de résultats ; aucune confirmation du propriétaire.
- Aucune note ne signifie une confirmation par le propriétaire ou l’annonceur.
Surfaces détaillées
- Champs nullables par observation fraîche :
office_interior_m2,ground_floor_m2,mezzanine_m2,upper_floor_m2,terrace_m2,parking_area_m2,advertised_area_m2,total_built_area_m2,area_conflict,charge_inclusion,tax_basis,source_reference. - Ils ne sont renseignés que lorsque l’annonce donne explicitement la valeur ; sinon
null. Aucune ventilation n’est inférée. - Pour les locaux vendus « sans mezzanine ni sous-sol »,
ground_floor_m2reprend la surface déclarée : qualification du vendeur seulement, non mesurée.
Exclusions
- Surface incohérente entre en-tête et description.
- Prix incluant mobilier, parking ou terrasse non ventilés.
- Locaux avec mezzanine, étage ou terrasse sans ventilation : fiches individuelles, pas d’agrégat.
- Immeubles entiers, lots non identifiables.
Moteurs de recherche et assistants IA
Documents officiels consultés pour la publication de ces fichiers (ils ne valident en rien nos prix) :
- Google — Fonctionnalités IA de la recherche et Guide d’optimisation pour l’IA : llms.txt et Markdown ne sont pas nécessaires pour Google ; aucune garantie d’indexation ni de citation. Ce qui compte : HTML indexable, texte utile, sitemap.
- OpenAI — Robots d’OpenAI : OAI-SearchBot sert à la recherche, distinct de GPTBot (entraînement).
- Anthropic — Robots d’Anthropic : Claude-SearchBot sert à la recherche, distinct de ClaudeBot ; chaque robot suit ses propres règles robots.txt.
- robots.txt autorise les ressources publiques aux robots de recherche sans modifier les préférences d’entraînement du site. Il ne contient aucun secret et ne remplace pas un contrôle d’accès : les données privées ne sont jamais publiées.
Versionnement
- Chaque édition est publiée dans
/observatoire/casablanca/AAAA-MM-JJ/et n’est plus modifiée. - Identifiants stables :
casablanca-<édition>-<id source>. /observatoire/casablanca/index.jsonliste les éditions et pointe vers la plus récente (latest).- Mise à jour hebdomadaire : ajouter
data/observatoire/casablanca/<date>/source.jsoneteditorial.json, puisnode scripts/build-observatory.mjs. Le script échoue s’il devait modifier une archive existante. Aucun service payant n’est requis : les fichiers sont statiques.
Actualisation et contrôles d’accès
- Chaque fiche fraîche de l’édition précédente (19/10/2026) est retentée. Une fiche relue redevient un relevé frais ; son état précédent est conservé dans l’historique sous l’identifiant
E20261019-<id>, avecobserved_atinchangé,historical_only = trueet hors statistiques. - Une fiche non accessible après nouvelle tentative figure dans
access-checks.jsonavecmarket_status = unknown: elle n’est réputée ni vendue, ni louée, ni retirée. - Les fiches ajoutées entre deux éditions sont revérifiées avant réutilisation ; une même annonce diffusée par plusieurs portails n’est comptée qu’une fois.
- Un écart de prix entre deux relevés d’une même fiche est publié comme variation de prix annoncé relevée, jamais comme transaction, baisse générale du marché ou confirmation de l’annonceur. La fiche individuelle prime sur les pages de catégorie.
- Un prix « nous consulter » ou ambigu reste
nullet ne participe à aucun calcul. - Un loyer HT HC explicite n’entre dans un indice HT HC que si le dénominateur de surface de bureaux est établi.
Contrôle d’échantillonnage
- Pour chaque cellule,
changes.jsoncompare les identifiants éligibles avec l’édition précédente : retraits dus à un défaut d’accès, autres retraits, ajouts (nouvel actif ou autre). - Si l’échantillon diffère uniquement à cause de fiches non accessibles, la mention « pas de tendance de quartier démontrée » est publiée.
- Aucune médiane n’est reconduite d’une édition à l’autre : une cellule sous le seuil vaut
null. - Le générateur échoue si une fiche de l’édition précédente n’est ni relue ni déclarée en échec d’accès, si une observation éligible n’a pas de prix ou de surface, ou si la prose de la dernière édition reprend une médiane devenue non publiable.
Politique de comparabilité (depuis le 19/10/2026, inchangée)
- Politique plus prudente appliquée à compter du 19/10/2026 uniquement : TTC isolé, syndic/TSC inclus non ventilés exclus, terrasse sans valorisation distincte exclue. Reclassements d’éligibilité sans changement de prix.
- OA420 TTC et SI300 syndic/TSC inclus sans ventilation : tableaux individuels, exclus des agrégats communs. SI468VAL : terrasse 84 m² non valorisée séparément ; ratio individuel 70 500 / 384 = 183,59, hors agrégat.
- FB90ANFA : loyer HT HC connu 15 000 MAD/mois, surface privative inconnue ; aucun indice HT HC calculable sur des surfaces admissibles.
Règles applicables à partir du 26/10/2026
- Une fiche relue avec un prix et une surface inchangés reste un prix demandé : ce statu quo n’est jamais une preuve de disponibilité.
- Contrôles séparés : previous_fresh_checks (28 tentatives, 28 relues), recovery_checks (4 URL historiques encore en échec, 4 échecs), new_asset_checks (7 nouvelles diffusions). 35 frais = 28 + 0 + 7 ; 121 historiques.
- Doublon suspect : une diffusion secondaire très probablement du même lot (même surface, étage, aménagement) est publiée en fiche individuelle avec
suspected_duplicate_of, exclue des agrégats ; l’écart de prix entre diffusions n’est pas une variation temporelle. 7 diffusions = 6 actifs distincts. - Rediffusion identifiée d’un lot déjà relevé : non ajoutée. Annonce visible seulement en ligne de page de résultats : non admise, sans observation chiffrée.
- Quartiles P25/P75 publiés dès n ≥ 5 unités distinctes (percentile type 7), sur les seuls prix demandés non normalisés.
- Les rendus des éditions antérieures restent figés (snapshots V2 et V3 versionnés) ; elles ne prennent pas ces règles.
Contact
Question sur la méthode ou besoin d’une analyse vérifiée ?