بزرگترین تغییرات قیمتی سهام در این ماه
رتبهبندی بیشترین سودآورها و زیاندهندههای بازار بر اساس حجم معاملات دلاری. تحلیل دقیق نوسانات قیمتی شرکتهای پرحجم برای شناسایی فرصتهای جدید بازار.
بزرگترین تغییرات قیمتی سهام در این ماه، بر اساس دادههای مستقیم بورس و با رتبهبندی از پایین به بالا، شامل جلسات معاملاتی تکمیلشده در بازه Jun 23 تا Jul 22 از مجموع 21 جلسه است. این فهرست تنها شامل شرکتهای عملیاتی است که در این بازه زمانی حداقل 1 میلیارد دلار معامله شدهاند؛ بنابراین هر تغییر در این جدول، دارای حجم واقعی سرمایه است. صندوقهای اهرمی و معکوس از این لیست کنار گذاشته شدهاند و با تکمیل جلسات جدید، بازه زمانی نیز بهروزرسانی میشود.
بزرگترین سودآورهای سهام در این ماه
این جدول، بیشترین میزان رشد را در بازه زمانی مذکور رتبهبندی میکند. هر ردیف علاوه بر درصد تغییرات، میزان حجم معاملات دلاری را نیز نشان میدهد؛ این فاکتور، تفاوت میان بازآرایی قیمت در بازارهای پرحجم و بازارهای کمحجم را مشخص میکند.
کد دقیق SQL پشت هر عدد
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 با رشد 136.1% و حجم معاملات 9.7 میلیارد دلار، در صدر جدول قرار گرفت. این میزان رشد از PBF با رشد 65.9% و MAN با رشد 62.1% پیشی گرفته است. حرکتی با این ابعاد در طول یک ماه، معمولاً ابتدا خود را به صورت افزایش relative volume نسبت به average daily volume سهام نشان میدهد و اغلب به جای صعود مداوم در کل بازه، با یک overnight gap در یک جلسه معاملاتی آغاز میشود.
بزرگترین ریزشهای سهام در این ماه
ساختاری مشابه اما معکوس: شدیدترین کاهشها در این بازه زمانی، میان شرکتهایی که حجم معاملات آنها از آستانه 1 میلیارد دلار فراتر رفته است.
کد دقیق SQL پشت هر عدد
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 با کاهش -44.6% و حجم معاملات 1.1 میلیارد دلار، بیشترین ریزش را داشت و NVTS با -41.6% در رتبه بعدی قرار گرفت. به ستون دلار در این جدول توجه کنید. کاهش قیمت در بازاری با حجم معاملات بالا، با کاهش در یک بازار کمتحرک متفاوت است؛ در اینجا این دو حالت از هم متمایز شدهاند و فرض بر تفاوت آنها است.
یک پرسش در سه بازه زمانی مختلف
یک پرسش، سه بازه زمانی. یک نام میتواند در صدر یک فهرست باشد اما در دو فهرست دیگر هیچ اثری از آن نباشد.
- بزرگترین سهامهای بازنده در این هفته و در کنار آنها، سهامهای بیشترین سوددهی در پنج جلسه معاملاتی اخیر
- این صفحه، در بازه زمانی یک ماه اخیر
- بزرگترین نوسانگیرهای سهام در سال 2026، بر اساس شاخص سالانه تا کنون
این سه فهرست به صورت مجزا ساخته شدهاند و دادههای آنها یکسان نیست نیست. صفحه هفتگی، کف نقدینگی و حداقل حجم معاملات را در یک بازه پنج جلسهای تعیین میکند. صفحه مربوط به سالانه تا کنون، به جای حجم کل معاملات در یک بازه، بر اساس میانگین حجم معاملات روزانه فیلتر میشود. هر صفحه قوانین و روشهای خود را در بخش متدولوژی ذکر کرده است؛ بنابراین پیش از انتقال یک نام از یک فهرست به فهرست دیگر، آنها را مطالعه کنید.
یک شکاف قیمتی واحد میتواند بر فهرست هفتگی مسلط باشد اما در بازه یک ساله از بین برود. یک روند نزولی یا صعودی آرام در ماه، هرگز به فهرست هفتگی راه نمییابد. مقایسه همزمان این سه فهرست، سادهترین راه برای تشخیص یک رویداد تکروزه از یک روند است.
وضعیت بازار در بازه زمانی مشابه
عملکرد یک سهم در مقایسه با عملکرد کلی بازار در یک ماه، متفاوت است. چهار شاخص اصلی، که هر کدام بر اساس اولین قیمت بازگشایی در این بازه زمانی بازبینی شدهاند:
کد دقیق SQL پشت هر عدد
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در آخرین جلسه معاملاتی، شاخص S&P 500 در سطح 1.85%، شاخص Nasdaq 100 در سطح -1.47%، شاخص Dow در سطح 1.33% و شاخص Russell 2000 در سطح 0.17% قرار داشتند. چهار سبد سهام، یک بازه زمانی و چهار نتیجه متفاوت. اکنون لیست برترینها را با این محدوده مقایسه کنید: بالاترین میزان سود در لیست سهامهای پربازده، در همین جلسات معاملاتی از 136.1% فراتر رفت. عملکرد شرکتهای انفرادی بسیار پراکندهتر از سبدهای سهامی است که آنها را در خود جای دادهاند؛ به همین دلیل است که لیست سهامهای پرتحرک، فهرستی از نامهای انفرادی است.
عملکرد شرکتهای شناختهشده
خوانندگانی که به دنبال بهترین سهام ماه جاری هستند، معمولاً میخواهند بدانند وضعیت سهامی که در اختیار دارند چگونه بوده است. سبد ثابتی شامل هشت شرکت بزرگ و شناختهشده، در بازه زمانی و ساختار مشابه:
کد دقیق SQL پشت هر عدد
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) DESCاین گروه از 11.5% برای META در بالاترین سطح تا -4.7% برای TSLA در پایینترین سطح نوسان داشتند. این شرکتها همگام با یکدیگر حرکت نکردند؛ وضعیتی که در اکثر موارد شاهد آن هستیم. عضویت در شاخصها باعث گروهبندی این شرکتها شده است، در حالی که خطوط درآمدی آنها ارتباط بسیار کمی با یکدیگر دارند. این سبد به جای رتبهبندی، یک لیست ثابت از هشت نام است؛ بنابراین آن را به عنوان یک راهنما و نه ادعایی درباره بزرگترین شرکتها در نظر بگیرید.
ماه عادی چگونه است
لیستهای برترینها، دادههای پرت را نشان میدهند. این بخش، روند اصلی را نمایش میدهد. تمام شرکتهای فیلتر شده در 1167، بر اساس میزان بازدهی خود در این بازه زمانی، دستهبندی شدهاند:
کد دقیق SQL پشت هر عدد
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 از شرکتهای فیلتر شده، در طول این بازه 20٪ یا بیشتر سود داشتند و 50 نیز 20٪ یا بیشتر ضرر کردند. دو دسته نزدیک به حالت خنثی، شامل 300 و 515 نام بودند. آن نمودار، ساختار اصلی لیست سهام پرتحرک را نشان میدهد و ده مورد برتر، لبه سمت راست آن هستند. با در نظر گرفتن این نکته، لیستهای بالا را بخوانید: یک حرکت ماهانه در ده مورد برتر، ذاتاً یک داده پرت است و هرگز نشاندهنده یک ماه معمولی برای یک سهم معمولی نیست.
عوامل حضور یک سهم در لیست تغییرات ماهانه
یک ماه زمان کافی برای وقوع چندین رویداد و در عین حال زمان کوتاهی است که معمولاً یکی از این رویدادها بر بازار غالب میشود. نامهای موجود در این لیستها معمولاً با رویدادهای تاریخگذاری شده در تقویم شرکتها همزمان است. گزارشهای فصلی رایجترین عامل هستند: فراتر رفتن از پیشبینیها یا کمتر از آن عمل کردن، قیمت را در یک جلسه معاملاتی بازنشانی میکند و در باقی ماه، معاملات حول سطح جدید انجام میشود. تغییر در Guidance نیز بدون نیاز به انتشار نتایج، همین اثر را دارد.
اخبار ادغام و تملک (M&A) متمایزترین اثر را در لیست تغییرات ماهانه بر جای میگذارد. قیمت سهم به سطحی نزدیک به قیمت اعلامشده برای معامله جهش میکند و سپس آرام میگیرد؛ در این حالت، حجم معاملات دلاری بسیار بالا باقی میماند اما درصد تغییرات قیمت ثابت میشود. اگر نامی در صدر جدول بیشترین سوددهی، حجم معاملات دلاری بسیار بالا و قیمتی را نشان دهد که در میانه بازه زمانی از حرکت باز ایستاده است، این الگو باید پیش از هر چیز دیگری بررسی شود.
تغییرات بخشی (Sector) در یک ماه، به شکلی اهمیت دارند که به ندرت در یک هفته دیده میشوند. تغییر در نرخ بهره، قیمت نفت یا قیمت حافظهها، یک گروه کامل از شرکتها را همزمان تحت تأثیر قرار میدهد؛ به همین دلیل است که لیستهای ماهانه اغلب شامل خوشههایی از کسبوکارهای مشابه هستند، نه ده نام بیارتباط با هم. اقدامات تحلیلگران، اضافه یا حذف شدن از شاخصها، نتایج آزمایشها و قوانین نظارتی، و Short Squeezeها بخشهای باقیمانده را تکمیل میکنند. هیچکدام از این موارد تنها از طریق درصد تغییرات قابل مشاهده نیستند؛ به همین دلیل است که ستون حجم معاملات دلاری و بازه زمانی بازار در کنار هر تغییر در اینجا قرار گرفته است.
نحوه اندازهگیری
تمام آستانهها در اینجا به صراحت ذکر شدهاند و بر اساس فرض و گمان نیستند. صفحهای با قوانین پنهان، به جای داده، در واقع یک نظر شخصی است.
- بازه زمانی. 30 روز تقویمی گذشته که به آخرین جلسه معاملاتی با دادههای کامل ختم میشود؛ این بازه شامل 21 جلسه از Jun 23 تا Jul 22 است. دو قانون برای تعیین صلاحیت یک جلسه معاملاتی وجود دارد. جلسه باید پیش از تاریخ جاری در نیویورک بسته شده باشد، بنابراین جلسه در حال اجرا هرگز در محدوده بررسی قرار نمیگیرد. همچنین تعداد کندلهای ساعات معاملاتی عادی باید به 85٪ میانه جلسات در اسکن 34 روزه برسد؛ این قانون باعث میشود روزهای ابتدایی که دادههایشان هنوز در حال تکمیل است، از لیست حذف شوند. یک جلسه کوتاه در تعطیلات، تقریباً نصف کندلهای یک روز عادی را ثبت میکند، بنابراین این قانون آن را حذف میکند تا از اندازهگیری دادههای ناقص جلوگیری شود.
- بازده. قیمت بازگشایی اولین جلسه عادی در بازه زمانی تا قیمت بستهشدن آخرین جلسه عادی، که از کندلهای دقیقهای تشکیل شده است. فقط ساعات معاملاتی عادی محاسبه میشود، بنابراین دادههای پیشبازگشایی و پسبازگشایی حذف میشوند. این یک بازده قیمتی است: سود سهام به آن اضافه نمیشود.
- حداقلها. مجموع حجم معاملات در کل بازه زمانی باید حداقل 1 میلیارد دلار باشد، قیمت بازگشایی باید 10 دلار یا بیشتر باشد، و معاملات باید در حداقل 15 جلسه از بازه زمانی ثبت شده باشد. آستانه دلاری، یک مجموع ماهانه است که عبور از آن را نسبت به همان رقم در یک هفته واحد، آسانتر میکند.
- استثنائات. صندوقهای اهرمی و معکوس بر اساس نام حذف میشوند. هر نماد باید دارای اطلاعات بنیادی شرکت و ارزش بازار ثبت شده در دادههای مرجع ما باشد. قانون دوم باعث حذف ETFها، صندوقهای بسته، تراستهای کالا و خانواده در حال رشد محصولات اهرمی تکسهم میشود که در غیر این صورت بخش اعظم هر دو جدول را پر میکردند. این جدول مرجع، به جای یک تصویر روزانه، برای هر نماد یک ردیف دارد؛ بنابراین اسکن، کل جدول را میخواند و یک تاریخ خاص تعیینکننده صلاحیت نیست. هر نمادی که در 45 روز گذشته دچار تقسیم سهام (Stock Split) شده باشد، به جای تعدیل به عقب، حذف میشود؛ زیرا تقسیم سهام قیمت هر سهم را تغییر میدهد بدون اینکه ارزش دارایی را تغییر دهد. همچنین نمادی که توسط فیدهای تامینکننده بین دو شرکت مختلف تغییر یافته است، بر اساس نام حذف میشود.
- پنل شرکتهای بزرگ (Mega-cap). یک سبد ثابت شامل هشت شرکت بزرگ و پرمحبوب آمریکایی که نام آنها در SQL آن پنل لیست شده است. این پنل از همان بازه زمانی و ساختار بازدهی جداول استفاده میکند و خارج از فیلتر حجم دلاری قرار دارد.
- موارد عدم اعمال. هیچ فیلتر بخشی، آستانه ارزش بازار یا الزام عضویت در شاخص وجود ندارد؛ بنابراین یک شرکت کوچک با نوسان بالا میتواند در کنار یک شرکت بزرگ در جدول قرار گیرد. رتبهبندی فقط بر اساس درصد تغییرات است، به همین دلیل ستون حجم معاملات دلاری در کنار آن نمایش داده میشود.
یک پنل، تمام جزئیات را ارائه میدهد: جلسات پوشش داده شده در بازه زمانی و محدوده جستجوی هر جدول.
کد دقیق SQL پشت هر عدد
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 wاسکن از 4121 نماد دارای ارزش بازار در جدول مرجع شروع شد و با 1167 شرکت که از آستانههای حجم دلاری، قیمت و تعداد جلسات عبور کردند، پایان یافت. هر دو رقم با هر بار بازنشانی این صفحه ذخیره میشوند، بنابراین اگر تعداد نمادها در یک محدوده کوچک کاهش یابد، این موضوع در بخش جزئیات مشخص میشود.
سوالات متداول
بیشترین سوددهی سهام در این ماه متعلق به کدام شرکتهاست؟
برای بازه زمانی منتهی به Jul 22، بزرگترین میزان رشد در میان شرکتهای با ارزش معاملات بیش از 1 میلیارد دلار، متعلق به 136.1% با نرخ CRNX و 65.9% با نرخ PBF بود. لیست کامل ده شرکت برتر در اولین جدول این صفحه قرار دارد و با تکمیل جلسات معاملاتی جدید، بهروزرسانی میشود.
بیشترین ریزش سهام در این ماه مربوط به کدام شرکتهاست؟
-44.6% با نرخ CLBK بیشترین کاهش را داشت و پس از آن -41.6% با نرخ NVTS قرار گرفت. هر دو مورد در همان جلسات 21 و با همان کف حجم معاملات 1 میلیارد دلاری (مشابه لیست سوددهها) اندازهگیری شدهاند.
بازده ماهانه سهام چگونه محاسبه میشود؟
بازده ماهانه در اینجا عبارت است از تغییر قیمت از اولین قیمت بازگشایی جلسه عادی در بازه زمانی مشخص تا آخرین قیمت بستهشدن جلسه عادی که از نمودارهای دقیقهای (minute bars) استخراج شده است. این یک بازده قیمتی است؛ بنابراین سود نقدی (dividends) به آن اضافه نمیشود. همچنین، هر شرکتی که در نزدیکی بازه زمانی مورد نظر، تقسیم سهام انجام دهد، به جای تعدیل معکوس، از لیست حذف میشود.
چرا ETFهای اهرمدار (leveraged) از لیست تغییرات سهام حذف میشوند؟
یک صندوق اهرمدار یا معکوس، حرکت روزانه یک شاخص یا یک تکسهم را چند برابر میکند؛ بنابراین ممکن است در یک روز عادی بازار و بدون هیچ خبر شرکتی، در صدر لیست تغییرات قرار گیرد. حذف این صندوقها باعث میشود این لیست فقط شامل شرکتهای عملیاتی باقی بماند. نحوه عملکرد ETFهای اهرمدار به موضوع بازنشانی روزانه و انحراف (drift) ناشی از نگهداری یک ماهه این صندوقها میپردازد.
هر پنل در بالا یک پرسوجوی ذخیرهشده با کد SQL مربوطه است. یکی از آنها را باز کنید، کف دلاری یا طول بازه زمانی را تغییر دهید و خودتان همان دادهها را در ترمینال Strasmore بررسی کنید.