Le score Heat, terme par terme
Heat est un score borné de 0 à 100 qui classe une meme coin selon ce qui s'y passe en ce moment, mesuré par rapport à sa propre taille et non au reste du marché. Il est calculé sur le serveur par une seule fonction, et cette page documente chacun de ses termes.
La question à laquelle Heat répond
Une colonne de capitalisation classe les plus grosses pièces. Une colonne de volume sur 24 heures classe à nouveau les plus grosses, car le volume évolue avec la taille : le plus grand pool du tableau échangera plus qu'un petit lors d'une journée calme sans que rien ne s'y passe.
Heat pose une autre question. Où l'argent circule-t-il par rapport à la taille de ce dans quoi il circule, circule-t-il plus fort sur la dernière heure qu'auparavant, sont-ce les acheteurs ou les vendeurs qui le font circuler, et le pool est-il assez profond pour que tout cela soit réel.
Chaque terme est borné. C'est la contrainte de conception autour de laquelle tout le score est construit : aucune entrée seule ne peut s'emparer du classement. Une pièce en hausse de quatre mille pour cent ne peut pas enterrer une pièce en hausse de soixante pour cent sur le seul prix, et un très grand pool ne peut pas acheter son rang avec un volume qu'il fait à peine tourner.
Forme du score
Cinq composantes pondérées produisent un score d'activité entre 0 et 1. Ce score est ensuite multiplié par une porte directionnelle et par les pénalités applicables, borné, puis rapporté sur une échelle de 0 à 100 avec une décimale.
activity = SUM( weight[i] * part[i] ) for the five parts below
score = activity * direction * PRODUCT(penalties)
reported = round( clamp(score, 0, 1) * 100, 1 )
Les poids totalisent exactement un, donc le terme d'activité est lui-même borné à l'intervalle 0 à 1 avant qu'on ne lui applique quoi que ce soit.
| Composante | Poids | Ce qu'elle mesure |
|---|---|---|
| Turnover | 0.30 | Volume rapporté à la taille propre de la pièce |
| Momentum | 0.22 | Où le prix est réellement allé, amorti |
| Acceleration | 0.20 | La dernière heure est-elle plus chaude que les six précédentes |
| Buy pressure | 0.14 | Quel camp échange |
| Freshness | 0.14 | À quel point le pool est jeune |
Les deux fonctions de bornage
Ces deux fonctions existent pour transformer une quantité non bornée en une quantité bornée sans coupure brutale. Chacune prend un paramètre d'inflexion, la valeur à laquelle la sortie atteint la moitié. En dessous, la fonction est presque linéaire ; au-dessus, elle sature.
soft(v, mid) = v / (v + mid) for v > 0, else 0
signed(pct, mid) = sign(pct) * soft(|pct|, mid)
Le choix du point d'inflexion est là où réside le jugement, et c'est le seul endroit où une valeur est affirmée plutôt que mesurée. Chacun est indiqué ci-dessous avec son raisonnement.
Rotation, poids 0,30
Le signal principal. Le volume des dernières 24 heures divisé par la taille de la pièce, de sorte qu'un petit pool qui fait tourner tout son flottant marque plus qu'un grand pool qui n'en fait tourner qu'une fraction.
size = max( 1, min( marketCap, liquidity * 40 ) )
turnover = soft( volume24h / size, 0.35 )
Le dénominateur prend le plus petit entre la capitalisation déclarée et quarante fois la liquidité du pool. Cette protection compte : un jeton peut déclarer presque n'importe quelle capitalisation en émettant une offre que personne ne détient, et diviser par ce chiffre gonflé ferait paraître calme une pièce très active. Plafonner le dénominateur à quarante fois le pool réel empêche une capitalisation fictive de masquer l'activité, et empêche un pool mince de paraître plus actif qu'il ne l'est.
Un point d'inflexion de 0,35 signifie qu'une pièce qui fait tourner trente-cinq pour cent de sa taille en une journée obtient la moitié des points sur ce terme. La capitalisation retombe sur la valorisation entièrement diluée lorsqu'elle est absente.
Accélération, poids 0,20
C'est ce qui distingue une pièce qui bouge maintenant d'une pièce qui a bougé ce matin. Elle compare la dernière heure au rythme sur six heures et ajoute un terme de court terme pour les cinq dernières minutes.
accel = max(0, h1 - h6/6) + max(0, m5 * 3)
acceleration = soft( accel, 12 )
Les deux termes ont un plancher à zéro, donc une pièce qui refroidit ne marque simplement rien ici au lieu de devenir négative et de lutter contre les autres composantes. Diviser la variation sur six heures par six la convertit en taux horaire pour que la comparaison soit équivalente. Le point d'inflexion de 12 signifie qu'une pièce qui avance d'environ douze points de pourcentage par heure au-dessus de son propre rythme récent obtient la moitié des points.
Momentum, poids 0,22
Où le prix est réellement allé, sur deux horizons, fortement amorti pour qu'une vieille parabole s'estompe au lieu de tenir le haut du tableau une journée entière.
raw = 0.65 * signed(change24h, 45) + 0.35 * signed(change6h, 20)
momentum = clamp(raw, -1, 1) * 0.5 + 0.5
Les points d'inflexion disent qu'une journée à 45 pour cent et six heures à 20 pour cent valent chacune la moitié des points sur leur horizon. La dernière ligne remappe le résultat signé sur 0 à 1, de sorte qu'une pièce plate se situe à 0,5 plutôt qu'à zéro, et qu'une pièce en baisse marque sous le point médian au lieu d'être exclue.
Pression acheteuse, poids 0,14
Quel camp échange, pondéré par la quantité de preuves disponibles. Un ratio de neuf contre un à l'achat sur onze transactions ne signifie pas grand-chose ; le même ratio sur deux mille transactions signifie beaucoup.
ratio = buys / (buys + sells) 0.5 when there are no trades
confidence = soft( buys + sells, 150 )
buyPressure = 0.5 + (ratio - 0.5) * confidence * 2
Le facteur de confiance est la partie importante. Avec peu de transactions, le terme s'effondre vers un 0,5 neutre quel que soit le déséquilibre apparent du ratio, de sorte qu'une poignée de transactions ne peut pas fabriquer un signal. À 150 transactions, le ratio est crédité de la moitié de sa force, et il s'approche de sa pleine force au-delà.
Fraîcheur, poids 0,14
Décroissance exponentielle sur l'âge du pool, avec une constante de temps de 96 heures.
freshness = exp( -ageHours / 96 ) 0.25 when the age is unknown
Cela donne presque le maximum le premier jour, environ 0,47 à trois jours, environ 0,13 à une semaine et environ 0,03 après deux semaines. C'est le terme le plus assumé du score et il est inclus pour une raison : les mouvements de meme coins commencent très majoritairement dans des pools jeunes. Un jeton dont on ne peut pas établir l'âge reçoit un 0,25 fixe plutôt qu'un zéro ou le maximum, de sorte qu'un horodatage manquant ne le récompense ni ne le détruit.
La porte directionnelle
L'activité seule n'est pas de la chaleur, et c'est la correction qui compte le plus en pratique. Une pièce qui s'effondre de soixante-dix pour cent imprime un volume énorme, accélère fortement et affiche un nombre élevé de transactions pendant que tout le monde part. Sur les seuls termes d'activité, elle domine le tableau. C'est un classement que personne ne veut lire.
direction = clamp( 0.55 + 0.45 * signed(change24h, 45)
+ 0.25 * max(0, signed(change1h, 8)),
0.12, 1.15 )
Le score d'activité est multiplié par cette porte. Une pièce en baisse de 70 pour cent sur la journée, sans reprise sur la dernière heure, conserve environ 28 pour cent de son score d'activité. Une pièce qui a chuté mais rebondit sur la dernière heure en conserve nettement plus, car un rebond après une purge est réellement intéressant. Une pièce en hausse est laissée telle quelle ou relevée d'au plus quinze pour cent.
Le plancher de 0,12 plutôt que zéro est délibéré. Un effondrement violent doit être repoussé vers le bas du tableau, pas effacé : c'est encore de l'information, et la cacher rendrait le classement moins honnête, pas plus sûr.
Pénalités
La porte gère la direction. Les pénalités gèrent une autre classe de problème : les conditions qui rendent un score élevé dénué de sens plutôt que simplement trop élevé. Chacune est un multiplicateur, elles se cumulent donc.
| Condition | Multiplicateur | Pourquoi |
|---|---|---|
| liquidity < $15,000 | liquidity / 15,000, floored at 0.15 | En dessous de cette profondeur les entrées ci-dessus sont surtout du bruit |
| liquidity = 0 | 0.15 | Rien contre quoi échanger |
| marketCap / liquidity > 5,000 | 0.35 | Une valorisation très au-delà du pool qui la soutient |
| trades < 10 | 0.4 | Presque personne ne l'échange, quoi que dise le graphique |
| price is stale | 0.5 | Un prix auquel nous ne faisons plus confiance ne doit pas mener un classement en direct |
À quoi ressemble réellement la distribution
Les chiffres ci-dessous sont une capture figée, pas une requête en direct, afin qu'ils restent vérifiables contre le fichier même à partir duquel cette page a été écrite. Téléchargez-le et recalculez-les.
/data/heat-snapshot.json capturé le 2026-09-09
| Mesure | Valeur |
|---|---|
| Jetons notés | 336 |
| Score le plus élevé | 59.7 |
| 90e centile | 23.1 |
| Médiane | 11.4 |
| 10e centile | 7.6 |
| Score le plus bas | 0.2 |
| À 45 ou au-dessus du seuil chaud | 5 |
La forme est l'essentiel. La médiane se situe près de 11 et seule une poignée de pièces dépasse 45 sur une capture donnée. Un score dans les quarante est réellement inhabituel, et c'est pourquoi l'interface marque une pièce comme chaude à partir de 45. Un score de 90 n'est pas quelque chose que la fonction est construite pour produire : tous les termes devraient être proches de leur plafond en même temps, avec un prix en hausse et sans pénalité.
Une décomposition détaillée
La même capture, le haut du tableau, avec chaque terme tel qu'il est entré dans la somme pondérée. Ils sont produits par la fonction de score elle-même et non par une réimplémentation, de sorte que ce tableau ne peut pas diverger du code qu'il documente.
| Jeton | Heat | Rot. | Accél. | Mom. | Achat | Fraîch. | Dir. |
|---|---|---|---|---|---|---|---|
| DUO | 59.7 | 0.95 | 0.11 | 0.88 | 0.45 | 0.57 | 0.93 |
| USEFUL | 58.8 | 0.74 | 0.76 | 0.73 | 0.57 | 0.35 | 0.89 |
| PURR | 57.2 | 0.63 | 0.76 | 0.87 | 0.66 | 0.01 | 0.91 |
| Stonks | 46.8 | 0.84 | 0.41 | 0.61 | 0.59 | 0.26 | 0.8 |
| PURPS | 45.6 | 0.93 | 0 | 0.64 | 0.56 | 0.01 | 0.91 |
| BTC | 44.7 | 0.56 | 0 | 0.92 | 0.69 | 0.09 | 0.93 |
Lisez une ligne de gauche à droite et le classement s'explique de lui-même. Une pièce peut mener sur la rotation sans rien marquer sur l'accélération, ce qui indique que l'argent est là mais que le mouvement ne s'accélère pas. Une autre peut porter le tableau sur la fraîcheur et la pression acheteuse avec une rotation modeste, ce qui est un intérêt d'une autre nature.
Ce que Heat n'est pas
Heat mesure l'activité. Ce n'est pas une note de sécurité. Une pièce peut être extrêmement chaude et être un piège, et le score ne prétend délibérément pas le contraire : les pénalités réduisent les scores dénués de sens, pas les scores dangereux.
Ce n'est pas une prédiction. Rien dans la fonction ne regarde vers l'avant, et aucun terme n'est ajusté sur des rendements futurs. C'est un résumé du passé récent, borné pour qu'aucune entrée ne domine.
Ce n'est pas un conseil en investissement. Les meme coins sont à haut risque et la plupart perdent de la valeur. Utilisez les contrôles de sécurité et la page du jeton, pas un seul chiffre, avant d'agir.
Le reproduire
Il existe une seule définition et elle s'exécute sur le serveur, donc le même score apparaît dans le tableau, dans l'ordre de tri et dans l'API. Le client ne le recalcule jamais.
| Où | Quoi |
|---|---|
scripts/token-heat.mjs | La fonction de score et les poids |
test/token-heat.test.mjs | Tests de comportement fixant ces chiffres |
GET /api/tokens | Renvoie heat et heatRank sur chaque ligne |
/data/heat-snapshot.json | La capture figée que cette page cite |
Une réserve mérite d'être énoncée clairement. Les pages de regroupement qui listent les jetons par chaîne utilisent un ordre plus simple calculé à la compilation, le volume sur 24 heures pondéré par la tendance sur 24 heures, décrit sur ces pages avec exactement ces mots. Cet ordre n'est pas la colonne Heat et ne partage pas ses bornes.
Questions fréquentes
- Un score Heat élevé est-il un signal d'achat ?
- Non. Heat mesure l'activité d'une pièce par rapport à sa taille, sur le passé récent. Il ne contient aucun terme prospectif et n'est pas ajusté sur des rendements futurs. Une pièce en effondrement peut encore montrer une activité réelle, c'est pourquoi la porte directionnelle existe et pourquoi le score n'est pas une note de sécurité.
- Pourquoi le score est-il plafonné à 100 alors que le volume ne l'est pas ?
- Chaque composante passe par une fonction de bornage qui sature, de sorte qu'aucune entrée ne peut s'emparer du classement. Sans cela, une pièce en hausse de plusieurs milliers de pour cent, ou un très grand pool, dominerait le tableau sur un seul terme et les quatre autres cesseraient de compter.
- Pourquoi un pool jeune marque-t-il plus qu'un ancien ?
- La fraîcheur porte un poids de 0,14 et décroît exponentiellement avec une constante de temps de 96 heures, car les mouvements de meme coins commencent très majoritairement dans des pools jeunes. C'est le terme le plus assumé du score. Il ne peut pas porter une pièce à lui seul : au maximum il apporte 14 points avant la porte directionnelle et toute pénalité.
- Qu'arrive-t-il à une pièce presque sans liquidité ?
- En dessous de 15 000 dollars de liquidité, le score est multiplié par la liquidité divisée par 15 000, avec un plancher à 0,15. Sans aucune liquidité, le multiplicateur est de 0,15 fixe. Les entrées sont toujours calculées, on ne leur fait simplement pas confiance pour mener un classement.
- La colonne Heat correspond-elle à l'ordre des pages de regroupement par chaîne ?
- Non. Les pages de chaîne utilisent un ordre plus simple calculé à la compilation, le volume sur 24 heures pondéré par la tendance sur 24 heures, et le disent sur la page. La colonne Heat est le score borné de 0 à 100 documenté ici.
Keep reading
Nothing here is financial advice. Meme coins are high risk and most lose value. Read the full risk disclosure before trading.