Added MS reviews
This commit is contained in:
parent
9a96d1b1d6
commit
7b97a9a79b
629
carmignac_pipeline.py
Normal file
629
carmignac_pipeline.py
Normal file
|
|
@ -0,0 +1,629 @@
|
|||
"""
|
||||
=============================================================================
|
||||
CARMIGNAC × ENSAE — Pipeline : Performance → Flux nets
|
||||
=============================================================================
|
||||
|
||||
Pipeline complet :
|
||||
1. Chargement & exploration
|
||||
2. Table de correspondance shareClass → ISIN (clé de jointure)
|
||||
3. Jointure AUM (stocks) × Performance (weekly_perf)
|
||||
4. Feature engineering : features de performance décalées + percentile
|
||||
5. Construction de la variable cible : flux nets (ΔAum proxy)
|
||||
6. Modèle prédictif : Random Forest avec walk-forward validation
|
||||
7. Analyse d'importance des variables (SHAP-like permutation importance)
|
||||
|
||||
NOTE : Ce script utilise les fichiers *_head.csv pour la démonstration.
|
||||
Remplacer les chemins par les fichiers complets pour l'analyse finale.
|
||||
|
||||
Dépendances : pandas, numpy, scikit-learn, matplotlib, seaborn
|
||||
=============================================================================
|
||||
"""
|
||||
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.gridspec as gridspec
|
||||
import seaborn as sns
|
||||
from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor
|
||||
from sklearn.linear_model import Ridge
|
||||
from sklearn.preprocessing import StandardScaler
|
||||
from sklearn.metrics import mean_absolute_error, r2_score
|
||||
from sklearn.inspection import permutation_importance
|
||||
import warnings
|
||||
warnings.filterwarnings('ignore')
|
||||
|
||||
# ── Style global ──────────────────────────────────────────────────────────────
|
||||
plt.rcParams.update({
|
||||
'figure.facecolor': 'white',
|
||||
'axes.facecolor': '#f8f9fa',
|
||||
'axes.grid': True,
|
||||
'grid.alpha': 0.4,
|
||||
'font.family': 'DejaVu Sans',
|
||||
})
|
||||
COLORS = ['#1f4e79', '#2e75b6', '#70ad47', '#ed7d31', '#a50026', '#ffc000']
|
||||
|
||||
# =============================================================================
|
||||
# 1. CHARGEMENT DES DONNÉES
|
||||
# =============================================================================
|
||||
|
||||
print("=" * 60)
|
||||
print("1. CHARGEMENT DES DONNÉES")
|
||||
print("=" * 60)
|
||||
|
||||
# ── Remplacer par les chemins vers les fichiers complets ──────────────────────
|
||||
PATH_STOCKS = "equity_stocks_head.csv" # → fichier AUM mensuel par compte
|
||||
PATH_PERF = "weekly_perf_head.csv" # → performances hebdomadaires
|
||||
|
||||
stocks = pd.read_csv(PATH_STOCKS, index_col=0)
|
||||
perf = pd.read_csv(PATH_PERF, index_col=0)
|
||||
|
||||
# Parsing des dates
|
||||
stocks['Centralisation Date'] = pd.to_datetime(stocks['Centralisation Date'])
|
||||
perf['Date'] = pd.to_datetime(perf['Date'])
|
||||
|
||||
print(f"stocks : {stocks.shape[0]:,} lignes × {stocks.shape[1]} colonnes")
|
||||
print(f"perf : {perf.shape[0]:,} lignes × {perf.shape[1]} colonnes")
|
||||
print(f"\nstocks — plage dates : {stocks['Centralisation Date'].min().date()} → {stocks['Centralisation Date'].max().date()}")
|
||||
print(f"perf — plage dates : {perf['Date'].min().date()} → {perf['Date'].max().date()}")
|
||||
print(f"perf — périodes disponibles : {sorted(perf['perfPeriod'].unique())}")
|
||||
|
||||
# =============================================================================
|
||||
# 2. TABLE DE CORRESPONDANCE shareClass_name → ISIN
|
||||
# =============================================================================
|
||||
#
|
||||
# Problème : weekly_perf n'a pas d'ISIN, stocks n'a pas le nom complet
|
||||
# de shareclass. La jointure se fait en deux temps :
|
||||
# a) Extraction d'un nom court depuis chaque source
|
||||
# b) Matching fuzzy sur ce nom court + Type shareclass + Devise
|
||||
#
|
||||
# En production : remplacer par la table de référence ISIN complète
|
||||
# fournie par Morningstar (fichier Peers.csv) qui contient Name + ISIN.
|
||||
# =============================================================================
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("2. TABLE DE CORRESPONDANCE shareClass → ISIN")
|
||||
print("=" * 60)
|
||||
|
||||
# ── Extraction du nom de stratégie (nom court) depuis perf ───────────────────
|
||||
# Exemples :
|
||||
# "Carmignac Pf Asia Discovery A EUR Acc" → "Asia Discovery", type=A, ccy=EUR
|
||||
# "Carmignac Investissement F EUR Acc" → "Investissement", type=F, ccy=EUR
|
||||
def parse_shareclass_name(name):
|
||||
"""
|
||||
Extrait (strategy_name, shareclass_type, currency) depuis le nom complet.
|
||||
Logique : on retire le préfixe Carmignac / Carmignac Pf, puis on parse
|
||||
le suffixe " X YYY Acc" en fin de chaîne.
|
||||
"""
|
||||
s = name.strip()
|
||||
for prefix in ['Carmignac Portfolio ', 'Carmignac Pf ', 'Carmignac ']:
|
||||
if s.startswith(prefix):
|
||||
s = s[len(prefix):]
|
||||
break
|
||||
# Suffix pattern : " A EUR Acc" ou " F USD Acc" etc.
|
||||
import re
|
||||
m = re.search(r'\s+([A-Z])\s+([A-Z]{3})\s+Acc\s*$', s)
|
||||
if m:
|
||||
strategy = s[:m.start()].strip()
|
||||
sc_type = m.group(1)
|
||||
currency = m.group(2)
|
||||
else:
|
||||
strategy = s
|
||||
sc_type = None
|
||||
currency = None
|
||||
return strategy, sc_type, currency
|
||||
|
||||
perf_parsed = perf['shareClass_name'].drop_duplicates().apply(
|
||||
lambda x: pd.Series(parse_shareclass_name(x),
|
||||
index=['strategy_name', 'sc_type', 'currency'])
|
||||
)
|
||||
perf_parsed['shareClass_name'] = perf['shareClass_name'].drop_duplicates().values
|
||||
print("Shareclass parsées depuis perf :")
|
||||
print(perf_parsed.to_string(index=False))
|
||||
|
||||
# ── Extraction du nom court depuis stocks ─────────────────────────────────────
|
||||
stocks['strategy_name'] = (stocks['Product - Fund']
|
||||
.str.replace('Carmignac Portfolio ', '', regex=False)
|
||||
.str.replace('Carmignac ', '', regex=False)
|
||||
.str.strip())
|
||||
|
||||
# ── Correspondance ISIN depuis stocks : fund + type + currency ────────────────
|
||||
isin_ref = (stocks[['strategy_name',
|
||||
'Product - Shareclass Type',
|
||||
'Product - Shareclass Currency',
|
||||
'Product - Isin']]
|
||||
.drop_duplicates()
|
||||
.rename(columns={
|
||||
'Product - Shareclass Type': 'sc_type',
|
||||
'Product - Shareclass Currency': 'currency',
|
||||
'Product - Isin': 'isin'
|
||||
}))
|
||||
|
||||
# ── Jointure sur (strategy_name, sc_type, currency) ──────────────────────────
|
||||
mapping = perf_parsed.merge(isin_ref, on=['strategy_name', 'sc_type', 'currency'], how='left')
|
||||
print("\nTable de correspondance shareClass_name → ISIN :")
|
||||
print(mapping[['shareClass_name', 'strategy_name', 'sc_type', 'currency', 'isin']].to_string(index=False))
|
||||
|
||||
matched = mapping['isin'].notna().sum()
|
||||
print(f"\nMatch : {matched}/{len(mapping)} shareclass liées à un ISIN")
|
||||
if matched < len(mapping):
|
||||
unmatched = mapping[mapping['isin'].isna()]['shareClass_name'].tolist()
|
||||
print(f"⚠ Non matchées (à compléter manuellement ou via Peers.csv) :")
|
||||
for u in unmatched:
|
||||
print(f" - {u}")
|
||||
|
||||
# Enrichissement de perf avec l'ISIN
|
||||
perf = perf.merge(mapping[['shareClass_name', 'isin', 'strategy_name']],
|
||||
on='shareClass_name', how='left')
|
||||
|
||||
# =============================================================================
|
||||
# 3. CONSTRUCTION DU PANEL MENSUEL
|
||||
# =============================================================================
|
||||
#
|
||||
# Objectif : une ligne = (compte client, fonds, mois)
|
||||
# Colonnes : AUM_t, puis features de performance sur les mois précédents
|
||||
#
|
||||
# Alignement temporel :
|
||||
# - stocks : snapshot mensuel (fin de mois)
|
||||
# - perf : données hebdomadaires → on prend la valeur la plus récente
|
||||
# avant ou à la date de snapshot mensuel
|
||||
# =============================================================================
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("3. CONSTRUCTION DU PANEL MENSUEL")
|
||||
print("=" * 60)
|
||||
|
||||
# ── Pivot perf : une ligne par (isin, date_hebdo, perfPeriod) ────────────────
|
||||
perf_pivot = (perf
|
||||
.dropna(subset=['isin'])
|
||||
.pivot_table(index=['isin', 'Date'],
|
||||
columns='perfPeriod',
|
||||
values=['return', 'percentile'],
|
||||
aggfunc='mean')
|
||||
)
|
||||
# Aplatir les colonnes multi-index
|
||||
perf_pivot.columns = ['_'.join(col).strip() for col in perf_pivot.columns]
|
||||
perf_pivot = perf_pivot.reset_index()
|
||||
perf_pivot['Date'] = pd.to_datetime(perf_pivot['Date'])
|
||||
|
||||
print(f"perf_pivot shape : {perf_pivot.shape}")
|
||||
print(f"Colonnes de performance : {[c for c in perf_pivot.columns if c not in ['isin','Date']]}")
|
||||
|
||||
# ── Merge as-of : pour chaque snapshot stocks, trouver la perf hebdo ────────
|
||||
# la plus récente avant ou égale à la date de snapshot
|
||||
stocks_sorted = stocks.sort_values('Centralisation Date')
|
||||
perf_sorted = perf_pivot.sort_values('Date')
|
||||
|
||||
# Merge as-of par ISIN
|
||||
merged_parts = []
|
||||
for isin_val in stocks_sorted['Product - Isin'].unique():
|
||||
s_isin = stocks_sorted[stocks_sorted['Product - Isin'] == isin_val].copy()
|
||||
p_isin = perf_sorted[perf_sorted['isin'] == isin_val].copy()
|
||||
if p_isin.empty:
|
||||
merged_parts.append(s_isin)
|
||||
continue
|
||||
merged = pd.merge_asof(
|
||||
s_isin.sort_values('Centralisation Date'),
|
||||
p_isin.sort_values('Date'),
|
||||
left_on='Centralisation Date',
|
||||
right_on='Date',
|
||||
direction='backward',
|
||||
tolerance=pd.Timedelta('35 days') # max 5 semaines d'écart
|
||||
)
|
||||
merged_parts.append(merged)
|
||||
|
||||
panel = pd.concat(merged_parts, ignore_index=True)
|
||||
perf_cols = [c for c in panel.columns if c not in stocks.columns and c != 'isin' and c != 'Date']
|
||||
print(f"\nPanel après merge : {panel.shape}")
|
||||
print(f"Colonnes de perf jointes : {perf_cols}")
|
||||
n_matched = panel[perf_cols[0]].notna().sum() if perf_cols else 0
|
||||
print(f"Lignes avec performance jointe : {n_matched}/{len(panel)}")
|
||||
|
||||
# =============================================================================
|
||||
# 4. FEATURE ENGINEERING
|
||||
# =============================================================================
|
||||
#
|
||||
# Features construites par compte × fonds × mois :
|
||||
#
|
||||
# [A] Performance absolue décalée
|
||||
# - perf_6Mo : rendement sur 6 mois (lag=0, observé à t)
|
||||
# - perf_1Yr : rendement sur 1 an
|
||||
#
|
||||
# [B] Performance relative (percentile Morningstar)
|
||||
# - pct_6Mo : percentile dans la catégorie sur 6 mois
|
||||
# - pct_1Yr : percentile dans la catégorie sur 1 an
|
||||
#
|
||||
# [C] Features client (RFM proxy depuis AUM)
|
||||
# - aum_t : encours à t (proxy du M de RFM)
|
||||
# - aum_lag1 : encours à t-1 mois
|
||||
# - aum_lag3 : encours à t-3 mois
|
||||
# - aum_growth_1m : croissance MoM de l'AUM
|
||||
# - aum_growth_3m : croissance sur 3 mois
|
||||
#
|
||||
# [D] Variable cible : flux_net_proxy = AUM(t+1) - AUM(t)
|
||||
# (approximation des flux nets en l'absence des transactions brutes)
|
||||
# NOTE : avec les données de flux bruts (souscriptions + rachats),
|
||||
# remplacer par flux_net = sum(souscriptions) - sum(rachats)
|
||||
# sur la période t → t+1.
|
||||
#
|
||||
# =============================================================================
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("4. FEATURE ENGINEERING")
|
||||
print("=" * 60)
|
||||
|
||||
# ── Tri du panel ──────────────────────────────────────────────────────────────
|
||||
panel = panel.sort_values(['Registrar Account - ID', 'Product - Isin', 'Centralisation Date'])
|
||||
|
||||
# ── [C] Features AUM (par compte × fonds) ────────────────────────────────────
|
||||
panel['aum_lag1'] = panel.groupby(['Registrar Account - ID', 'Product - Isin'])['Value - AUM €'].shift(1)
|
||||
panel['aum_lag3'] = panel.groupby(['Registrar Account - ID', 'Product - Isin'])['Value - AUM €'].shift(3)
|
||||
|
||||
panel['aum_growth_1m'] = (panel['Value - AUM €'] - panel['aum_lag1']) / (panel['aum_lag1'].abs() + 1)
|
||||
panel['aum_growth_3m'] = (panel['Value - AUM €'] - panel['aum_lag3']) / (panel['aum_lag3'].abs() + 1)
|
||||
|
||||
# ── [D] Variable cible : ΔAum(t → t+1) ──────────────────────────────────────
|
||||
panel['aum_next'] = panel.groupby(['Registrar Account - ID', 'Product - Isin'])['Value - AUM €'].shift(-1)
|
||||
panel['flux_net_proxy'] = panel['aum_next'] - panel['Value - AUM €']
|
||||
|
||||
# ── Sélection des features ────────────────────────────────────────────────────
|
||||
# Colonnes de performance disponibles (dépend du contenu de perf)
|
||||
PERF_COLS_AVAILABLE = [c for c in perf_cols if any(
|
||||
tag in c for tag in ['6Mo', '1Yr', '6mo', '1yr', '6MoRet', '1YrRet']
|
||||
)]
|
||||
PCT_COLS_AVAILABLE = [c for c in perf_cols if 'percentile' in c.lower()]
|
||||
|
||||
# Si données head (seulement 1YrRet) → on utilise ce qui est disponible
|
||||
FEATURE_COLS = (
|
||||
['Value - AUM €', 'aum_lag1', 'aum_lag3', 'aum_growth_1m', 'aum_growth_3m']
|
||||
+ PERF_COLS_AVAILABLE
|
||||
+ PCT_COLS_AVAILABLE
|
||||
)
|
||||
FEATURE_COLS = [c for c in FEATURE_COLS if c in panel.columns]
|
||||
|
||||
print(f"Features sélectionnées ({len(FEATURE_COLS)}) :")
|
||||
for f in FEATURE_COLS:
|
||||
n_valid = panel[f].notna().sum()
|
||||
print(f" {f:<40} → {n_valid:,} valeurs non-nulles")
|
||||
|
||||
TARGET = 'flux_net_proxy'
|
||||
|
||||
# ── Dataset modèle ────────────────────────────────────────────────────────────
|
||||
model_data = panel.dropna(subset=FEATURE_COLS + [TARGET]).copy()
|
||||
print(f"\nDataset pour modélisation : {model_data.shape[0]:,} lignes")
|
||||
|
||||
# =============================================================================
|
||||
# 5. MODÈLE PRÉDICTIF — WALK-FORWARD VALIDATION
|
||||
# =============================================================================
|
||||
#
|
||||
# Validation walk-forward (expanding window) :
|
||||
# - Évite le data leakage temporel
|
||||
# - À chaque fold : train = tout le passé, test = le mois suivant
|
||||
# - On calcule MAE, R² sur la fenêtre de test
|
||||
#
|
||||
# Modèles comparés :
|
||||
# 1. Baseline : moyenne mobile (benchmark naïf)
|
||||
# 2. Ridge Regression : modèle linéaire régularisé
|
||||
# 3. Random Forest : non-linéaire, robuste aux outliers
|
||||
# 4. Gradient Boosting : state-of-the-art sur données tabulaires
|
||||
#
|
||||
# =============================================================================
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("5. WALK-FORWARD VALIDATION")
|
||||
print("=" * 60)
|
||||
|
||||
if model_data.empty:
|
||||
print("⚠ Pas assez de données (fichiers head) pour la modélisation.")
|
||||
print(" Le pipeline est prêt — relancer avec les fichiers complets.")
|
||||
RUN_MODEL = False
|
||||
else:
|
||||
RUN_MODEL = True
|
||||
dates_sorted = sorted(model_data['Centralisation Date'].unique())
|
||||
N_DATES = len(dates_sorted)
|
||||
MIN_TRAIN = max(2, N_DATES // 3) # au moins 1/3 des dates en train
|
||||
print(f"Dates disponibles : {N_DATES} | Min train : {MIN_TRAIN} snapshots")
|
||||
|
||||
if RUN_MODEL and N_DATES > MIN_TRAIN:
|
||||
|
||||
results = []
|
||||
models = {
|
||||
'Ridge': Ridge(alpha=1.0),
|
||||
'Random Forest': RandomForestRegressor(n_estimators=100, max_depth=5,
|
||||
random_state=42, n_jobs=-1),
|
||||
'Gradient Boost': GradientBoostingRegressor(n_estimators=100, max_depth=3,
|
||||
learning_rate=0.05,
|
||||
random_state=42),
|
||||
}
|
||||
scaler = StandardScaler()
|
||||
|
||||
for test_idx in range(MIN_TRAIN, N_DATES):
|
||||
train_dates = dates_sorted[:test_idx]
|
||||
test_date = dates_sorted[test_idx]
|
||||
|
||||
train = model_data[model_data['Centralisation Date'].isin(train_dates)]
|
||||
test = model_data[model_data['Centralisation Date'] == test_date]
|
||||
|
||||
X_train = train[FEATURE_COLS].fillna(0)
|
||||
y_train = train[TARGET]
|
||||
X_test = test[FEATURE_COLS].fillna(0)
|
||||
y_test = test[TARGET]
|
||||
|
||||
if len(X_test) == 0:
|
||||
continue
|
||||
|
||||
X_train_sc = scaler.fit_transform(X_train)
|
||||
X_test_sc = scaler.transform(X_test)
|
||||
|
||||
# Baseline : moyenne de l'AUM passé comme prédiction de flux
|
||||
baseline_pred = np.zeros(len(y_test))
|
||||
baseline_mae = mean_absolute_error(y_test, baseline_pred)
|
||||
|
||||
for model_name, model in models.items():
|
||||
X_tr = X_train_sc if model_name == 'Ridge' else X_train
|
||||
X_te = X_test_sc if model_name == 'Ridge' else X_test
|
||||
model.fit(X_tr, y_train)
|
||||
preds = model.predict(X_te)
|
||||
results.append({
|
||||
'test_date': test_date,
|
||||
'model': model_name,
|
||||
'mae': mean_absolute_error(y_test, preds),
|
||||
'r2': r2_score(y_test, preds) if len(y_test) > 1 else np.nan,
|
||||
'baseline_mae': baseline_mae,
|
||||
'n_test': len(y_test),
|
||||
})
|
||||
|
||||
results_df = pd.DataFrame(results)
|
||||
print("\nRésultats agrégés (médiane sur tous les folds) :")
|
||||
summary = (results_df.groupby('model')
|
||||
.agg(MAE_median=('mae', 'median'),
|
||||
R2_median=('r2', 'median'),
|
||||
MAE_mean=('mae', 'mean'))
|
||||
.round(4))
|
||||
print(summary)
|
||||
|
||||
baseline_mae_median = results_df['baseline_mae'].median()
|
||||
print(f"\nBaseline (zéro) MAE médiane : {baseline_mae_median:.4f}")
|
||||
|
||||
else:
|
||||
if RUN_MODEL:
|
||||
print("⚠ Pas assez de dates distinctes pour le walk-forward.")
|
||||
print(" Modélisation ignorée sur données head — OK sur données complètes.")
|
||||
results_df = pd.DataFrame()
|
||||
|
||||
# =============================================================================
|
||||
# 6. IMPORTANCE DES VARIABLES
|
||||
# =============================================================================
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("6. IMPORTANCE DES VARIABLES")
|
||||
print("=" * 60)
|
||||
|
||||
if RUN_MODEL and not model_data.empty and len(model_data) > 10:
|
||||
X_all = model_data[FEATURE_COLS].fillna(0)
|
||||
y_all = model_data[TARGET]
|
||||
|
||||
rf_final = RandomForestRegressor(n_estimators=200, max_depth=6,
|
||||
random_state=42, n_jobs=-1)
|
||||
rf_final.fit(X_all, y_all)
|
||||
|
||||
importances = pd.Series(rf_final.feature_importances_, index=FEATURE_COLS).sort_values(ascending=False)
|
||||
print("Importance des features (Random Forest) :")
|
||||
print(importances.round(4).to_string())
|
||||
|
||||
# Permutation importance (plus robuste)
|
||||
perm = permutation_importance(rf_final, X_all, y_all, n_repeats=10, random_state=42, n_jobs=-1)
|
||||
perm_imp = pd.Series(perm.importances_mean, index=FEATURE_COLS).sort_values(ascending=False)
|
||||
print("\nPermutation importance :")
|
||||
print(perm_imp.round(4).to_string())
|
||||
else:
|
||||
importances = pd.Series(dtype=float)
|
||||
perm_imp = pd.Series(dtype=float)
|
||||
print("Importance des variables : données insuffisantes (head CSV).")
|
||||
print("Simuler les noms de features attendues :")
|
||||
expected = FEATURE_COLS if FEATURE_COLS else [
|
||||
'Value - AUM €', 'aum_lag1', 'aum_lag3',
|
||||
'aum_growth_1m', 'aum_growth_3m',
|
||||
'return_6MoRet', 'return_1YrRet',
|
||||
'percentile_6MoRet', 'percentile_1YrRet'
|
||||
]
|
||||
print(" " + ", ".join(expected))
|
||||
|
||||
# =============================================================================
|
||||
# 7. VISUALISATIONS
|
||||
# =============================================================================
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("7. GÉNÉRATION DES VISUALISATIONS")
|
||||
print("=" * 60)
|
||||
|
||||
fig = plt.figure(figsize=(18, 20))
|
||||
fig.patch.set_facecolor('white')
|
||||
gs = gridspec.GridSpec(4, 2, figure=fig, hspace=0.45, wspace=0.35)
|
||||
|
||||
# ── [A] Distribution des AUM par fonds ───────────────────────────────────────
|
||||
ax1 = fig.add_subplot(gs[0, :])
|
||||
aum_by_fund = stocks.groupby('strategy_name')['Value - AUM €'].sum().sort_values(ascending=False)
|
||||
bars = ax1.bar(aum_by_fund.index, aum_by_fund.values / 1e6, color=COLORS[:len(aum_by_fund)])
|
||||
ax1.set_title('AUM total par fonds (données disponibles)', fontsize=13, fontweight='bold', pad=10)
|
||||
ax1.set_ylabel('AUM (M€)')
|
||||
ax1.tick_params(axis='x', rotation=20)
|
||||
for bar, val in zip(bars, aum_by_fund.values):
|
||||
ax1.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.5,
|
||||
f'{val/1e6:.1f}M', ha='center', va='bottom', fontsize=8)
|
||||
|
||||
# ── [B] Évolution temporelle de l'AUM ────────────────────────────────────────
|
||||
ax2 = fig.add_subplot(gs[1, 0])
|
||||
aum_time = stocks.groupby('Centralisation Date')['Value - AUM €'].sum()
|
||||
ax2.fill_between(aum_time.index, aum_time.values / 1e6, alpha=0.3, color=COLORS[0])
|
||||
ax2.plot(aum_time.index, aum_time.values / 1e6, color=COLORS[0], linewidth=2)
|
||||
ax2.set_title('AUM agrégé — évolution temporelle', fontsize=12, fontweight='bold')
|
||||
ax2.set_ylabel('AUM (M€)')
|
||||
ax2.tick_params(axis='x', rotation=20)
|
||||
|
||||
# ── [C] Distribution des performances ────────────────────────────────────────
|
||||
ax3 = fig.add_subplot(gs[1, 1])
|
||||
perf_cols_ret = [c for c in perf.columns if 'return' == c]
|
||||
if perf_cols_ret:
|
||||
for col in perf_cols_ret[:3]:
|
||||
ax3.hist(perf[col].dropna(), bins=30, alpha=0.6, label=col)
|
||||
ax3.legend()
|
||||
else:
|
||||
ax3.hist(perf['return'].dropna(), bins=30, color=COLORS[1], alpha=0.8, edgecolor='white')
|
||||
ax3.set_xlabel('Rendement 1 an (%)')
|
||||
ax3.set_title('Distribution des performances (1YrRet)', fontsize=12, fontweight='bold')
|
||||
ax3.set_ylabel('Fréquence')
|
||||
|
||||
# ── [D] Scatter : performance vs percentile ──────────────────────────────────
|
||||
ax4 = fig.add_subplot(gs[2, 0])
|
||||
if 'return' in perf.columns and 'percentile' in perf.columns:
|
||||
sc = ax4.scatter(perf['return'], perf['percentile'],
|
||||
alpha=0.5, c=COLORS[0], edgecolors='none', s=25)
|
||||
ax4.set_xlabel('Rendement 1 an (%)')
|
||||
ax4.set_ylabel('Percentile dans la catégorie')
|
||||
ax4.set_title('Performance vs Rang relatif (peer percentile)', fontsize=12, fontweight='bold')
|
||||
# Ligne de référence médiane
|
||||
ax4.axhline(50, color='red', linestyle='--', alpha=0.5, label='Médiane (50e pct)')
|
||||
ax4.legend(fontsize=9)
|
||||
|
||||
# ── [E] Importance des variables (si disponible) ─────────────────────────────
|
||||
ax5 = fig.add_subplot(gs[2, 1])
|
||||
if not importances.empty:
|
||||
colors_imp = [COLORS[2] if 'perf' in f or 'return' in f or 'percentile' in f
|
||||
else COLORS[0] for f in importances.index]
|
||||
ax5.barh(importances.index[::-1], importances.values[::-1], color=colors_imp[::-1])
|
||||
ax5.set_title('Importance des features (Random Forest)', fontsize=12, fontweight='bold')
|
||||
ax5.set_xlabel('Importance (Gini impurity)')
|
||||
# Légende
|
||||
from matplotlib.patches import Patch
|
||||
legend_els = [Patch(color=COLORS[2], label='Features performance'),
|
||||
Patch(color=COLORS[0], label='Features AUM/comportement')]
|
||||
ax5.legend(handles=legend_els, fontsize=8)
|
||||
else:
|
||||
# Afficher le schéma du pipeline à la place
|
||||
ax5.axis('off')
|
||||
pipeline_text = (
|
||||
"PIPELINE — FEATURES ATTENDUES\n\n"
|
||||
"■ AUM features (comportement):\n"
|
||||
" • Value - AUM € (encours actuel)\n"
|
||||
" • aum_lag1, aum_lag3\n"
|
||||
" • aum_growth_1m, aum_growth_3m\n\n"
|
||||
"■ Performance features (moyen terme):\n"
|
||||
" • return_6MoRet\n"
|
||||
" • return_1YrRet\n\n"
|
||||
"■ Relative performance (peer):\n"
|
||||
" • percentile_6MoRet\n"
|
||||
" • percentile_1YrRet\n\n"
|
||||
"→ Relancer avec données complètes\n"
|
||||
" pour obtenir les importances réelles."
|
||||
)
|
||||
ax5.text(0.05, 0.95, pipeline_text, transform=ax5.transAxes,
|
||||
fontsize=9.5, verticalalignment='top', fontfamily='monospace',
|
||||
bbox=dict(boxstyle='round', facecolor='#eaf2fb', alpha=0.8))
|
||||
ax5.set_title('Features du modèle', fontsize=12, fontweight='bold')
|
||||
|
||||
# ── [F] Résultats walk-forward (si disponible) ───────────────────────────────
|
||||
ax6 = fig.add_subplot(gs[3, :])
|
||||
if not results_df.empty:
|
||||
for model_name, grp in results_df.groupby('model'):
|
||||
ax6.plot(grp['test_date'], grp['mae'], marker='o', label=model_name, linewidth=1.5)
|
||||
ax6.axhline(results_df['baseline_mae'].median(), color='black',
|
||||
linestyle='--', label='Baseline (zéro)', linewidth=1.5)
|
||||
ax6.set_title('Walk-Forward Validation — MAE par modèle', fontsize=12, fontweight='bold')
|
||||
ax6.set_ylabel('MAE (€)')
|
||||
ax6.legend()
|
||||
ax6.tick_params(axis='x', rotation=20)
|
||||
else:
|
||||
ax6.axis('off')
|
||||
# Schéma du walk-forward
|
||||
ax6.set_xlim(0, 10)
|
||||
ax6.set_ylim(0, 3)
|
||||
ax6.set_title('Walk-Forward Validation — Schéma', fontsize=12, fontweight='bold')
|
||||
ax6.set_facecolor('white')
|
||||
|
||||
colors_wf = [COLORS[0], COLORS[2], COLORS[3]]
|
||||
for fold_i in range(5):
|
||||
# Fenêtre train
|
||||
ax6.barh(2, fold_i + 2, left=0, height=0.35,
|
||||
color=COLORS[0], alpha=0.3 + fold_i * 0.08)
|
||||
# Fenêtre test
|
||||
ax6.barh(2, 1, left=fold_i + 2, height=0.35, color=COLORS[3], alpha=0.8)
|
||||
|
||||
ax6.text(3, 2.55, 'Train (expanding window)', fontsize=10, color=COLORS[0], fontweight='bold')
|
||||
ax6.text(5.5, 2.55, 'Test', fontsize=10, color=COLORS[3], fontweight='bold')
|
||||
ax6.text(0.2, 1.4,
|
||||
"Fold 1 : train t₁…t₂ → test t₃\n"
|
||||
"Fold 2 : train t₁…t₃ → test t₄\n"
|
||||
"Fold 3 : train t₁…t₄ → test t₅\n"
|
||||
" ...\n"
|
||||
"→ Évite tout data leakage temporel\n"
|
||||
"→ MAE et R² calculés sur chaque fenêtre de test",
|
||||
fontsize=10, fontfamily='monospace',
|
||||
bbox=dict(boxstyle='round', facecolor='#eaf2fb', alpha=0.8))
|
||||
ax6.set_yticks([])
|
||||
ax6.set_xticks([])
|
||||
|
||||
plt.suptitle('Carmignac × ENSAE — Pipeline : Performance → Flux nets',
|
||||
fontsize=15, fontweight='bold', y=1.01)
|
||||
|
||||
output_path = '/mnt/user-data/outputs/carmignac_pipeline_viz.png'
|
||||
plt.savefig(output_path, dpi=150, bbox_inches='tight', facecolor='white')
|
||||
plt.close()
|
||||
print(f"✅ Visualisation sauvegardée : {output_path}")
|
||||
|
||||
# =============================================================================
|
||||
# 8. RÉSUMÉ & INSTRUCTIONS POUR LES DONNÉES COMPLÈTES
|
||||
# =============================================================================
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("8. RÉSUMÉ & PROCHAINES ÉTAPES")
|
||||
print("=" * 60)
|
||||
|
||||
print("""
|
||||
PIPELINE IMPLÉMENTÉ
|
||||
───────────────────
|
||||
Étape 1 — Chargement
|
||||
• equity_stocks_head.csv : AUM mensuels par (compte, fonds, shareclass)
|
||||
• weekly_perf_head.csv : performances hebdomadaires par shareclass
|
||||
|
||||
Étape 2 — Jointure (clé construite)
|
||||
• Parsing shareClass_name → (strategy, type, currency)
|
||||
• Matching vers ISIN via stocks
|
||||
• merge_asof temporel (tolérance ±35j)
|
||||
⚠ En production : utiliser Peers.csv (Morningstar) comme table de référence
|
||||
ISIN complète pour éviter les non-matchés.
|
||||
|
||||
Étape 3 — Feature Engineering
|
||||
• AUM features : lag 1m, lag 3m, croissance 1m, croissance 3m
|
||||
• Perf absolue : return_6MoRet, return_1YrRet (lags à t)
|
||||
• Perf relative : percentile_6MoRet, percentile_1YrRet (vs peers)
|
||||
• Variable cible : ΔAum(t→t+1) [proxy flux nets]
|
||||
⚠ En production : remplacer ΔAum par flux_net = souscriptions - rachats
|
||||
|
||||
Étape 4 — Modèles
|
||||
• Baseline : prédiction zéro
|
||||
• Ridge Regression (linéaire régularisée)
|
||||
• Random Forest (non-linéaire, robuste)
|
||||
• Gradient Boosting (state-of-the-art tabulaire)
|
||||
|
||||
Étape 5 — Validation
|
||||
• Walk-forward expanding window (pas de data leakage)
|
||||
• Métriques : MAE, R²
|
||||
|
||||
POUR LANCER SUR LES DONNÉES COMPLÈTES
|
||||
──────────────────────────────────────
|
||||
1. Remplacer PATH_STOCKS et PATH_PERF par les vrais fichiers
|
||||
2. Ajouter le fichier Peers.csv dans la fonction parse_shareclass_name
|
||||
(jointure directe par ISIN si disponible dans perf complet)
|
||||
3. Remplacer flux_net_proxy par les vraies transactions brutes
|
||||
(fichier flux quotidiens → agrégation mensuelle par compte × fonds)
|
||||
4. Ajouter des features macro (€STR, indices obligataires) depuis
|
||||
market_data/esterRates.csv et Eur_Gov_Indices.xlsx
|
||||
|
||||
LECTURE DES RÉSULTATS
|
||||
──────────────────────
|
||||
La littérature (Sirri & Tufano 1998) prédit une relation CONVEXE :
|
||||
→ Les fonds en haut de percentile (top quartile) attirent des flux
|
||||
disproportionnés
|
||||
→ Les fonds en bas ne perdent pas symétriquement (« smart money »)
|
||||
→ Tester une feature non-linéaire : percentile² ou dummy top/bottom quartile
|
||||
""")
|
||||
1169
data_exploration/aum_flows_analysis.ipynb
Normal file
1169
data_exploration/aum_flows_analysis.ipynb
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -4,14 +4,12 @@
|
|||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# AUM Analysis\n",
|
||||
"\n",
|
||||
"This notebook sums the **Value - AUM €** by **Product - Asset Type** and by **Product - Fund** from the AUM sample data."
|
||||
"# Competitors Analysis"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
|
|
@ -52,57 +50,26 @@
|
|||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/tmp/ipykernel_4263/3768862044.py:5: DtypeWarning: Columns (0,1,2,3) have mixed types. Specify dtype option on import or set low_memory=False.\n",
|
||||
" stocks = pd.read_csv(f, sep=\";\")\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#with fs.open('projet-bdc-data//carmignac/Flows ENSAE V2 -20251105.csv', 'rb') as f:\n",
|
||||
" #flows = pd.read_csv(f, sep=\";\")\n",
|
||||
"\n",
|
||||
"with fs.open('projet-bdc-data//carmignac/AUM ENSAE V2 -20251105.csv', 'rb') as f:\n",
|
||||
" stocks = pd.read_csv(f, sep=\";\")\n",
|
||||
"\n",
|
||||
"#with fs.open('projet-bdc-data/carmignac/Monthly AUM and NAV since 2010.xlsx', 'rb') as f:#\n",
|
||||
" #nav_raw = pd.read_excel(f, header=None, engine=\"openpyxl\")\n",
|
||||
"\n",
|
||||
"#nav = nav_raw[0].str.split(\",\", expand=True)\n",
|
||||
"#nav.columns = nav.iloc[0]\n",
|
||||
"#nav = nav[1:].reset_index(drop=True)"
|
||||
"with fs.open('s3://projet-bdc-data/carmignac/Data Modélisation/competitors/weekly_perf_full.csv', 'rb') as f:\n",
|
||||
" weekly_perf = pd.read_csv(f, sep=\";\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Date conversion done.\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"stocks[\"Centralisation Date\"] = pd.to_datetime(stocks[\"Centralisation Date\"], errors=\"coerce\")\n",
|
||||
"#flows[\"Centralisation Date\"] = pd.to_datetime(flows[\"Centralisation Date\"], errors=\"coerce\")\n",
|
||||
"#nav[\"NavDate\"] = pd.to_datetime(nav[\"NavDate\"], format=\"%d/%m/%Y\", errors=\"coerce\")\n",
|
||||
"\n",
|
||||
"print(\"Date conversion done.\")"
|
||||
"weekly_perf[\"Date\"] = pd.to_datetime(weekly_perf['Date'])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Sum of AUM by Product - Asset Type"
|
||||
"## Time span of each competitor fund"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -114,16 +81,57 @@
|
|||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"AUM (€) by Product - Asset Type:\n",
|
||||
"Product - Asset Type\n",
|
||||
"Diversified 2.249487e+12\n",
|
||||
"Fixed Income 1.901982e+12\n",
|
||||
"Equity 9.811712e+11\n",
|
||||
"Alternative 1.208047e+11\n",
|
||||
"NaN 1.786480e+10\n",
|
||||
"Private Assets 2.205183e+09\n"
|
||||
" First_Appearance Last_Appearance\n",
|
||||
"shareClass_name \n",
|
||||
"AB EM Multi-Asset A EUR H 2012-12-01 2025-09-27\n",
|
||||
"AB European Growth A EUR 2024-03-23 2025-09-27\n",
|
||||
"AB European Income A2 EUR 2012-12-01 2025-09-27\n",
|
||||
"AB Event Driven S1 EUR H 2020-03-21 2025-09-27\n",
|
||||
"AB Global Dynamic Bond I2 GBP 2014-06-21 2025-09-27\n",
|
||||
"... ... ...\n",
|
||||
"iShares MSCI EM ex China ETF USD Acc 2021-05-29 2025-09-27\n",
|
||||
"iShares € Aggt Bd ESG SRI ETF EUR Dist 2012-12-01 2025-09-27\n",
|
||||
"iShares € Corp Bd 0-3yr ESG SRI ETF€Dist 2016-02-06 2025-09-27\n",
|
||||
"iShares € Govt Bond 1-3yr ETF EUR Dist 2012-12-01 2025-09-27\n",
|
||||
"ÖkoWorld ÖkoVision Classic C 2015-01-07 2015-12-30\n",
|
||||
"\n",
|
||||
"[1012 rows x 2 columns]\n"
|
||||
]
|
||||
},
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"span_df = weekly_perf.groupby('shareClass_name')['Date'].agg(['min', 'max'])\n",
|
||||
"\n",
|
||||
"span_df.columns = ['First_Appearance', 'Last_Appearance']\n",
|
||||
"\n",
|
||||
"print(span_df)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"carmignac_funds = weekly_perf[weekly_perf['shareClass_name'].str.contains(\"Carmignac\", case=False, na=False)]\n",
|
||||
"carmignac_span = carmignac_funds.groupby('shareClass_name')['Date'].agg(['min', 'max'])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"carmignac_weekly_perf_head = carmignac_funds.head(150)\n",
|
||||
"carmignac_weekly_perf_head.to_csv(\"weekly_perf_head.csv\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
|
|
@ -145,71 +153,176 @@
|
|||
" <thead>\n",
|
||||
" <tr style=\"text-align: right;\">\n",
|
||||
" <th></th>\n",
|
||||
" <th>Product - Asset Type</th>\n",
|
||||
" <th>Total AUM (€)</th>\n",
|
||||
" <th>min</th>\n",
|
||||
" <th>max</th>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>shareClass_name</th>\n",
|
||||
" <th></th>\n",
|
||||
" <th></th>\n",
|
||||
" </tr>\n",
|
||||
" </thead>\n",
|
||||
" <tbody>\n",
|
||||
" <tr>\n",
|
||||
" <th>0</th>\n",
|
||||
" <td>Diversified</td>\n",
|
||||
" <td>2.249487e+12</td>\n",
|
||||
" <th>AXA Sel Carmignac Convictions Instl I €</th>\n",
|
||||
" <td>2015-01-07</td>\n",
|
||||
" <td>2015-12-30</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>1</th>\n",
|
||||
" <td>Fixed Income</td>\n",
|
||||
" <td>1.901982e+12</td>\n",
|
||||
" <th>AXA Sel Carmignac Convictions Rtl R EUR</th>\n",
|
||||
" <td>2015-01-07</td>\n",
|
||||
" <td>2015-12-30</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>2</th>\n",
|
||||
" <td>Equity</td>\n",
|
||||
" <td>9.811712e+11</td>\n",
|
||||
" <th>Best Carmignac FI</th>\n",
|
||||
" <td>2015-01-07</td>\n",
|
||||
" <td>2015-12-30</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>3</th>\n",
|
||||
" <td>Alternative</td>\n",
|
||||
" <td>1.208047e+11</td>\n",
|
||||
" <th>Carmignac Absolute Ret Eur A EUR Acc</th>\n",
|
||||
" <td>2012-12-01</td>\n",
|
||||
" <td>2025-09-27</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>4</th>\n",
|
||||
" <td>NaN</td>\n",
|
||||
" <td>1.786480e+10</td>\n",
|
||||
" <th>Carmignac Absolute Ret Eur A EUR Ydis</th>\n",
|
||||
" <td>2015-01-07</td>\n",
|
||||
" <td>2015-12-30</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>5</th>\n",
|
||||
" <td>Private Assets</td>\n",
|
||||
" <td>2.205183e+09</td>\n",
|
||||
" <th>...</th>\n",
|
||||
" <td>...</td>\n",
|
||||
" <td>...</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>Multimgrs Equilibre-Carmignac Patrim I</th>\n",
|
||||
" <td>2015-01-07</td>\n",
|
||||
" <td>2015-12-30</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>Multimgrs Equilibre-Carmignac Patrim P</th>\n",
|
||||
" <td>2015-01-07</td>\n",
|
||||
" <td>2015-12-30</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>Multimgrs Equilibre-Carmignac Patrim S</th>\n",
|
||||
" <td>2015-01-07</td>\n",
|
||||
" <td>2015-12-30</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>Nomura Carmignac Fund A</th>\n",
|
||||
" <td>2015-01-07</td>\n",
|
||||
" <td>2015-12-30</td>\n",
|
||||
" </tr>\n",
|
||||
" <tr>\n",
|
||||
" <th>Nomura Carmignac Fund B</th>\n",
|
||||
" <td>2015-01-07</td>\n",
|
||||
" <td>2015-12-30</td>\n",
|
||||
" </tr>\n",
|
||||
" </tbody>\n",
|
||||
"</table>\n",
|
||||
"<p>224 rows × 2 columns</p>\n",
|
||||
"</div>"
|
||||
],
|
||||
"text/plain": [
|
||||
" Product - Asset Type Total AUM (€)\n",
|
||||
"0 Diversified 2.249487e+12\n",
|
||||
"1 Fixed Income 1.901982e+12\n",
|
||||
"2 Equity 9.811712e+11\n",
|
||||
"3 Alternative 1.208047e+11\n",
|
||||
"4 NaN 1.786480e+10\n",
|
||||
"5 Private Assets 2.205183e+09"
|
||||
" min max\n",
|
||||
"shareClass_name \n",
|
||||
"AXA Sel Carmignac Convictions Instl I € 2015-01-07 2015-12-30\n",
|
||||
"AXA Sel Carmignac Convictions Rtl R EUR 2015-01-07 2015-12-30\n",
|
||||
"Best Carmignac FI 2015-01-07 2015-12-30\n",
|
||||
"Carmignac Absolute Ret Eur A EUR Acc 2012-12-01 2025-09-27\n",
|
||||
"Carmignac Absolute Ret Eur A EUR Ydis 2015-01-07 2015-12-30\n",
|
||||
"... ... ...\n",
|
||||
"Multimgrs Equilibre-Carmignac Patrim I 2015-01-07 2015-12-30\n",
|
||||
"Multimgrs Equilibre-Carmignac Patrim P 2015-01-07 2015-12-30\n",
|
||||
"Multimgrs Equilibre-Carmignac Patrim S 2015-01-07 2015-12-30\n",
|
||||
"Nomura Carmignac Fund A 2015-01-07 2015-12-30\n",
|
||||
"Nomura Carmignac Fund B 2015-01-07 2015-12-30\n",
|
||||
"\n",
|
||||
"[224 rows x 2 columns]"
|
||||
]
|
||||
},
|
||||
"execution_count": 5,
|
||||
"execution_count": 13,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# Sum Value - AUM € per Product - Asset Type\n",
|
||||
"aum_by_asset_type = stocks.groupby('Product - Asset Type', dropna=False)['Value - AUM €'].sum().sort_values(ascending=False)\n",
|
||||
"carmignac_span_filtered = carmignac_span[carmignac_span[\"max\"] >= 2025-12]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Other"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
" Date perfPeriod shareClass_name \\\n",
|
||||
"4 2012-12-29 1YrRet Carmignac Pf Asia Discovery A EUR Acc \n",
|
||||
"11 2012-12-29 1YrRet Carmignac Pf Asia Discovery F EUR Acc \n",
|
||||
"16 2013-01-05 1YrRet Carmignac Pf Asia Discovery F EUR Acc \n",
|
||||
"26 2013-01-05 1YrRet Carmignac Pf Asia Discovery A EUR Acc \n",
|
||||
"32 2013-01-12 1YrRet Carmignac Pf Asia Discovery F EUR Acc \n",
|
||||
"... ... ... ... \n",
|
||||
"2370113 2015-12-30 WeeklyRet Carmignac Pf Global Bond A EUR Acc \n",
|
||||
"2370124 2015-12-30 WeeklyRet Carmignac Pf Asia Discovery F EUR Acc \n",
|
||||
"2370142 2015-12-30 WeeklyRet Carmignac Pf Investissement A EUR Acc \n",
|
||||
"2370150 2015-12-30 WeeklyRet Carmignac Patrimoine A EUR Acc \n",
|
||||
"2370157 2015-12-30 WeeklyRet Carmignac Pf Sécurité FW EUR Acc \n",
|
||||
"\n",
|
||||
" return percentile max_date \n",
|
||||
"4 15.370509 2.0 2025-09-27 \n",
|
||||
"11 15.364424 2.0 2025-09-27 \n",
|
||||
"16 15.487607 2.0 2025-09-27 \n",
|
||||
"26 15.487613 2.0 2025-09-27 \n",
|
||||
"32 10.613214 6.0 2025-09-27 \n",
|
||||
"... ... ... ... \n",
|
||||
"2370113 0.014101 51.0 2025-09-27 \n",
|
||||
"2370124 -0.179625 90.0 2025-09-27 \n",
|
||||
"2370142 0.387834 68.0 2025-09-27 \n",
|
||||
"2370150 0.105970 72.0 2025-09-27 \n",
|
||||
"2370157 0.019303 51.0 2025-09-27 \n",
|
||||
"\n",
|
||||
"[140423 rows x 6 columns]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"df = weekly_perf\n",
|
||||
"\n",
|
||||
"print(\"AUM (€) by Product - Asset Type:\")\n",
|
||||
"print(aum_by_asset_type.to_string())\n",
|
||||
"# 1. Ensure Date is datetime format [cite: 1, 2]\n",
|
||||
"df['Date'] = pd.to_datetime(df['Date'])\n",
|
||||
"\n",
|
||||
"# Display as DataFrame for nicer formatting\n",
|
||||
"aum_by_asset_type_df = aum_by_asset_type.reset_index()\n",
|
||||
"aum_by_asset_type_df.columns = ['Product - Asset Type', 'Total AUM (€)']\n",
|
||||
"aum_by_asset_type_df"
|
||||
"# 2. Create the 'max' (Last Appearance) column for each fund [cite: 1, 2]\n",
|
||||
"df['max_date'] = df.groupby('shareClass_name')['Date'].transform('max')\n",
|
||||
"\n",
|
||||
"# 3. Define your target date\n",
|
||||
"target_value = pd.to_datetime('2025-01-01')\n",
|
||||
"\n",
|
||||
"# 4. Filter for Carmignac funds that appeared AFTER the target value\n",
|
||||
"# This keeps all historical rows for funds whose LAST appearance > target\n",
|
||||
"filtered_carmignac = df[\n",
|
||||
" (df['shareClass_name'].str.contains(\"Carmignac\", case=False)) & \n",
|
||||
" (df['max_date'] > target_value)\n",
|
||||
"]\n",
|
||||
"\n",
|
||||
"print(filtered_carmignac)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Rest"
|
||||
]
|
||||
},
|
||||
{
|
||||
151
data_exploration/equity_stocks_head.csv
Normal file
151
data_exploration/equity_stocks_head.csv
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
,Agreement - Code,Company - Id,Company - Ultimate Parent Id,Registrar Account - ID,Registrar Account - Region,RegistrarAccount - Country,Product - Asset Type,Product - Strategy,Product - Legal Status,Product - Is Dedie ?,Product - Fund,Product - Shareclass Type,Product - Shareclass Currency,Product - Isin,Centralisation Date,Quantity - AUM,Value - AUM CCY,Value - AUM €
|
||||
0,1010,976.0,16697.0,416573,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2015-02-28,109.305,143606.0021,143606.0021
|
||||
1,1010,976.0,16697.0,416573,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2016-06-30,103.933,134698.2073,134698.2073
|
||||
2,1010,976.0,16697.0,416573,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2016-09-30,102.714,142998.4308,142998.4308
|
||||
3,1010,976.0,16697.0,416573,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2015-11-30,3679.082,959283.8407,959283.8407
|
||||
4,1010,976.0,16697.0,416573,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2015-12-31,3667.679,878812.5652,878812.5652
|
||||
5,1010,976.0,16697.0,416573,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2016-08-31,3662.97,963470.9991,963470.9991
|
||||
6,1010,976.0,16697.0,416573,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2016-10-31,3596.972,966362.4975,966362.4975
|
||||
7,1010,976.0,16697.0,416573,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2016-04-30,6313.81135,1749430.8489,1749430.8489
|
||||
8,1010,976.0,16697.0,416573,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2016-08-31,6031.89135,1729343.25,1729343.25
|
||||
9,1010,976.0,16697.0,416573,France,France,Equity,Grande Europe,SICAV,NO,Carmignac Portfolio Grande Europe,A,EUR,LU0099161993,2017-02-28,30.832,5696.212,5696.212
|
||||
10,1010,976.0,16697.0,416573,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2015-09-30,10681.012,11312580.2396,11312580.2396
|
||||
11,1010,976.0,16697.0,416573,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,E,EUR,FR0010312660,2017-02-28,9.909,1726.346,1726.346
|
||||
12,1010,976.0,16697.0,416573,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2015-06-30,15248.877,4471123.2252,4471123.2252
|
||||
13,1010,976.0,16697.0,416573,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2016-01-31,14252.798,3495641.2375,3495641.2375
|
||||
14,1010,976.0,16697.0,416573,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2017-02-28,10364.128,2718821.6982,2718821.6982
|
||||
15,1010,976.0,16697.0,416573,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2017-03-31,9979.059,2617706.7569,2617706.7569
|
||||
16,1010,976.0,16697.0,416573,France,France,Equity,Large Cap Emerging Markets Strategy,FCP,NO,Carmignac Emergents,A,EUR,FR0010149302,2015-07-31,6933.327,5740170.7566,5740170.7566
|
||||
17,1010,976.0,16697.0,416573,France,France,Equity,Large Cap Emerging Markets Strategy,FCP,NO,Carmignac Emergents,A,EUR,FR0010149302,2016-07-31,6097.532,5045402.8534,5045402.8534
|
||||
18,1010,976.0,16697.0,416573,France,France,Equity,Large Cap Emerging Markets Strategy,FCP,NO,Carmignac Emergents,A,EUR,FR0010149302,2016-09-30,6140.529,5122367.8865,5122367.8865
|
||||
19,1010,976.0,16697.0,416573,France,France,Equity,Large Cap Emerging Markets Strategy,FCP,NO,Carmignac Emergents,A,EUR,FR0010149302,2016-11-30,6201.72,4932724.0536,4932724.0536
|
||||
20,1010,976.0,16697.0,416573,France,France,Equity,Large Cap Emerging Markets Strategy,FCP,NO,Carmignac Emergents,A,EUR,FR0010149302,2016-12-31,5864.435,4711311.146,4711311.146
|
||||
21,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2015-01-31,246.0,321015.24,321015.24
|
||||
22,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2015-05-31,207.0,285173.55,285173.55
|
||||
23,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2019-07-31,0.0,0.0,0.0
|
||||
24,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2020-02-29,0.0,0.0,0.0
|
||||
25,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2020-05-31,0.0,0.0,0.0
|
||||
26,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2021-04-30,0.0,0.0,0.0
|
||||
27,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2015-03-31,18625.0,5724580.0,5724580.0
|
||||
28,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2015-10-31,17736.0,4634948.88,4634948.88
|
||||
29,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2016-03-31,18639.0,4590412.92,4590412.92
|
||||
30,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2016-04-30,19207.0,4973076.44,4973076.44
|
||||
31,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2016-08-31,18945.0,4983103.35,4983103.35
|
||||
32,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2018-07-31,16786.0,5652685.5,5652685.5
|
||||
33,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2019-02-28,0.0,0.0,0.0
|
||||
34,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2019-03-31,0.0,0.0,0.0
|
||||
35,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2019-04-30,0.0,0.0,0.0
|
||||
36,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2020-02-29,0.0,0.0,0.0
|
||||
37,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2021-01-31,0.0,0.0,0.0
|
||||
38,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2021-05-31,0.0,0.0,0.0
|
||||
39,1012,6340.0,16625.0,416580,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2016-07-31,15336.302,4317015.65,4317015.65
|
||||
40,1012,6340.0,16625.0,416580,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2016-12-31,14127.302,4242004.9715,4242004.9715
|
||||
41,1012,6340.0,16625.0,416580,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2017-11-30,18086.302,6565327.626,6565327.626
|
||||
42,1012,6340.0,16625.0,416580,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2018-02-28,19086.302,7177785.5931,7177785.5931
|
||||
43,1012,6340.0,16625.0,416580,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2018-08-31,15840.302,5931876.293,5931876.293
|
||||
44,1012,6340.0,16625.0,416580,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2018-11-30,15497.302,5283650.1439,5283650.1439
|
||||
45,1012,6340.0,16625.0,416580,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2019-05-31,0.0,0.0,0.0
|
||||
46,1012,6340.0,16625.0,416580,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2020-02-29,0.0,0.0,0.0
|
||||
47,1012,6340.0,16625.0,416580,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2021-05-31,0.0,0.0,0.0
|
||||
48,1012,6340.0,16625.0,416580,France,France,Equity,Grande Europe,SICAV,NO,Carmignac Portfolio Grande Europe,A,EUR,LU0099161993,2015-06-30,246.0,46966.32,46966.32
|
||||
49,1012,6340.0,16625.0,416580,France,France,Equity,Grande Europe,SICAV,NO,Carmignac Portfolio Grande Europe,A,EUR,LU0099161993,2016-03-31,275.0,45501.5,45501.5
|
||||
50,1012,6340.0,16625.0,416580,France,France,Equity,Grande Europe,SICAV,NO,Carmignac Portfolio Grande Europe,A,EUR,LU0099161993,2019-02-28,0.0,0.0,0.0
|
||||
51,1012,6340.0,16625.0,416580,France,France,Equity,Grande Europe,SICAV,NO,Carmignac Portfolio Grande Europe,A,EUR,LU0099161993,2019-03-31,0.0,0.0,0.0
|
||||
52,1012,6340.0,16625.0,416580,France,France,Equity,Grande Europe,SICAV,NO,Carmignac Portfolio Grande Europe,A,EUR,LU0099161993,2019-06-30,0.0,0.0,0.0
|
||||
53,1012,6340.0,16625.0,416580,France,France,Equity,Grande Europe,SICAV,NO,Carmignac Portfolio Grande Europe,A,EUR,LU0099161993,2020-09-30,0.0,0.0,0.0
|
||||
54,1012,6340.0,16625.0,416580,France,France,Equity,Grande Europe,SICAV,NO,Carmignac Portfolio Grande Europe,A,EUR,LU0099161993,2020-12-31,0.0,0.0,0.0
|
||||
55,1012,6340.0,16625.0,416580,France,France,Equity,Grande Europe,SICAV,NO,Carmignac Portfolio Grande Europe,A,EUR,LU0099161993,2021-06-30,0.0,0.0,0.0
|
||||
56,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2015-06-30,30289.0,37940304.29,37940304.29
|
||||
57,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2016-01-31,27726.0,29364052.08,29364052.08
|
||||
58,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2017-02-28,23750.0,28166075.0,28166075.0
|
||||
59,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2017-03-31,23296.0,27853396.48,27853396.48
|
||||
60,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2017-04-30,23445.0,28341957.15,28341957.15
|
||||
61,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2017-08-31,22567.0,27121697.61,27121697.61
|
||||
62,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2017-10-31,22215.0,26971231.5,26971231.5
|
||||
63,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2018-09-30,18587.0,22442873.15,22442873.15
|
||||
64,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2019-09-30,0.0,0.0,0.0
|
||||
65,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2019-10-31,0.0,0.0,0.0
|
||||
66,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2020-03-31,0.0,0.0,0.0
|
||||
67,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2020-10-31,0.0,0.0,0.0
|
||||
68,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2021-07-31,0.0,0.0,0.0
|
||||
69,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2021-08-31,0.0,0.0,0.0
|
||||
70,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,E,EUR,FR0010312660,2015-06-30,4363.0,813132.31,813132.31
|
||||
71,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,E,EUR,FR0010312660,2015-12-31,3792.0,633643.2,633643.2
|
||||
72,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,E,EUR,FR0010312660,2016-01-31,3678.0,576820.74,576820.74
|
||||
73,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,E,EUR,FR0010312660,2017-03-31,2878.0,505204.12,505204.12
|
||||
74,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,E,EUR,FR0010312660,2017-04-30,2816.0,499558.4,499558.4
|
||||
75,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,E,EUR,FR0010312660,2017-05-31,2754.0,492966.0,492966.0
|
||||
76,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,E,EUR,FR0010312660,2017-10-31,2602.0,461724.9,461724.9
|
||||
77,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,E,EUR,FR0010312660,2019-06-30,0.0,0.0,0.0
|
||||
78,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,E,EUR,FR0010312660,2019-08-31,0.0,0.0,0.0
|
||||
79,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,E,EUR,FR0010312660,2020-03-31,0.0,0.0,0.0
|
||||
80,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,E,EUR,FR0010312660,2020-08-31,0.0,0.0,0.0
|
||||
81,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,E,EUR,FR0010312660,2020-09-30,0.0,0.0,0.0
|
||||
82,1012,6340.0,16625.0,416580,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,E,EUR,FR0010312660,2020-12-31,0.0,0.0,0.0
|
||||
83,1012,6340.0,16625.0,416580,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2015-08-31,19515.0,5133225.6,5133225.6
|
||||
84,1012,6340.0,16625.0,416580,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2017-02-28,13631.0,3575820.23,3575820.23
|
||||
85,1012,6340.0,16625.0,416580,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2017-05-31,12783.0,3382637.46,3382637.46
|
||||
86,1012,6340.0,16625.0,416580,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2017-07-31,12444.0,3323543.52,3323543.52
|
||||
87,1012,6340.0,16625.0,416580,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2018-03-31,11425.0,2950963.25,2950963.25
|
||||
88,1012,6340.0,16625.0,416580,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2018-09-30,10269.0,2634922.71,2634922.71
|
||||
89,1012,6340.0,16625.0,416580,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2019-04-30,0.0,0.0,0.0
|
||||
90,1012,6340.0,16625.0,416580,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2019-06-30,0.0,0.0,0.0
|
||||
91,1012,6340.0,16625.0,416580,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2019-10-31,0.0,0.0,0.0
|
||||
92,1012,6340.0,16625.0,416580,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2020-03-31,0.0,0.0,0.0
|
||||
93,1012,6340.0,16625.0,416580,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2020-12-31,0.0,0.0,0.0
|
||||
94,1012,6340.0,16625.0,416580,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2021-03-31,0.0,0.0,0.0
|
||||
95,1012,6340.0,16625.0,416580,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2021-06-30,0.0,0.0,0.0
|
||||
96,1012,6340.0,16625.0,416580,France,France,Equity,Large Cap Emerging Markets Strategy,FCP,NO,Carmignac Emergents,A,EUR,FR0010149302,2015-05-31,16477.0,14574895.12,14574895.12
|
||||
97,1012,6340.0,16625.0,416580,France,France,Equity,Large Cap Emerging Markets Strategy,FCP,NO,Carmignac Emergents,A,EUR,FR0010149302,2016-02-29,15566.0,11488797.62,11488797.62
|
||||
98,1012,6340.0,16625.0,416580,France,France,Equity,Large Cap Emerging Markets Strategy,FCP,NO,Carmignac Emergents,A,EUR,FR0010149302,2017-07-31,12331.0,11094077.39,11094077.39
|
||||
99,1012,6340.0,16625.0,416580,France,France,Equity,Large Cap Emerging Markets Strategy,FCP,NO,Carmignac Emergents,A,EUR,FR0010149302,2018-03-31,11342.0,9959296.78,9959296.78
|
||||
100,1012,6340.0,16625.0,416580,France,France,Equity,Large Cap Emerging Markets Strategy,FCP,NO,Carmignac Emergents,A,EUR,FR0010149302,2020-05-31,0.0,0.0,0.0
|
||||
101,1010,976.0,16697.0,416573,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2015-01-31,88.451,115423.2479,115423.2479
|
||||
102,1010,976.0,16697.0,416573,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2015-03-31,135.771,179295.1095,179295.1095
|
||||
103,1010,976.0,16697.0,416573,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2015-10-31,108.467,137327.8994,137327.8994
|
||||
104,1010,976.0,16697.0,416573,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2016-04-30,103.974,131679.9518,131679.9518
|
||||
105,1010,976.0,16697.0,416573,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2016-05-31,103.952,132387.0301,132387.0301
|
||||
106,1010,976.0,16697.0,416573,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2016-08-31,103.882,145367.2767,145367.2767
|
||||
107,1010,976.0,16697.0,416573,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2015-03-31,3916.458,1203762.5309,1203762.5309
|
||||
108,1010,976.0,16697.0,416573,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2015-10-31,3728.367,974334.1481,974334.1481
|
||||
109,1010,976.0,16697.0,416573,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2016-03-31,3700.605,911384.9994,911384.9994
|
||||
110,1010,976.0,16697.0,416573,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2016-05-31,3684.652,940875.8882,940875.8882
|
||||
111,1010,976.0,16697.0,416573,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2015-02-28,4824.05935,1397674.7155,1397674.7155
|
||||
112,1010,976.0,16697.0,416573,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2015-10-31,6215.34535,1813327.0059,1813327.0059
|
||||
113,1010,976.0,16697.0,416573,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2016-06-30,6185.10035,1664101.2492,1664101.2492
|
||||
114,1010,976.0,16697.0,416573,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2016-07-31,6119.52035,1722583.7833,1722583.7833
|
||||
115,1010,976.0,16697.0,416573,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2016-09-30,6030.01935,1765408.7651,1765408.7651
|
||||
116,1010,976.0,16697.0,416573,France,France,Equity,Grande Europe,SICAV,NO,Carmignac Portfolio Grande Europe,A,EUR,LU0099161993,2015-08-31,18.237,3290.3195,3290.3195
|
||||
117,1010,976.0,16697.0,416573,France,France,Equity,Grande Europe,SICAV,NO,Carmignac Portfolio Grande Europe,A,EUR,LU0099161993,2015-11-30,18.237,3222.4779,3222.4779
|
||||
118,1010,976.0,16697.0,416573,France,France,Equity,Grande Europe,SICAV,NO,Carmignac Portfolio Grande Europe,A,EUR,LU0099161993,2015-12-31,19.375,3309.0563,3309.0563
|
||||
119,1010,976.0,16697.0,416573,France,France,Equity,Grande Europe,SICAV,NO,Carmignac Portfolio Grande Europe,A,EUR,LU0099161993,2016-02-29,19.354,3080.9633,3080.9633
|
||||
120,1010,976.0,16697.0,416573,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2015-04-30,10632.546,13714070.4817,13714070.4817
|
||||
121,1010,976.0,16697.0,416573,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2016-01-31,10191.753,10793881.7672,10793881.7672
|
||||
122,1010,976.0,16697.0,416573,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2016-11-30,9371.763,10476600.1401,10476600.1401
|
||||
123,1010,976.0,16697.0,416573,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,A,EUR,FR0010148981,2017-01-31,9000.004,10709824.7599,10709824.7599
|
||||
124,1010,976.0,16697.0,416573,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,E,EUR,FR0010312660,2017-01-31,9.909,1733.0841,1733.0841
|
||||
125,1010,976.0,16697.0,416573,France,France,Equity,Investissement,FCP,NO,Carmignac Investissement,E,EUR,FR0010312660,2017-03-31,9.908,1739.2503,1739.2503
|
||||
126,1010,976.0,16697.0,416573,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2015-08-31,15389.867,4048150.6157,4048150.6157
|
||||
127,1010,976.0,16697.0,416573,France,France,Equity,Investissement Latitude,FCP,NO,Carmignac Investissement Latitude,A,EUR,FR0010147603,2016-02-29,13674.192,3309838.1736,3309838.1736
|
||||
128,1010,976.0,16697.0,416573,France,France,Equity,Large Cap Emerging Markets Strategy,FCP,NO,Carmignac Emergents,A,EUR,FR0010149302,2015-05-31,7022.043,6211418.3561,6211418.3561
|
||||
129,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2015-07-31,195.0,256183.2,256183.2
|
||||
130,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2016-07-31,180.0,245372.4,245372.4
|
||||
131,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2016-09-30,238.0,331343.6,331343.6
|
||||
132,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2016-12-31,250.0,324742.5,324742.5
|
||||
133,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2017-11-30,229.0,346623.56,346623.56
|
||||
134,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2018-02-28,220.0,339028.8,339028.8
|
||||
135,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2018-07-31,181.0,264808.43,264808.43
|
||||
136,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2018-11-30,157.0,224888.37,224888.37
|
||||
137,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2019-05-31,0.0,0.0,0.0
|
||||
138,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2019-12-31,0.0,0.0,0.0
|
||||
139,1012,6340.0,16625.0,416580,France,France,Equity,Asia Discovery,SICAV,NO,Carmignac Portfolio Asia Discovery,A,EUR,LU0336083810,2021-05-31,0.0,0.0,0.0
|
||||
140,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2015-02-28,18779.0,5723651.41,5723651.41
|
||||
141,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2016-09-30,18716.0,4984819.44,4984819.44
|
||||
142,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2018-12-31,0.0,0.0,0.0
|
||||
143,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2019-06-30,0.0,0.0,0.0
|
||||
144,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2019-07-31,0.0,0.0,0.0
|
||||
145,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2019-08-31,0.0,0.0,0.0
|
||||
146,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2020-01-31,0.0,0.0,0.0
|
||||
147,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2020-08-31,0.0,0.0,0.0
|
||||
148,1012,6340.0,16625.0,416580,France,France,Equity,Climate Transition,SICAV,NO,Carmignac Portfolio Climate Transition,A,EUR,LU0164455502,2020-09-30,0.0,0.0,0.0
|
||||
149,1012,6340.0,16625.0,416580,France,France,Equity,Euro-Entrepreneurs,FCP,NO,Carmignac Euro-Entrepreneurs,A,EUR,FR0010149112,2015-01-31,16119.302,4429422.9966,4429422.9966
|
||||
|
151
data_exploration/weekly_perf_head.csv
Normal file
151
data_exploration/weekly_perf_head.csv
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
,Date,perfPeriod,shareClass_name,return,percentile
|
||||
4,2012-12-29,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,15.3705089425925,2.0
|
||||
11,2012-12-29,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,15.3644241298917,2.0
|
||||
16,2013-01-05,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,15.4876066401655,2.0
|
||||
26,2013-01-05,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,15.4876127738795,2.0
|
||||
32,2013-01-12,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,10.6132138957134,6.0
|
||||
39,2013-01-12,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,10.6132051959445,6.0
|
||||
60,2013-01-19,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,11.4180826933026,4.0
|
||||
62,2013-01-19,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,11.4180849650982,4.0
|
||||
65,2013-01-26,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,9.21618698751112,6.0
|
||||
71,2013-01-26,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,9.21619293712317,6.0
|
||||
84,2013-02-02,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,5.54171915417381,13.0
|
||||
88,2013-02-02,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,5.54171545781454,13.0
|
||||
104,2013-02-09,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,9.22498074879858,4.0
|
||||
110,2013-02-09,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,9.22498227410478,4.0
|
||||
112,2013-02-16,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,7.91648516360137,6.0
|
||||
116,2013-02-16,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,7.91648750656917,6.0
|
||||
138,2013-02-23,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,10.1947819005052,2.0
|
||||
140,2013-02-23,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,10.1947812395711,2.0
|
||||
148,2013-03-02,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,10.0817196532974,2.0
|
||||
159,2013-03-02,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,10.0817180679311,2.0
|
||||
160,2013-03-09,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,11.2873859692377,1.0
|
||||
171,2013-03-09,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,11.2873772339695,1.0
|
||||
185,2013-03-16,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,11.132071839689,1.0
|
||||
187,2013-03-16,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,11.1320689796046,1.0
|
||||
198,2013-03-23,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,8.918741621745,2.0
|
||||
201,2013-03-23,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,8.91874219488516,2.0
|
||||
212,2013-03-30,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,10.1075104158491,2.0
|
||||
217,2013-03-30,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,10.1075087561574,2.0
|
||||
226,2013-04-06,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,7.59430397267171,5.0
|
||||
231,2013-04-06,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,7.59430638417808,5.0
|
||||
245,2013-04-13,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,8.3141020993174,4.0
|
||||
254,2013-04-13,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,8.31410741301051,4.0
|
||||
266,2013-04-20,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,8.26698692090677,4.0
|
||||
268,2013-04-20,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,8.26698224852072,4.0
|
||||
275,2013-04-27,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,8.82522569131341,2.0
|
||||
284,2013-04-27,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,8.82523148148153,2.0
|
||||
295,2013-05-04,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,13.1702748392498,1.0
|
||||
298,2013-05-04,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,13.1702755060169,1.0
|
||||
310,2013-05-11,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,19.3950513214657,1.0
|
||||
313,2013-05-11,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,19.3950597607513,1.0
|
||||
320,2013-05-18,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,19.3165442942429,1.0
|
||||
326,2013-05-18,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,19.3165502625538,1.0
|
||||
344,2013-05-25,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,17.2435790486097,1.0
|
||||
348,2013-05-25,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,17.2435719958093,1.0
|
||||
352,2013-06-01,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,15.4324926617122,1.0
|
||||
364,2013-06-01,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,15.432496307551,1.0
|
||||
369,2013-06-08,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,10.2828973888771,4.0
|
||||
379,2013-06-08,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,10.2829001690717,4.0
|
||||
393,2013-06-15,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,6.85898897299544,12.0
|
||||
395,2013-06-15,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,6.85899380547428,12.0
|
||||
403,2013-06-22,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,4.33306259846757,27.0
|
||||
410,2013-06-22,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,4.33306463826724,27.0
|
||||
424,2013-06-29,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,2.1393665833551,65.0
|
||||
425,2013-06-29,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,2.13936109553532,65.0
|
||||
441,2013-07-06,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,2.79474994342612,46.0
|
||||
447,2013-07-06,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,2.7947573616782,46.0
|
||||
448,2013-07-13,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,2.66481220091013,49.0
|
||||
463,2013-07-13,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,2.66481636020959,49.0
|
||||
478,2013-07-20,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,4.67427803895228,24.0
|
||||
479,2013-07-20,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,4.6742844566247,24.0
|
||||
485,2013-07-27,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,2.96150989391888,38.0
|
||||
488,2013-07-27,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,2.96151723544964,38.0
|
||||
502,2013-08-03,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,0.378928943840329,89.0
|
||||
503,2013-08-03,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,0.378931055242138,89.0
|
||||
516,2013-08-10,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-0.409156970016766,100.0
|
||||
525,2013-08-10,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-0.409162848313327,100.0
|
||||
529,2013-08-17,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,1.6325323366156,67.0
|
||||
539,2013-08-17,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,1.63252937890017,67.0
|
||||
555,2013-08-24,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-0.918505268755287,99.0
|
||||
559,2013-08-24,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-0.9184987362297,99.0
|
||||
571,2013-08-31,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-1.62263504511009,100.0
|
||||
572,2013-08-31,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-1.62263993078768,100.0
|
||||
577,2013-09-07,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,0.55568471495766,83.0
|
||||
581,2013-09-07,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,0.555687259968685,83.0
|
||||
592,2013-09-14,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,0.521128988730579,84.0
|
||||
605,2013-09-14,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,0.521129672440046,84.0
|
||||
609,2013-09-21,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,0.397126184144359,88.0
|
||||
610,2013-09-21,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,0.397129584306888,88.0
|
||||
624,2013-09-28,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,0.930223870142233,75.0
|
||||
630,2013-09-28,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,0.930225849019251,75.0
|
||||
649,2013-10-05,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,1.45211017035969,64.0
|
||||
653,2013-10-05,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,1.45211516765063,64.0
|
||||
668,2013-10-12,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,1.70067838512971,52.0
|
||||
669,2013-10-12,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,1.70067709549377,52.0
|
||||
674,2013-10-19,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,2.32924486190917,37.0
|
||||
678,2013-10-19,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,2.32924792131974,37.0
|
||||
700,2013-10-26,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,0.437101792858163,85.0
|
||||
702,2013-10-26,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,0.437100951096125,85.0
|
||||
708,2013-11-02,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,0.60566080382416,84.0
|
||||
716,2013-11-02,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,0.605655225494206,84.0
|
||||
729,2013-11-09,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,1.31248488456455,69.0
|
||||
731,2013-11-09,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,1.31248172197183,69.0
|
||||
741,2013-11-16,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,1.20409597265383,70.0
|
||||
745,2013-11-16,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,1.2040967400369,70.0
|
||||
766,2013-11-23,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-0.561222135044104,99.0
|
||||
771,2013-11-23,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-0.524861457092485,99.0
|
||||
776,2013-11-30,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-1.37245752784392,99.0
|
||||
781,2013-11-30,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-1.43462607665321,99.0
|
||||
791,2013-12-07,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-3.22887163088167,100.0
|
||||
800,2013-12-07,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-3.15657846488079,100.0
|
||||
807,2013-12-14,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-2.98614825608208,100.0
|
||||
810,2013-12-14,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-2.88663743039842,100.0
|
||||
832,2013-12-21,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-2.95705555098802,100.0
|
||||
835,2013-12-21,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-2.8361619178927,100.0
|
||||
841,2013-12-28,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-5.35592499756432,100.0
|
||||
845,2013-12-28,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-5.21920020999477,100.0
|
||||
859,2014-01-04,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-2.41628948088483,99.0
|
||||
871,2014-01-04,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-2.57401649317295,99.0
|
||||
876,2014-01-11,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-3.91864938726083,100.0
|
||||
879,2014-01-11,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-3.93238863143234,100.0
|
||||
903,2014-01-18,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-1.99789192668233,99.0
|
||||
905,2014-01-18,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-1.99245802966026,99.0
|
||||
916,2014-01-25,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-4.13735923320824,100.0
|
||||
923,2014-01-25,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-4.14492272157965,100.0
|
||||
931,2014-02-01,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-6.28505093792537,100.0
|
||||
941,2014-02-01,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-6.29780018740799,100.0
|
||||
947,2014-02-08,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-8.44607756330799,100.0
|
||||
959,2014-02-08,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-8.41559067497243,100.0
|
||||
963,2014-02-15,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-8.95453656519236,100.0
|
||||
976,2014-02-15,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-9.0017245020061,100.0
|
||||
981,2014-02-22,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-10.9427369974399,100.0
|
||||
993,2014-02-22,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-11.0069330947752,100.0
|
||||
1002,2014-03-01,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-10.5005288981599,100.0
|
||||
1004,2014-03-01,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-10.5856489174059,100.0
|
||||
1013,2014-03-08,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-8.5403242569113,100.0
|
||||
1024,2014-03-08,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-8.44391605238755,100.0
|
||||
1032,2014-03-15,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-8.68625962006662,100.0
|
||||
1038,2014-03-15,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-8.80381271603646,100.0
|
||||
1057,2014-03-22,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-10.1067403784819,100.0
|
||||
1058,2014-03-22,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-9.97753020782063,100.0
|
||||
1065,2014-03-29,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-5.5467262788383,100.0
|
||||
1073,2014-03-29,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-5.38639265439276,100.0
|
||||
1079,2014-04-05,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-3.77729086099889,100.0
|
||||
1093,2014-04-05,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-3.59563303774362,100.0
|
||||
1100,2014-04-12,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-3.87429651766745,100.0
|
||||
1105,2014-04-12,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-4.06708815376412,100.0
|
||||
1117,2014-04-19,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-4.9077544578913,100.0
|
||||
1120,2014-04-19,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-4.69717499564392,100.0
|
||||
1130,2014-04-26,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-7.06804958259555,100.0
|
||||
1131,2014-04-26,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-6.85918742997025,100.0
|
||||
1157,2014-05-03,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-8.12180211309723,100.0
|
||||
1165,2014-05-03,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-7.90343047610594,100.0
|
||||
1178,2014-05-10,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-8.23972812481176,100.0
|
||||
1182,2014-05-10,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-8.47546748167871,100.0
|
||||
1191,2014-05-17,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-5.34726233227029,100.0
|
||||
1201,2014-05-17,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-5.08977550721322,100.0
|
||||
1205,2014-05-24,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,-1.64336774284573,100.0
|
||||
1216,2014-05-24,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,-1.92459794358029,100.0
|
||||
1234,2014-05-31,1YrRet,Carmignac Pf Asia Discovery F EUR Acc,3.70763707159587,18.0
|
||||
1236,2014-05-31,1YrRet,Carmignac Pf Asia Discovery A EUR Acc,3.41910814400184,21.0
|
||||
|
Loading…
Reference in New Issue
Block a user