Stock movers wey move pass dis month
See de biggest gainers and losers from de exchange tape. We list every move with de total dollars traded and all de filters wey we use for dis month.
Dem biggest stock movers for dis month dey list below straight from de exchange tape. Dis list cover all de 21 trading sessions wey finish from Jun 23 go Jul 22. De screen only show operating companies wey trade at least $1 billion for dis period, so every move for de board get real money behind am. We set aside leveraged and inverse funds, and de window go move forward as new sessions finish.
Biggest stock gainers this month
Dis table show dem stocks wey gain pass for dis period. Every row show di dollars wey dem trade beside di percentage, wey na wetin dey show if many people dey trade or if di movement small.
The exact SQL behind every number
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 take top position with 136.1% on $9.7 billion traded, dem pass PBF wey get 65.9% and MAN wey get 62.1%. When market move like dis for one month, e dey usually start as high relative volume against di stock average daily volume, and e often start with overnight gap for one session instead of steady climb throughout di whole window.
Biggest stock losers this month
The same thing for reverse: the biggest drop for this period, for companies wey trade at least $1 billion.
The exact SQL behind every number
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 10CLBK drop pass everybody at -44.6% with $1.1 billion traded, while NVTS follow am for -41.6%. Look the dollar column for this board. If heavy tape dey drop, e different from when market quiet, and we dey show that difference here instead of just to guess.
The same question for three different timeframes
One question, three windows. One name fit top one board, but e no go show for the other two.
- biggest stock losers this week, and the gainers beside dem, over the trailing five sessions
- This page, over the trailing month
- the biggest stock movers of 2026, measured year to date
Dem build the three boards separately and their screens no be the same. The weekly page get its own liquidity floor and session minimum over a five-session window, and the year-to-date page screen for average daily dollar volume instead of total traded across the window. Every page write dem own rules for dem method section, so make you read dem before you carry one name from one board to another.
One single gap dey dominate the weekly board but e go vanish over one year. Slow monthly grind no even reach the weekly board at all. To read the three side by side na the cheapest way to tell one-day event from one trend.
How market stand for dat same period
One stock month fit different from how market month take run. Di four major index trackers, wey dem rebase to dem first opening price inside dat window:
The exact SQL behind every number
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 sessionBy di last session, S&P 500 tracker stand at 1.85%, Nasdaq 100 tracker at -1.47%, Dow tracker at 1.33%, and Russell 2000 tracker at 0.17%. Four baskets, one window, four different answers. Now compare di leaderboard against dat range: di top of di gainers board pass 136.1% over dem same sessions. Individual companies dey move far more than di baskets wey hold dem, na why movers list na list of single names.
How the household names do
People wey dey look for best performing stocks for this month dey usually want know how the names wey dem already own perform. We take eight household mega-caps basket, same window and same construction:
The exact SQL behind every number
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) DESCThe group run from 11.5% for META at the top to -4.7% for TSLA at the bottom. Dem no move as one bloc, and na wetin dey happen normally. Index membership dey group these companies together; their revenue lines no get much connection with each other. This basket na fixed list of eight names rather than ranking, so use am for orientation and no see am as claim about which companies big pass.
Wey normal month dey look
Leaderboards dey show di tail. Dis one dey show di body. All 1167 companies wey pass di screen, dem sort dem into buckets based on dem return over di window:
The exact SQL behind every number
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.252 of di screened companies gain 20% or more across di window, and 50 lose 20% or more. Di two buckets wey near flat hold 300 and 515 names. Dat chart na di shape wey movers leaderboard dey come from, and di top ten na dem dey far right edge. Read di boards for above with dat in mind: top-ten monthly move na outlier by construction, e no be typical month for typical stock.
Wetin dey make stock enter monthly movers list
One month long enough for many things to happen, but e short enough say one thing dey usually control everything. The names wey dey these boards dey usually follow wetin dey happen for company calendar. Quarterly results na the most common one: if dem beat or miss expectation, the price go change inside one session, and the rest of the month trading go dey around that new level. Guidance changes dey do the same thing even if dem no release results.
Merger and acquisition news dey leave the biggest sign for monthly board. The stock go jump reach level near the announced deal price and then e go quiet, even as the dollars traded dey stay enormous while the percentage change dey flatten out. If you see one name for top of the gainers table wey get huge dollar figure and price wey stop to move mid-window, you must check that pattern before anything else.
Sector moves dey matter for one month for way wey dem rarely dey do for one week. Shift for rates, oil, or memory pricing dey carry whole group together, na why monthly boards dey often show clusters of similar businesses instead of ten unrelated names. Analyst actions, index additions and removals, trial and regulatory readouts, and short squeezes dey fill the rest. None of these things dey visible for percentage alone, na why the dollars-traded column and the market's own window dey sit beside every move for here.
How dem dey measure am
Dem no dey hide any threshold for here; dem just dey state everything plainly. If screen get hidden rules, e no be data again, na opinion dem dey give.
- The window. Na trailing 30 calendar days dem dey use, from the last session wey tape don full, wey come be 21 sessions from Jun 23 to Jul 22. Two rules dey decide if session qualify. Session must close before current date for New York, so session wey dey go on now no dey inside scope. Regular-hours bar count must also reach 85% of the median session for the 34-day scan, so dat one dey help dem reject any early day wey tape still dey fill. Shortened holiday session dey print roughly half of normal day bars, so dat rule dey drop am instead of to measure am as half loaded.
- The return. First regular-session opening price inside the window to last regular-session close, wey dem build from minute bars. Na regular hours only, so dem no dey include premarket and after-hours prints. Na price return e be: dem no dey add dividends back.
- The floors. At least $1 billion must trade across the whole window, opening price must be $10 or more, and dem must print on at least 15 of the window's sessions. The dollar floor na monthly total, so e easy pass to clear than if dem use single week measure am.
- The exclusions. Dem dey remove Leveraged and inverse funds by name. Every ticker must also get company fundamentals, and market capitalization must dey for our reference data. Dat second rule dey drop ETFs, closed-end funds, commodity trusts and the fast-growing family of leveraged single-stock products, wey for another way for to fill most of both boards. Dat reference table get one row per ticker instead of dated daily snapshot, so the screen dey read the whole table and no single date dey decide who qualify. Any ticker wey get stock split wey happen inside the last 45 days dey drop instead of to do back-adjustment, because split dey move per-share price without change wetin the holding worth. One symbol wey vendor feeds don reassign between two different companies dey excluded by name.
- The mega-cap panel. Na fixed basket of eight widely held large US companies, wey dem list by name for dat panel's SQL. E dey use the same window and the same return construction as the boards, and e dey outside the dollar-volume screen.
- Wetin dem no dey apply. No sector filter, no market-cap floor and no index-membership requirement, so small company wey dey churn heavily fit sit for board beside large one. Ranking na by percentage change only, na why dem print dollars-traded column next to am.
One panel dey carry the receipt for all of am: the sessions the window cover, and the universe wey each board dem screen from.
The exact SQL behind every number
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 wThe screen start from 4121 tickers wey get market capitalization for the reference table and e finish with 1167 companies wey clear the dollar-volume, price and session floors. Both figures dey store every time dem refresh this page, so if the universe shrink, e go show for the receipt instead of to pass unnoticed.
FAQ
Which stocks gain pass this month?
For the window wey end for Jul 22, the biggest gains for companies wey dey trade over $1 billion na CRNX at 136.1% and PBF at 65.9%. You fit see the full top ten for the first table for this page, and e dey update as new sessions finish.
Which stocks drop pass this month?
CLBK na the biggest drop at -44.6%, den NVTS at -41.6%. Dem use the same 21 sessions for this calculation, and dem use the same $1 billion dollar-volume floor as the gainers board.
How dem take measure monthly stock returns?
Monthly return for here na the change from the first regular-session opening price for the window reach the last regular-session close, wey dem calculate from minute bars. Na price return be this, so dem no add dividends, and any company wey do stock split near the window, dem dey drop dem instead of to do back-adjustment.
Why dem no include leveraged ETFs for stock movers list?
Leveraged or inverse fund dey multiply the daily move of an index or one single stock, so e fit top raw movers board for ordinary market day even if no company news dey behind am. To remove dem dey help make this list focus only on operating companies. How leveraged ETFs work go explain the daily reset and the drift wey dey come with holding one for one month.
Every panel for up na stored query wey get SQL attached. Open any one, change the dollar floor or the window length, and screen the same tape yourself for the Strasmore terminal.