High-Low Index ni nini na inafanyaje kazi?
High-Low Index ni wastani wa siku kumi wa Record High Percent. Jifunze fomula yake kwa namba kamili na jinsi ya kuepuka mtego wa ukubwa wa sampuli kwenye soko tulivu.
High-Low Index ni kipimo cha upana wa soko (market breadth) kinachotokana na hesabu mbili: ni wastani wa siku kumi (10-day simple moving average) wa Record High Percent, ambapo Record High Percent ni idadi ya hisa zilizofikia kilele kipya cha wiki 52 ikigawanywa na jumla ya hisa zilizofikia kilele kipya cha wiki 52 na zile zilizofikia chini kabisa (new 52-week lows), kisha ikazidishwa kwa 100. Usomaji wa zaidi ya 50 unamaanisha kuwa hisa nyingi zaidi zinapata viwango vya juu kuliko zile zinazopata viwango vya chini, na usomaji wa chini ya 50 unamaanisha kinyume chake. Mfumo wake ni mfupi hivyo. Kinachofuata ni hesabu zilizofafanuliwa kwa namba kamili na dosari ya ukubwa wa sampuli inayofanya usomaji unaoonekana kuwa thabiti utegemee idadi ndogo tu ya hisa.
Je, unahesabuje High-Low Index?
Hatua mbili, zote zikitoshea kwenye mstari mmoja.
- Record High Percent, kwa kikao kimoja: hesabu hisa katika kwingineko yako zilizofunga kwa kilele kipya cha wiki 52, hesabu zile zilizofunga kwa kiwango kipya cha chini cha wiki 52, gawanya idadi ya vilele kwa jumla ya hizo mbili, kisha zidisha kwa 100.
- High-Low Index: pata wastani wa usomaji wa Record High Percent wa siku kumi zilizopita.
Namba kamili hufanya jambo hili kuwa dhahiri. Soko linaonyesha vilele vipya 90 na viwango vipya vya chini 30. Jumla ya vilele na viwango vya chini ni 120, na 90 ikigawanywa kwa 120 ni 0.75, kwa hivyo Record High Percent kwa kikao hicho ni 75. Sasa chukua usomaji wa vikao kumi: 75, 70, 65, 60, 55, 50, 45, 40, 35 na 30. Jumla yake ni 525, na 525 ikigawanywa kwa 10 ni 52.5. High-Low Index inasoma 52.5 katika siku ambayo Record High Percent yake ilikuwa 75.
Pengo hilo ndilo biashara inayofanywa na wastani wa kusonga (moving average). Kumbukumbu ya siku kumi hupunguza ukali wa mfululizo unaoweza kubadilika kutoka 100 hadi 0 usiku kucha, kwa gharama ya kuchelewa. Fahirisi hii hujibu upana wa soko umekuwa wapi kwa wiki mbili. Haijawahi kujibu nini kimetokea mchana huu.
Nini huhesabika kama kilele kipya cha wiki 52?
Hisa hufikia kilele kipya cha wiki 52 wakati bei yake inapopita kila bei iliyorekodiwa katika wiki 52 zilizopita. Watoa huduma za data hutofautiana katika msingi huu: wengine hulinganisha bei za juu na chini za ndani ya siku (intraday), wengine hulinganisha bei za kufunga pekee, na hizo mbili hutoa hesabu tofauti kwa kikao kimoja. Bei za kufunga ndizo msingi kila mahali kwenye ukurasa huu. Vilele vipya vya wiki 52 na viwango vya chini hupitia orodha hiyo yenyewe.
Jopo hapa chini huhesabu ncha zote mbili kila kikao kwa kundi maalum la hisa 40 kubwa za Marekani, kuanzia Aprili 1 hadi Julai 31, 2026. Kundi la ukubwa huo huweka hesabu kuwa ndogo vya kutosha kukaguliwa kwa mkono, jambo ambalo hufanya dosari ya fomula hiyo kuonekana baadaye.
SQL halisi nyuma ya kila namba
WITH daily_close AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
argMax(close, window_start) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL','MSFT','NVDA','AMZN','GOOGL','AVGO','JPM','JNJ','XOM','PG',
'KO','PEP','WMT','HD','CVX','MRK','PFE','ABBV','CSCO','ORCL',
'CRM','ADBE','MCD','NKE','VZ','T','DIS','BA','CAT','GE',
'IBM','MMM','UNH','LLY','COST','TGT','SBUX','GS','MS','LIN')
AND window_start >= toDateTime('2025-03-01 00:00:00')
AND window_start < toDateTime('2026-08-01 05:00:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker, session_date
),
extremes AS (
SELECT cur.ticker AS ticker,
cur.session_date AS session_date,
cur.close_px AS close_px,
max(hist.close_px) AS high_52w,
min(hist.close_px) AS low_52w
FROM daily_close AS cur
INNER JOIN daily_close AS hist ON cur.ticker = hist.ticker
WHERE cur.session_date >= toDate('2026-04-01')
AND hist.session_date <= cur.session_date
AND hist.session_date > cur.session_date - 364
GROUP BY cur.ticker, cur.session_date, cur.close_px
),
daily AS (
SELECT session_date,
countIf(close_px >= high_52w) AS new_highs,
countIf(close_px <= low_52w) AS new_lows,
countIf(close_px >= high_52w) + countIf(close_px <= low_52w) AS names_at_extreme
FROM extremes
GROUP BY session_date
HAVING names_at_extreme > 0
)
SELECT session_date AS date,
formatDateTimeInJodaSyntax(session_date, 'MMM d') AS session_label,
new_highs,
new_lows
FROM daily
ORDER BY session_dateKatika 77 vikao, hesabu hizo mbili mara chache hupanda pamoja. Mnamo Jul 29, kikao cha mwisho katika kipindi hicho, 3 ya majina 40 yalifunga kwa kilele cha wiki 52 na 0 yalifunga kwa kiwango cha chini cha wiki 52. Mnamo Apr 1, kikao cha kwanza, mgawanyo ulikuwa 1 vilele dhidi ya 1 viwango vya chini. Kila hisa nyingine katika kundi ilikaa mahali fulani ndani ya masafa yake yenyewe na haikuingia kwenye hesabu.
Je, ni usomaji upi mzuri wa High-Low Index?
Mstari wa 50 ndio egemeo, ambapo vilele na viwango vya chini viko katika uwiano. Alama ya kawaida ya nguvu ni 70, ambapo vilele vipya vimezidi viwango vipya vya chini kwa zaidi ya mbili-kwa-moja katika wastani mzima wa siku 10. Alama ya kawaida ya udhaifu ni 30, kioo chake. Kati ya 30 na 70, fahirisi inasema ncha za soko zimechanganyika, ambapo ndipo inapokaa muda mwingi.
Jopo hapa chini huchora Record High Percent ya kila siku dhidi ya wastani wake wa siku 10 kwa kundi hilohilo. Ucheleweshaji unaonekana kwenye chati badala ya kuelezewa.
SQL halisi nyuma ya kila namba
WITH daily_close AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
argMax(close, window_start) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL','MSFT','NVDA','AMZN','GOOGL','AVGO','JPM','JNJ','XOM','PG',
'KO','PEP','WMT','HD','CVX','MRK','PFE','ABBV','CSCO','ORCL',
'CRM','ADBE','MCD','NKE','VZ','T','DIS','BA','CAT','GE',
'IBM','MMM','UNH','LLY','COST','TGT','SBUX','GS','MS','LIN')
AND window_start >= toDateTime('2025-03-01 00:00:00')
AND window_start < toDateTime('2026-08-01 05:00:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker, session_date
),
extremes AS (
SELECT cur.ticker AS ticker,
cur.session_date AS session_date,
cur.close_px AS close_px,
max(hist.close_px) AS high_52w,
min(hist.close_px) AS low_52w
FROM daily_close AS cur
INNER JOIN daily_close AS hist ON cur.ticker = hist.ticker
WHERE cur.session_date >= toDate('2026-04-01')
AND hist.session_date <= cur.session_date
AND hist.session_date > cur.session_date - 364
GROUP BY cur.ticker, cur.session_date, cur.close_px
),
daily AS (
SELECT session_date,
countIf(close_px >= high_52w) AS new_highs,
countIf(close_px >= high_52w) + countIf(close_px <= low_52w) AS names_at_extreme
FROM extremes
GROUP BY session_date
HAVING names_at_extreme > 0
),
rhp AS (
SELECT session_date,
round(100 * new_highs / names_at_extreme, 1) AS record_high_pct
FROM daily
),
smoothed AS (
SELECT session_date,
record_high_pct,
round(avg(record_high_pct) OVER (ORDER BY session_date
ROWS BETWEEN 9 PRECEDING AND CURRENT ROW), 1) AS high_low_index_pct,
count() OVER (ORDER BY session_date
ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) AS sessions_in_window
FROM rhp
)
SELECT session_date AS date,
formatDateTimeInJodaSyntax(session_date, 'MMM d') AS session_label,
record_high_pct,
high_low_index_pct
FROM smoothed
WHERE sessions_in_window = 10
ORDER BY session_dateMasafa yaliyochorwa huanza kwa Record High Percent ya 100 mnamo Apr 15, huku fahirisi ikiwa 52.5. Inafunga kwa 100 mnamo Jul 29, fahirisi 64. Soma kila moja dhidi ya alama za 70 na 30, na usome umbali kati ya mistari hiyo miwili kama bei ya ulaini: katika siku yoyote ile, wastani bado unabeba vikao tisa vya awali. Vikao tisa vya kwanza vya kipindi hicho havijajumuishwa kwenye jopo, kwa sababu wastani wa siku 10 unahitaji siku 10.
Denominator hupuuza sehemu kubwa ya soko
Hii hapa ni mipaka inayostahili kuzingatiwa. Denominator ya Record High Percent ni vilele vipya pamoja na viwango vipya vya chini, na hakuna kingine. Hisa iliyokaa katikati ya masafa yake ya wiki 52 haimo kwenye numerator wala denominator. Fahirisi haiwezi kutofautisha kikao ambapo 900 kati ya 3,000 za hisa zilifikia ncha kutoka kile ambapo 9 zilifanya hivyo, na inachapisha zote kwa namba hiyo hiyo ya tarakimu mbili yenye ujasiri.
Wazia soko la hisa la majina 6,000 katika kikao cha utulivu cha Agosti: hisa 40 hufikia vilele vipya, 20 hufikia viwango vipya vya chini. Record High Percent ni 40 ikigawanywa kwa 60, au 66.7, ambayo inasomeka kama ongezeko pana. Ilihesabiwa kutoka asilimia moja ya orodha. Majina mengine 5,940 hayakuwa na kura.
Kundi la majina 40 huweka toleo linaloweza kuhesabika la hilo kwenye skrini. Kila kikao katika kipindi hicho hupangwa kwenye kundi kulingana na ni majina mangapi yaliyochapisha ncha yoyote ile.
SQL halisi nyuma ya kila namba
WITH daily_close AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
argMax(close, window_start) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL','MSFT','NVDA','AMZN','GOOGL','AVGO','JPM','JNJ','XOM','PG',
'KO','PEP','WMT','HD','CVX','MRK','PFE','ABBV','CSCO','ORCL',
'CRM','ADBE','MCD','NKE','VZ','T','DIS','BA','CAT','GE',
'IBM','MMM','UNH','LLY','COST','TGT','SBUX','GS','MS','LIN')
AND window_start >= toDateTime('2025-03-01 00:00:00')
AND window_start < toDateTime('2026-08-01 05:00:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker, session_date
),
extremes AS (
SELECT cur.ticker AS ticker,
cur.session_date AS session_date,
cur.close_px AS close_px,
max(hist.close_px) AS high_52w,
min(hist.close_px) AS low_52w
FROM daily_close AS cur
INNER JOIN daily_close AS hist ON cur.ticker = hist.ticker
WHERE cur.session_date >= toDate('2026-04-01')
AND hist.session_date <= cur.session_date
AND hist.session_date > cur.session_date - 364
GROUP BY cur.ticker, cur.session_date, cur.close_px
),
daily AS (
SELECT session_date,
countIf(close_px >= high_52w) AS new_highs,
countIf(close_px >= high_52w) + countIf(close_px <= low_52w) AS names_at_extreme
FROM extremes
GROUP BY session_date
HAVING names_at_extreme > 0
)
SELECT multiIf(names_at_extreme <= 3, '1 to 3 names',
names_at_extreme <= 9, '4 to 9 names',
'10 or more names') AS sample_size_bucket,
count() AS readings,
round(avg(names_at_extreme), 1) AS avg_names_in_denominator,
round(quantileDeterministic(0.5)(100 * new_highs / names_at_extreme,
cityHash64(session_date)), 1) AS median_record_high_pct,
round(quantileDeterministic(0.5)(abs(100 * new_highs / names_at_extreme - 50),
cityHash64(session_date)), 1) AS median_distance_from_50
FROM daily
GROUP BY sample_size_bucket
ORDER BY avg_names_in_denominatorKatika 39 vikao kwenye kundi la 1 to 3 names, usomaji mzima ulitegemea wastani wa 2 majina kati ya 40. Vikao hivyo vilikuwa na wastani wa Record High Percent wa 100 na vilikaa wastani wa 50 pointi mbali na mstari wa 50. Vikao vya 10 or more names, 1 kati yao kwa wastani wa 10 majina, vilikuwa na wastani wa 70 na vilikaa 20 pointi kutoka katikati.
Hesabu hupunguza kile ambacho kikao chembamba kinaweza hata kuchapisha. Kwa majina matatu kwenye ncha, usomaji pekee unaowezekana ni 0, 33.3, 66.7 na 100. Kwa majina mawili, 0, 50 na 100 pekee. Usomaji wa 66.7 uliojengwa juu ya vilele viwili na kiwango kimoja cha chini hubeba desimali ambayo sampuli yake haiwezi kuistahimili. Tabia inayorekebisha hili ni wazi: soma hesabu ghafi za vilele na viwango vya chini kando ya fahirisi, kamwe usisome fahirisi peke yake.
Upana wa soko: High-Low Index dhidi ya advance/decline
Vipimo vyote viwili huuliza ni hisa ngapi zinashiriki. Huuliza hivyo katika upeo tofauti. Upana wa advance/decline huhesabu kila jina lililomaliza juu au chini dhidi ya jana. Denominator yake ni ulimwengu mzima, na inaelezea siku moja. High-Low Index huhesabu tu majina yaliyo kwenye ncha ya wiki 52. Denominator yake ni ndogo, na inaelezea mahali bei zilipo dhidi ya historia ya mwaka mzima. Soko linaweza kuwa juu kwa upana katika siku hiyo wakati majina machache sana yako karibu na kilele cha wiki 52.
Jopo hapa chini hufanya vipimo vyote viwili kuwa laini katika vikao 10 vilevile, kwenye kundi hilohilo, jambo ambalo huviweka kwenye mizani moja.
SQL halisi nyuma ya kila namba
WITH daily_close AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
argMax(close, window_start) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL','MSFT','NVDA','AMZN','GOOGL','AVGO','JPM','JNJ','XOM','PG',
'KO','PEP','WMT','HD','CVX','MRK','PFE','ABBV','CSCO','ORCL',
'CRM','ADBE','MCD','NKE','VZ','T','DIS','BA','CAT','GE',
'IBM','MMM','UNH','LLY','COST','TGT','SBUX','GS','MS','LIN')
AND window_start >= toDateTime('2025-03-01 00:00:00')
AND window_start < toDateTime('2026-08-01 05:00:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker, session_date
),
extremes AS (
SELECT cur.ticker AS ticker,
cur.session_date AS session_date,
cur.close_px AS close_px,
max(hist.close_px) AS high_52w,
min(hist.close_px) AS low_52w
FROM daily_close AS cur
INNER JOIN daily_close AS hist ON cur.ticker = hist.ticker
WHERE cur.session_date >= toDate('2026-04-01')
AND hist.session_date <= cur.session_date
AND hist.session_date > cur.session_date - 364
GROUP BY cur.ticker, cur.session_date, cur.close_px
),
daily AS (
SELECT session_date,
countIf(close_px >= high_52w) AS new_highs,
countIf(close_px >= high_52w) + countIf(close_px <= low_52w) AS names_at_extreme
FROM extremes
GROUP BY session_date
HAVING names_at_extreme > 0
),
prior AS (
SELECT ticker,
session_date,
close_px,
lagInFrame(close_px, 1) OVER (PARTITION BY ticker ORDER BY session_date
ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
FROM daily_close
),
breadth AS (
SELECT session_date,
round(100 * countIf(close_px > prev_close) / count(), 1) AS advancing_pct
FROM prior
WHERE session_date >= toDate('2026-04-01')
AND prev_close > 0
GROUP BY session_date
HAVING count() >= 20
),
combined AS (
SELECT d.session_date AS session_date,
round(100 * d.new_highs / d.names_at_extreme, 1) AS record_high_pct,
b.advancing_pct AS advancing_pct
FROM daily AS d
INNER JOIN breadth AS b ON d.session_date = b.session_date
),
smoothed AS (
SELECT session_date,
round(avg(record_high_pct) OVER (ORDER BY session_date
ROWS BETWEEN 9 PRECEDING AND CURRENT ROW), 1) AS high_low_index_pct,
round(avg(advancing_pct) OVER (ORDER BY session_date
ROWS BETWEEN 9 PRECEDING AND CURRENT ROW), 1) AS advancing_pct_10d,
count() OVER (ORDER BY session_date
ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) AS sessions_in_window
FROM combined
)
SELECT session_date AS date,
formatDateTimeInJodaSyntax(session_date, 'MMM d') AS session_label,
high_low_index_pct,
advancing_pct_10d
FROM smoothed
WHERE sessions_in_window = 10
ORDER BY session_dateJozi hiyo huanza masafa yaliyochorwa kwa 52.5 kwa High-Low Index na 52.8 kwa hisa zinazopanda za siku 10 mnamo Apr 15, na kumalizia kwa 64 na 52.5 mnamo Jul 29, katika 68 vikao vilivyochorwa. Hisa zinazopanda huishi katika bendi nyembamba. Takriban nusu ya kundi hufunga juu katika kikao cha kawaida, na kupata wastani wa kumi kati ya hizo huacha mstari karibu na katikati ya mizani. High-Low Index haina nanga kama hiyo. Wakati hakuna jina katika kundi linalochapisha kiwango cha chini cha wiki 52 kwa vikao kumi mfululizo, kila usomaji wa kila siku ni 100 na wastani ni 100 pamoja nao.
Upana wa soko husomeka vizuri zaidi na vipimo vya ushiriki kando yake. Relative volume huuliza ikiwa jina moja linafanya biashara kwa wingi usio wa kawaida leo dhidi ya kawaida yake. The week's biggest stock movers huonyesha ni majina yapi yaliyosafiri kweli, na unusual volume stocks this week huonyesha biashara ilikwenda wapi.
Maswali yanayoulizwa mara kwa mara kuhusu High-Low Index
Usomaji wa High-Low Index zaidi ya 70 unamaanisha nini?
Inamaanisha vilele vipya vya wiki 52 vimezidi viwango vipya vya chini vya wiki 52 kwa zaidi ya mbili-kwa-moja katika wastani wa vikao kumi vilivyopita. Hiyo ndiyo alama ya kawaida ya soko imara. Haielezi chochote kuhusu ni hisa ngapi zilifikia ncha, ambayo ndiyo namba ya kukagua kando yake.
Kuna tofauti gani kati ya Record High Percent na High-Low Index?
Record High Percent ni takwimu ya kikao kimoja: vilele vipya vikigawanywa kwa vilele vipya pamoja na viwango vipya vya chini, mara 100. High-Low Index ni wastani wa siku 10 wa takwimu hiyo. Moja inaelezea leo. Nyingine inaelezea wiki mbili zilizopita.
Je, High-Low Index inaweza kuwa 0 au 100?
Ndiyo. Ikiwa hakuna hisa katika ulimwengu inayofikia kiwango kipya cha chini cha wiki 52 kwa vikao kumi mfululizo, kila usomaji wa kila siku ni 100 na vivyo hivyo kwa wastani. Wakati hakuna hisa inayofikia kilele au kiwango cha chini, sehemu hiyo ina denominator ya sifuri na kikao hicho hakina usomaji uliotafsirika.
Je, High-Low Index ni sawa na upana wa advance/decline?
Hapana. Upana wa advance/decline hugawanya kwa ulimwengu mzima na kuelezea siku moja ya mwelekeo. High-Low Index hugawanya kwa kundi dogo la hisa zilizokaa kwenye ncha za wiki 52 na kuelezea msimamo dhidi ya mwaka wa bei.
Ni hisa ngapi kwa kawaida huwa kwenye denominator ya High-Low Index?
Katika kundi la majina 40 lililopimwa hapa kuanzia Aprili hadi Julai 2026, vikao katika kundi la 1 to 3 names vilikuwa na wastani wa 2 majina kwenye denominator. Hesabu za soko zima huwa kubwa zaidi kwa idadi kamili huku zikibaki kuwa sehemu ndogo ya orodha zote, ndiyo sababu hesabu ghafi zinapaswa kuwepo kwenye skrini kando ya fahirisi.
Kila hesabu kwenye ukurasa huu ni swali lililohifadhiwa na kuwekewa toleo juu ya bei za kufunga. Fungua jopo lolote ili kusoma SQL iliyo nyuma yake, au jenga upya mfululizo huo wa upana kwenye kundi lako mwenyewe kwenye terminal ya Strasmore.