Plus fortes hausses et baisses du mois
Les plus fortes hausses et baisses du mois, classées depuis la cote, montants négociés à côté de chaque mouvement et chaque filtre détaillé.
Cette page classe les plus fortes hausses et baisses des actions américaines du mois, directement depuis la cote, sur les 20 séances complètes du Jun 22 au Jul 20. Le filtre ne retient que des sociétés d'exploitation ayant négocié au moins un milliard de dollars sur la fenêtre, de sorte que chaque mouvement du tableau s'appuie sur de l'argent réel. Les fonds à effet de levier et inverses sont écartés, et la fenêtre avance à mesure que de nouvelles séances se terminent.
Plus fortes hausses du mois
Le tableau classe les plus fortes hausses sur la fenêtre. Chaque ligne affiche, à côté du pourcentage, les montants qui ont changé de mains : c'est ce qui distingue une réévaluation large d'une réévaluation mince.
Le SQL exact derrière chaque chiffre
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
)
SELECT ticker,
round((argMax(c, d) / argMin(o, d) - 1) * 100, 1) AS month_return_pct,
round(sum(dollars) / 1e9, 1) AS month_dollar_bn
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
argMax(toFloat64(close), window_start) AS c,
sum(toFloat64(close) * toFloat64(volume)) AS dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker IN (SELECT ticker FROM global_markets.stocks_ratios
WHERE market_cap > 0)
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 45 AND today())
GROUP BY ticker, d
)
GROUP BY ticker
HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15
ORDER BY argMax(c, d) / argMin(o, d) DESC
LIMIT 10CRNX mène le tableau avec 133.5% pour 9.2 milliards de dollars négociés, devant SDOT à 78.2% et PBF à 69.7%. Un mouvement de cette ampleur sur un mois se traduit généralement d'abord par un volume relatif élevé par rapport au volume quotidien moyen de l'action, et il débute souvent par un gap overnight sur une seule séance plutôt que par une progression régulière sur toute la fenêtre.
Plus fortes baisses du mois
La même construction, en sens inverse : les baisses les plus marquées sur la fenêtre, parmi les sociétés qui franchissent le même plancher d'un milliard de dollars.
Le SQL exact derrière chaque chiffre
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
)
SELECT ticker,
round((argMax(c, d) / argMin(o, d) - 1) * 100, 1) AS month_return_pct,
round(sum(dollars) / 1e9, 1) AS month_dollar_bn
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
argMax(toFloat64(close), window_start) AS c,
sum(toFloat64(close) * toFloat64(volume)) AS dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker IN (SELECT ticker FROM global_markets.stocks_ratios
WHERE market_cap > 0)
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 45 AND today())
GROUP BY ticker, d
)
GROUP BY ticker
HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15
ORDER BY argMax(c, d) / argMin(o, d) ASC
LIMIT 10NVTS enregistre la baisse la plus marquée avec -52.9% pour 5 milliards de dollars négociés, suivi de WOLF à -50.8%. Surveillez la colonne des montants négociés sur ce tableau. Une baisse à laquelle une cote très active a pris part n'est pas le même événement qu'une baisse imprimée sur un marché calme, et les deux se distinguent ici plutôt que d'être supposées.
La même question à trois horizons
Une seule question, trois fenêtres. Une valeur peut dominer un tableau et n'apparaître sur aucun des deux autres.
- les plus fortes baisses de la semaine, et les hausses juste à côté, sur les cinq dernières séances
- Cette page, sur le mois écoulé
- les plus fortes hausses et baisses de 2026, mesurées depuis le début de l'année
Les trois tableaux sont construits séparément et leurs filtres ne sont pas identiques. La page hebdomadaire fixe son propre plancher de liquidité et son propre minimum de séances sur une fenêtre de cinq séances, et la page annuelle filtre sur le volume quotidien moyen en dollars plutôt que sur un total négocié sur la fenêtre. Chaque page énonce ses propres règles dans sa propre section méthode : consultez-les avant de transposer une valeur d'un tableau à l'autre.
Un seul gap peut dominer le tableau hebdomadaire et se diluer complètement sur une année. Une lente progression mensuelle n'atteint jamais le tableau hebdomadaire. Lire les trois côte à côte est le moyen le plus simple de distinguer un événement d'une seule journée d'une véritable tendance.
Où en était le marché sur la même fenêtre
Le mois d'une action se lit différemment au regard du propre mois du marché. Les quatre grands ETF indiciels, chacun rebasé sur son premier cours d'ouverture dans la fenêtre :
Le SQL exact derrière chaque chiffre
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
)
SELECT session,
round(anyIf(cum_pct, ticker = 'SPY'), 2) AS sp500_pct,
round(anyIf(cum_pct, ticker = 'QQQ'), 2) AS nasdaq100_pct,
round(anyIf(cum_pct, ticker = 'DIA'), 2) AS dow_pct,
round(anyIf(cum_pct, ticker = 'IWM'), 2) AS russell2000_pct
FROM (
SELECT ticker,
formatDateTime(d, '%Y-%m-%d') AS session,
100 * (c / first_value(o) OVER (PARTITION BY ticker ORDER BY d) - 1) AS cum_pct
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
argMax(toFloat64(close), window_start) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker, d
)
)
GROUP BY session
ORDER BY sessionÀ la dernière séance, l'ETF S&P 500 s'établissait à -0.75%, l'ETF Nasdaq 100 à -6.2%, l'ETF Dow à 0.21% et l'ETF Russell 2000 à -1.62%. Quatre paniers, une même fenêtre, quatre réponses différentes. Comparez maintenant le classement à cette fourchette : le sommet du tableau des hausses a dépassé 133.5% sur les mêmes séances. Les sociétés individuelles se dispersent bien plus que les paniers qui les regroupent, et c'est précisément pour cela qu'un tableau de plus forts mouvements est une liste de valeurs isolées.
Comment se sont comportées les valeurs grand public
Les lecteurs en quête des meilleures performances boursières du mois veulent aussi souvent savoir où se situent les valeurs qu'ils détiennent déjà. Un panier fixe de huit méga-capitalisations grand public, même fenêtre et même construction :
Le SQL exact derrière chaque chiffre
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
)
SELECT ticker,
round((argMax(c, d) / argMin(o, d) - 1) * 100, 1) AS month_return_pct
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
argMax(toFloat64(close), window_start) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND ticker IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'GOOGL', 'META', 'TSLA', 'AVGO')
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 45 AND today())
GROUP BY ticker, d
)
GROUP BY ticker
HAVING count() >= 15
ORDER BY argMax(c, d) / argMin(o, d) DESCLe groupe s'est étalé de 12.9% pour META en tête à -8.6% pour AVGO en queue. Elles n'ont pas bougé en bloc, ce qui est la règle plutôt que l'exception. L'appartenance à un même indice regroupe ces sociétés ; leurs chiffres d'affaires n'ont, eux, presque rien en commun. Ce panier est une liste fixe de huit valeurs et non un classement : à prendre comme repère, pas comme une affirmation sur les sociétés les plus importantes.
À quoi ressemble un mois normal
Les classements montrent la queue de distribution. Voici le corps. L'ensemble des 1135 sociétés qui ont franchi le filtre, réparties en tranches selon leur rendement sur la fenêtre :
Le SQL exact derrière chaque chiffre
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
)
SELECT tup.1 AS return_bucket,
tup.3 AS stocks
FROM (
SELECT arrayJoin(arrayZip(
['down 20% or more', 'down 10% to 20%', 'down 0% to 10%',
'up 0% to 10%', 'up 10% to 20%', 'up 20% or more'],
[1, 2, 3, 4, 5, 6],
[countIf(r <= -20), countIf(r > -20 AND r <= -10), countIf(r > -10 AND r < 0),
countIf(r >= 0 AND r < 10), countIf(r >= 10 AND r < 20), countIf(r >= 20)])) AS tup
FROM (
SELECT ticker,
(argMax(c, d) / argMin(o, d) - 1) * 100 AS r
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
argMax(toFloat64(close), window_start) AS c,
sum(toFloat64(close) * toFloat64(volume)) AS dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker IN (SELECT ticker FROM global_markets.stocks_ratios
WHERE market_cap > 0)
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 45 AND today())
GROUP BY ticker, d
)
GROUP BY ticker
HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15
)
)
ORDER BY tup.267 des sociétés filtrées ont gagné 20% ou plus sur la fenêtre, et 106 en ont perdu 20% ou plus. Les deux tranches les plus proches de zéro comptaient 276 et 400 valeurs. C'est dans cette forme qu'un classement de plus forts mouvements est découpé, et le top dix n'en est que l'extrémité droite. Relisez les tableaux ci-dessus avec cela en tête : un mouvement mensuel classé dans le top dix est une anomalie par construction, jamais le mois ordinaire d'une action ordinaire.
Ce qui place une action sur un tableau de mouvements mensuels
Un mois est assez long pour contenir plusieurs événements, et assez court pour que l'un d'eux domine généralement. Les valeurs de ces tableaux coïncident le plus souvent avec une date précise du calendrier de la société. Les résultats trimestriels sont le cas le plus fréquent : un résultat supérieur ou inférieur aux attentes réévalue le cours en une seule séance, et le reste du mois se négocie autour de ce nouveau niveau. Les révisions de prévisions produisent le même effet, sans résultats à l'appui.
Les opérations de fusion-acquisition laissent l'empreinte la plus reconnaissable sur un tableau mensuel. Le cours bondit vers un niveau proche du prix d'offre annoncé, puis se stabilise, tandis que les montants négociés restent énormes alors même que la variation en pourcentage se tasse. Si une valeur proche du sommet du tableau des hausses affiche un montant négocié énorme et un cours qui a cessé de bouger en milieu de fenêtre, ce motif mérite d'être vérifié avant tout le reste.
Les mouvements sectoriels comptent sur un mois d'une façon qu'ils ne connaissent presque jamais sur une semaine. Une variation des taux, du pétrole ou du prix des puces mémoire entraîne tout un groupe à la fois, ce qui explique que les tableaux mensuels montrent souvent des grappes de sociétés similaires plutôt que dix noms sans rapport entre eux. Les changements de recommandation des analystes, les entrées et sorties d'indices, les résultats d'essais cliniques ou d'examens réglementaires, et les short squeezes complètent le tableau. Rien de tout cela n'apparaît dans le seul pourcentage, c'est pourquoi la colonne des montants négociés et la fenêtre du marché lui-même figurent à côté de chaque mouvement ici.
Comment cette mesure est construite
Chaque seuil est énoncé ici plutôt que laissé implicite. Un filtre aux règles cachées se présente comme une donnée alors que c'est en réalité une opinion.
- La fenêtre. Les 30 derniers jours calendaires se terminant à la séance la plus récente dont la cote est intégralement chargée, ce qui correspond aux 20 séances du Jun 22 au Jul 20. Deux règles décident si une séance est retenue. Elle doit s'être terminée avant la date du jour à New York, si bien que la séance en cours n'entre jamais dans le champ. Son nombre de barres en heures régulières doit aussi atteindre 85% de la séance médiane sur le balayage de 34 jours, ce qui écarte une journée antérieure dont la cote est encore en cours de chargement. Une séance de jour férié écourtée n'imprime qu'environ la moitié des barres d'une journée normale, si bien que la même règle l'écarte plutôt que de la mesurer à moitié chargée.
- Le rendement. Du premier cours d'ouverture de séance régulière dans la fenêtre au dernier cours de clôture de séance régulière, calculé à partir des barres à la minute. Heures régulières uniquement : les transactions du premarket et de l'after-hours sont exclues. C'est un rendement de cours : les dividendes ne sont pas réintégrés.
- Les planchers. Au moins un milliard de dollars négociés sur l'ensemble de la fenêtre, un cours d'ouverture d'au moins 10 dollars, et des transactions sur au moins 15 des séances de la fenêtre. Le plancher en dollars est un total mensuel, ce qui en fait une barre plus facile à franchir que le même chiffre mesuré sur une seule semaine.
- Les exclusions. Les fonds à effet de levier et inverses sont retirés nommément. Chaque symbole doit aussi porter des fondamentaux d'entreprise, une capitalisation boursière au fichier, dans nos données de référence. Cette seconde règle écarte les ETF, les fonds fermés, les trusts sur matières premières et la famille en pleine expansion des produits à effet de levier sur une seule action, qui rempliraient sinon l'essentiel des deux tableaux. Cette table de référence conserve une ligne par symbole plutôt qu'un instantané quotidien daté, si bien que le filtre lit la table entière et qu'aucune date unique ne décide de l'éligibilité. Tout symbole dont un fractionnement d'actions s'exécute dans les 45 derniers jours est écarté plutôt que rétro-ajusté, car un fractionnement modifie le prix par action sans changer la valeur d'une position. Un symbole que les flux de fournisseurs ont réattribué entre deux sociétés différentes est exclu nommément.
- Le panneau des méga-capitalisations. Un panier fixe de huit grandes sociétés américaines largement détenues, nommées dans le SQL de ce panneau. Il utilise la même fenêtre et la même construction de rendement que les tableaux, et se situe en dehors du filtre de volume en dollars.
- Ce qui n'est pas appliqué. Il n'y a ni filtre sectoriel, ni plancher de capitalisation boursière, ni exigence d'appartenance à un indice, si bien qu'une petite société fortement agitée peut figurer sur le tableau à côté d'une grande. Le classement se fait uniquement sur la variation en pourcentage, ce qui explique pourquoi la colonne des montants négociés est imprimée juste à côté.
Un panneau porte le justificatif de tout cela : les séances couvertes par la fenêtre, et l'univers à partir duquel chaque tableau a été filtré.
Le SQL exact derrière chaque chiffre
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
),
screened AS (
SELECT ticker
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
sum(toFloat64(close) * toFloat64(volume)) AS dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker IN (SELECT ticker FROM global_markets.stocks_ratios
WHERE market_cap > 0)
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 45 AND today())
GROUP BY ticker, d
)
GROUP BY ticker
HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15
)
SELECT formatDateTime(w.first_d, '%b %e') AS first_session_date,
formatDateTime(w.last_d, '%b %e') AS last_session_date,
w.n AS sessions,
(SELECT count() FROM global_markets.stocks_ratios WHERE market_cap > 0) AS companies_on_file,
(SELECT count() FROM screened) AS companies_screened
FROM (SELECT min(d) AS first_d, max(d) AS last_d, count() AS n FROM window_days) AS wLe filtre est parti de 4124 symboles portant une capitalisation boursière dans la table de référence, et a terminé avec 1135 sociétés franchissant les planchers de volume en dollars, de prix et de séances. Les deux chiffres sont conservés à chaque actualisation de cette page, si bien qu'une exécution sur un univers réduit apparaît dans le justificatif au lieu de passer inaperçue.
FAQ
Quelles sont les plus fortes hausses d'actions ce mois-ci ?
Pour la fenêtre se terminant le Jul 20, les plus fortes hausses parmi les sociétés négociant plus d'un milliard de dollars sont CRNX à 133.5% et SDOT à 78.2%. Le top dix complet figure dans le premier tableau de cette page, et il avance à mesure que de nouvelles séances se terminent.
Quelles actions ont le plus baissé ce mois-ci ?
NVTS affiche la baisse la plus marquée avec -52.9%, suivie de WOLF à -50.8%. Les deux sont mesurées sur les mêmes 20 séances, avec le même plancher d'un milliard de dollars de volume que le tableau des hausses.
Comment les rendements mensuels des actions sont-ils mesurés ?
Un rendement mensuel ici est la variation entre le premier cours d'ouverture de séance régulière d'une action dans la fenêtre et son dernier cours de clôture de séance régulière, calculée à partir des barres à la minute. C'est un rendement de cours, donc les dividendes ne sont pas réintégrés, et toute société dont un fractionnement d'actions s'exécute près de la fenêtre est écartée plutôt que rétro-ajustée.
Pourquoi les ETF à effet de levier sont-ils exclus d'un tableau de mouvements boursiers ?
Un fonds à effet de levier ou inverse multiplie le mouvement quotidien d'un indice ou d'une seule action, si bien qu'il peut dominer un tableau brut de mouvements lors d'une journée de marché ordinaire, sans aucune actualité propre à une société. Les retirer permet de conserver une liste de sociétés d'exploitation. Le fonctionnement des ETF à effet de levier détaille la réinitialisation quotidienne et la dérive qui accompagne la détention d'un tel fonds pendant un mois.
Chaque panneau ci-dessus est une requête stockée avec son SQL attaché. Ouvrez-en un, changez le plancher en dollars ou la longueur de la fenêtre, et filtrez vous-même la même cote sur le terminal Strasmore.