feat: wavelets
This commit is contained in:
@@ -2379,12 +2379,14 @@ export default function InstrumentDashboard({ instrumentIdProp, isVisible }: { i
|
||||
{waveletReliability && (
|
||||
<div className="mt-3 pt-3 border-t border-slate-700/30">
|
||||
<div className="text-xs font-semibold text-slate-400 uppercase tracking-wide mb-2">
|
||||
Fiabilité des retournements (walk-forward vs. recalcul +{waveletReliability.confirm_horizon}j)
|
||||
Fiabilité des retournements (horizon de recalcul = cycle propre à chaque bande)
|
||||
</div>
|
||||
<table className="w-full text-[11px]">
|
||||
<thead>
|
||||
<tr className="text-slate-500 text-left">
|
||||
<th className="py-1 pr-3 font-normal">Bande</th>
|
||||
<th className="py-1 pr-3 font-normal text-right" title="Écart moyen entre deux pics (ou deux creux) consécutifs, mesuré sur l'historique — pas la période théorique de la bande.">Cycle moyen</th>
|
||||
<th className="py-1 pr-3 font-normal text-right" title="= cycle moyen × 1.10 — le retournement peut être confirmé n'importe où entre la date d'origine et date+horizon, pas juste pile à cette date">Horizon max</th>
|
||||
<th className="py-1 pr-3 font-normal text-right">Retournements testés</th>
|
||||
<th className="py-1 pr-3 font-normal text-right">Confirmés</th>
|
||||
<th className="py-1 pr-3 font-normal text-right">Indice de confiance</th>
|
||||
@@ -2397,6 +2399,8 @@ export default function InstrumentDashboard({ instrumentIdProp, isVisible }: { i
|
||||
return (
|
||||
<tr key={b.label} className="border-t border-slate-800/60">
|
||||
<td className="py-1 pr-3" style={{ color: WAVELET_BAND_COLORS[i % WAVELET_BAND_COLORS.length] }}>{b.label}</td>
|
||||
<td className="py-1 pr-3 text-right text-slate-400 font-mono">{b.avg_cycle_days != null ? `${b.avg_cycle_days}j` : '—'}</td>
|
||||
<td className="py-1 pr-3 text-right text-slate-400 font-mono">{b.confirm_horizon != null ? `+${b.confirm_horizon}j` : '—'}</td>
|
||||
<td className="py-1 pr-3 text-right text-slate-300 font-mono">{b.n_tested}</td>
|
||||
<td className="py-1 pr-3 text-right text-slate-300 font-mono">{b.n_confirmed}</td>
|
||||
<td className={clsx('py-1 pr-3 text-right font-mono font-semibold', color)}>
|
||||
@@ -2409,9 +2413,10 @@ export default function InstrumentDashboard({ instrumentIdProp, isVisible }: { i
|
||||
</table>
|
||||
<p className="text-[10px] text-slate-600 mt-1">
|
||||
Pour chaque retournement détecté en mode causal (pente lissée sur {waveletReliability.smooth_days}j qui change de signe, sans regarder le futur),
|
||||
on recalcule la décomposition avec {waveletReliability.confirm_horizon} jours de données réelles en plus et on vérifie qu'un retournement dans le même sens
|
||||
réapparaît à ±{waveletReliability.tolerance_days}j de la date d'origine. Un indice bas signale des retournements souvent dus à un effet de bord de la
|
||||
décomposition (peu fiable pile au bord de la fenêtre disponible), pas à un vrai signal.
|
||||
l'horizon de recalcul est propre à chaque bande — cycle moyen historique (pic-à-pic) × 1.10, pas un nombre de jours fixe identique pour toutes
|
||||
(10 jours ne veut rien dire pour une bande à 2j de période comme pour une à 20j). Le retournement confirme l'original s'il réapparaît n'importe
|
||||
où entre la date d'origine et date+horizon. Un indice bas signale des retournements souvent dus à un effet de bord de la décomposition
|
||||
(peu fiable pile au bord de la fenêtre disponible), pas à un vrai signal.
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user