1
L'action vaut-elle son prix ?
On estime la "vraie valeur" de chaque entreprise avec trois méthodes de valorisation utilisées par les professionnels. Si le prix actuel est en dessous, c'est un signal positif.
Méthodes : flux de trésorerie futurs (DCF), création de valeur (EVA), comparaison aux concurrents (multiples).
2
Que disent les experts et le marché ?
On collecte les recommandations des analystes (Goldman Sachs, BNP Paribas…), le sentiment des articles de presse, et ce que disent les investisseurs sur les réseaux sociaux.
Sources : recommandations analystes, news financières, discussions Reddit.
3
L'intelligence artificielle prédit le rendement
Un modèle IA entraîné sur des milliers d'observations analyse 31 indicateurs et prédit le rendement à 30 jours — en comparaison avec le CAC40. Quand il n'est pas sûr de lui, son poids est réduit automatiquement.
Ensemble de 3 modèles XGBoost diversifiés, calibration probabiliste, intervalles de confiance.
4
Un Score de Conviction unique
Tout est combiné en un seul score. Plus il est élevé, plus les signaux convergent. Simple à lire, impossible à tricher.
Comment lire le score
Score > 0.08● Achat Fort
Entre 0.03 et 0.08● Achat
Entre -0.03 et 0.03● Neutre
Entre -0.08 et -0.03● Prudence
Score < -0.08● Défavorable
Protections automatiques
Même avec un bon score, le système limite sa confiance dans deux cas :
Tendance baissière
Si le cours est sous sa moyenne 200 jours, le score est plafonné. On ne rattrape pas un couteau qui tombe.
Résultats imminents
Si l'entreprise publie ses résultats dans les 30 prochains jours, le score est plafonné. Trop d'incertitude.
Ce qu'on ne peut pas faire
Aucun modèle ne prédit l'avenir avec certitude. On ne peut pas anticiper les événements imprévus. Nos scores reposent sur des données historiques qui ne se reproduisent pas à l'identique. Les erreurs font partie du jeu — c'est pour ça qu'on les mesure et les affiche publiquement.
Envie d'essayer ?
Accédez au screener gratuitement. Le Club Premium vous donne en plus des emails personnalisés avec le nombre exact d'actions à acheter.
Voir le screener →
À retenir
FINALTYP est un outil d'aide à la décision. Ce n'est pas un conseiller financier agréé par l'AMF. Les scores sont informatifs et ne constituent pas un conseil d'achat ou de vente. Tout investissement comporte un risque de perte en capital. Les performances passées ne préjugent pas des performances futures. Vous êtes seul responsable de vos décisions.
async function loadPerf() {
try {
const res = await fetch('/api/performance/detailed');
if (!res.ok) return;
const d = await res.json();
function formatPct(v) {
if (v == null) return '—';
return (v > 0 ? '+' : '') + v + '%';
}
function cls(v) {
if (v == null) return 'neutral';
return v >= 0 ? 'positive' : 'negative';
}
// Stratégie
const el = (id) => document.getElementById(id);
el('pv-strat').textContent = formatPct(d.fintalyp_perf);
el('pv-strat').className = 'm-perf-val ' + cls(d.fintalyp_perf);
// CAC40
el('pv-cac').textContent = formatPct(d.cac40_perf);
el('pv-cac').className = 'm-perf-val ' + cls(d.cac40_perf);
// Alpha
el('pv-alpha').textContent = formatPct(d.alpha);
el('pv-alpha').className = 'm-perf-val ' + cls(d.alpha);
if (d.alpha != null && d.alpha > 0) {
el('pv-alpha-sub').textContent = 'vs le marché';
}
// Direction
if (d.direction_accuracy != null) {
el('pv-direction').textContent = d.direction_accuracy + '%';
el('pv-direction').className = 'm-perf-val ' + (d.direction_accuracy >= 55 ? 'positive' : 'neutral');
if (d.n_predictions_evaluated) {
el('pv-direction-sub').textContent = 'sur ' + d.n_predictions_evaluated + ' prédictions';
}
}
// Since date
if (d.start_date) {
el('perf-since').textContent = 'Depuis le ' + d.start_date;
}
// Footer enrichi
let footer = 'Calculé automatiquement sur les prédictions passées.';
if (d.sharpe_ratio != null) footer += ' · Sharpe : ' + d.sharpe_ratio;
if (d.win_rate != null) footer += ' · Win rate : ' + d.win_rate + '%';
if (d.profit_factor != null) footer += ' · Profit factor : ' + d.profit_factor;
el('perf-footer').textContent = footer;
} catch(e) { console.error(e); }
}
document.addEventListener('DOMContentLoaded', () => {
if (typeof updateHeader === 'function') updateHeader();
loadPerf();
});