Le directeur financier parcourait le fichier Excel pour la quatrième fois de la matinée. Trois feuilles imbriquées, des formules VLOOKUP qui se perdent entre les onglets, des données de valorisation copiées-collées depuis le système de conservation. Il était 14h30, le rapport AMMC devait être envoyé à 16h, et les totaux ne correspondaient pas.

Ce n'était pas une erreur exceptionnelle. C'était le mardi habituel d'une société de gestion qui pilotait plusieurs milliards de dirhams sous gestion avec des outils conçus pour des tableurs de dix lignes.

C'est le contexte dans lequel nous sommes intervenus. Voici ce que nous avons construit — et ce que vous pouvez reproduire.

Le problème structurel du reporting OPCVM en Excel

Les OPCVM marocains sont soumis à une double contrainte : la cadence de reporting imposée par l'AMMC (publication de la Valeur Liquidative quotidienne, rapports mensuels de performance, ratios réglementaires) et la complexité des calculs sous-jacents — performance glissante, tracking error, Sharpe, maximum drawdown, attribution de performance par facteur.

Dans la plupart des sociétés de gestion que nous accompagnons, le processus ressemble à ceci :

ÉtapeAvant (Excel)Risque
Collecte des VL brutes Export manuel depuis le système de conservation Erreur copier-coller, format date incohérent
Calcul des performances Formules Excel sur feuilles liées Référence circulaire silencieuse, recalcul partiel
Agrégation multi-fonds Consolidation manuelle entre classeurs Fonds oublié, doublons non détectés
Rapport AMMC Template Word rempli à la main Chiffres non synchronisés avec les calculs
Distribution interne Email avec PDF joint Versions multiples en circulation

Le coût réel : dans ce projet, l'équipe consacrait en moyenne 22 heures de travail analytique par semaine à des tâches de consolidation et de mise en forme — soit l'équivalent de plus d'un ETP sur l'année.

L'architecture : Python + Power BI + un modèle DAX dédié

L'enjeu n'était pas simplement de "faire un beau dashboard". Il fallait reconstruire la chaîne de données depuis la source, sécuriser les calculs, et produire une interface utilisable par des gérants non-techniciens.

Nous avons articulé la solution en trois couches.

Couche 1 — Pipeline Python de collecte et de calcul

Un script Python s'exécute chaque matin après la publication des VL par la conservation. Il calcule directement les indicateurs de performance — évitant ainsi toute manipulation manuelle.

# Calcul performance glissante et ratios
def calcul_perf_glissante(df_vl, fonds_id, periode):
    vl_serie = df_vl[df_vl['fonds_id'] == fonds_id]['vl']
    
    # Performance sur N jours ouvrés
    vl_fin   = vl_serie.iloc[-1]
    vl_debut = vl_serie.iloc[-periode]
    perf     = (vl_fin / vl_debut - 1) * 100
    
    # Volatilité annualisée (252 jours ouvrés)
    rendements  = vl_serie.pct_change().dropna()
    volatilite  = rendements.std() * (252 ** 0.5) * 100
    
    # Sharpe Ratio (taux sans risque BDT ~3 %)
    taux_rf     = 0.03 / 252
    sharpe      = (rendements.mean() - taux_rf) / rendements.std() * (252 ** 0.5)
    
    return {'perf': perf, 'vol': volatilite, 'sharpe': sharpe}

Couche 2 — Modèle DAX dans Power BI

Le fichier Power BI se connecte directement au fichier Parquet produit par le pipeline. Le modèle DAX contient les mesures critiques — notamment le calcul de la VL cumulée qui, comme pour tout calcul YTD en finance, nécessite une gestion explicite du contexte de filtre.

-- Performance depuis la création du fonds
Perf_Depuis_Creation :=
CALCULATE(
    DIVIDE(
        [VL_Dernier_Jour] - [VL_Premier_Jour],
        [VL_Premier_Jour]
    ) * 100,
    REMOVEFILTERS(Dim_Date[Date])  -- contexte explicite
)

-- Tracking Error vs benchmark
Tracking_Error :=
VAR ecarts = ADDCOLUMNS(
    Dim_Date,
    "diff", [Rendement_Quotidien] - [Rendement_Benchmark]
)
RETURN
    SQRT(AVERAGEX(ecarts, [diff] ^ 2)) * SQRT(252) * 100

Point d'attention : le calcul de performance cumulative depuis la création nécessite REMOVEFILTERS sur la dimension date — sans quoi Power BI n'agrège que la plage visible à l'écran, non l'historique complet du fonds. C'est la même logique que les erreurs de totaux DAX classiques, appliquée à la finance.

Couche 3 — Rapport Power BI Service avec refresh planifié

Le rapport est publié sur Power BI Service avec un refresh automatique à 8h00 chaque jour ouvré. Les gérants accèdent au dashboard depuis leur navigateur — aucune installation requise, aucun fichier à ouvrir.

Le pipeline de déploiement étape par étape

API REST ou export SFTP automatisé depuis le dépositaire — fichier CSV journalier contenant les VL brutes par fonds et par classe de parts.

Le script calcule les rendements, détecte les anomalies (VL négative, variation quotidienne > seuil paramétrable) et rejette les lignes invalides avec log d'erreur.

Les données validées sont écrites en format Parquet — lecture 40× plus rapide que CSV pour Power BI, et versionnable facilement.

Power BI Service pointe sur le fichier SharePoint. Le refresh planifié à 8h00 charge les nouvelles données sans action humaine — le dashboard est à jour avant l'ouverture des marchés.

Un script Power Automate exporte chaque lundi matin les 5 tableaux réglementaires en PDF depuis le rapport Power BI — envoi automatique aux équipes compliance.

Ce que ça a changé concrètement

Après six mois en production, les chiffres parlent d'eux-mêmes.

Au-delà des chiffres, ce projet a transformé le rôle de l'équipe de gestion. Les gérants passent aujourd'hui leur temps à analyser la performance et à prendre des décisions d'allocation — non plus à consolider des tableaux. Le CFO a arrêté d'ouvrir Excel le mardi matin.

Ce que vous pouvez faire dès maintenant

Si votre société de gestion produit encore ses reportings OPCVM en Excel, voici par où commencer :

1. Auditez votre pipeline actuel. Combien d'heures par semaine sont consacrées à la consolidation de données ? Où se trouvent les étapes manuelles ? Quels sont les points de défaillance récurrents ?

2. Commencez par un seul fonds. L'erreur classique est de vouloir tout migrer d'un coup. Choisissez votre fonds obligataire le plus simple, automatisez son pipeline complet, validez en parallèle avec l'Excel pendant 30 jours, puis étendez.

3. Investissez dans le modèle DAX avant l'interface. Un dashboard beau avec des mesures fausses est pire qu'un tableau Excel correct. Prenez le temps de définir les 20 mesures fondamentales — VL, performance glissante, Sharpe, tracking error, drawdown — et de les valider avec votre équipe de gestion.

À noter : ce type d'architecture fonctionne sans infrastructure lourde. Power BI Service + Python + SharePoint ou OneDrive est une stack accessible à toute société de gestion, même sans département IT dédié. Aucun serveur on-premise, aucune base de données à maintenir.

Votre reporting OPCVM en 6 semaines

ANAILYNIS accompagne les sociétés de gestion d'actifs marocaines dans la mise en place de pipelines de reporting automatisés — de l'audit initial au déploiement Power BI Service.

Parlons de votre gamme de fonds