High-Low Index ni nini na inafanyaje kazi sokoni?
High-Low Index ni wastani wa siku kumi wa Record High Percent. Jifunze fomula yake kwa namba kamili na jinsi ukubwa wa sampuli unavyoathiri usomaji katika soko tulivu.
High-Low Index ni kipimo cha upana wa soko kinachotokana na hesabu mbili: ni wastani wa kusonga wa siku kumi (10-day simple moving average) wa asilimia ya rekodi za juu (Record High Percent). Asilimia ya rekodi za juu ni idadi ya hisa zilizofikia viwango vipya vya juu vya wiki hamsini na mbili (52-week highs) ikigawanywa kwa jumla ya hisa zilizofikia viwango vipya vya juu na viwango vipya vya chini vya wiki hamsini na mbili, ikizidishwa kwa mia moja.
Usomaji ulio juu ya hamsini unamaanisha kuwa hisa nyingi zaidi zinafanya miamala (prints) katika viwango vipya vya juu kuliko viwango vipya vya chini, na usomaji ulio chini ya hamsini unamaanisha kinyume chake. Mfumo huo ni mfupi kiasi hicho. Kinachofuata ni hesabu iliyofanywa kwa namba kamili na dosari ya ukubwa wa sampuli inayofanya usomaji unaoonekana kuwa wa uhakika kutegemea 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 ulimwengu wako zilizofunga kwa bei mpya ya juu ya wiki hamsini na mbili, hesabu zile zilizofunga kwa bei mpya ya chini ya wiki hamsini na mbili, gawanya idadi ya bei za juu kwa jumla ya hizo mbili, kisha zidisha kwa mia moja.
- High-Low Index: pata wastani wa usomaji wa Record High Percent wa siku kumi zilizopita.
Namba kamili huifanya iwe wazi. Tape inachapisha bei mpya tisini za juu na bei mpya thelathini za chini. Bei za juu pamoja na za chini ni mia moja ishirini, na tisini ikigawanywa kwa mia moja ishirini ni sifuri nukta saba tano, kwa hivyo Record High Percent kwa kikao hicho ni sabini na tano. Sasa chukua usomaji wa vikao kumi: sabini na tano, sabini, sitini na tano, sitini, hamsini na tano, hamsini, arobaini na tano, arobaini, thelathini na tano na thelathini. Jumla yake ni mia tano ishirini na tano, na mia tano ishirini na tano ikigawanywa kwa kumi ni hamsini na mbili nukta tano. High-Low Index inasoma hamsini na mbili nukta tano katika siku ambayo Record High Percent yake ilikuwa sabini na tano.
Pengo hilo ndilo biashara inayotokana na moving average. Kumbukumbu ya siku kumi hufanya laini mfululizo unaoweza kubadilika kutoka mia moja hadi sifuri ndani ya usiku mmoja, kwa gharama ya kuchelewa kufika. Fahirisi hii hujibu mahali ambapo breadth imekuwa kwa muda wa wiki mbili. Haijawahi kujibu kile kilichotokea mchana huu.
Ni nini kinachozingatiwa kama kiwango kipya cha juu cha wiki hamsini na mbili?
Hisa hufikia kiwango kipya cha juu cha wiki hamsini na mbili wakati bei yake inapopita kila bei iliyorekodiwa katika wiki hamsini na mbili zilizopita. Watoa data hutofautiana katika msingi huu: wengine hulinganisha bei za juu na za chini za ndani ya siku, wengine hulinganisha bei za kufunga pekee, na njia hizi mbili hutoa hesabu tofauti kwa kikao kimoja. Bei za kufunga ndizo msingi unaotumika kila mahali kwenye ukurasa huu. Viwango vipya vya juu na vya chini vya wiki hamsini na mbili hupitia orodha hiyo yenyewe.
Jopo lililo hapa chini huhesabu ncha zote mbili kila kikao kwa kikapu maalum cha majina arobaini ya kampuni kubwa za Marekani, kuanzia Aprili moja hadi Julai thelathini na moja, mwaka wa elfu mbili ishirini na sita. Kikapu cha ukubwa huo hufanya hesabu kuwa ndogo vya kutosha kukaguliwa kwa mkono, jambo ambalo hufanya dosari katika 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 vipindi vya 77, hesabu hizo mbili mara chache hupanda pamoja. Mnamo Jul 29, kikao cha mwisho katika kipindi hicho, 3 kati ya majina arobaini yalifunga kwa kiwango cha juu cha wiki hamsini na mbili na 0 yalifunga kwa kiwango cha chini cha wiki hamsini na mbili. Mnamo Apr 1, kikao cha kwanza, mgawanyo ulikuwa 1 kwa viwango vya juu dhidi ya 1 kwa viwango vya chini. Kila jina lingine katika kikapu hicho lilikuwa mahali fulani ndani ya masafa yake yenyewe na halikuwahi kuingia katika hesabu hiyo.
Ni usomaji upi mzuri wa High-Low Index?
Laini ya 50 ndiyo egemeo, ambapo viwango vya juu na vya chini viko katika uwiano. Alama ya kawaida ya nguvu ni 70, ambapo idadi ya viwango vipya vya juu imezidi viwango vipya vya chini kwa zaidi ya mbili-kwa-moja katika wastani mzima wa siku kumi. Alama ya kawaida ya udhaifu ni 30, ambayo ni kioo chake. Kati ya 30 na 70, fahirisi inaashiria kuwa hali za soko zimechanganyika, hali ambayo hutokea mara nyingi.
Jopo hapa chini linachora asilimia ya Record High Percent ya kila siku dhidi ya wastani wake wa siku kumi kwa kikapu hicho hicho. 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 yanaanza kwa Record High Percent ya 100 mnamo Apr 15, huku fahirisi ikiwa katika 52.5. Inafungwa kwa 100 mnamo Jul 29, fahirisi ikiwa 64. Soma kila moja dhidi ya alama za 70 na 30, na usome umbali kati ya laini hizo mbili kama gharama ya ulainishaji: katika siku yoyote ile, wastani bado unabeba vikao tisa vya awali. Vikao tisa vya kwanza vya kipindi hiki havijajumuishwa kwenye jopo, kwa sababu wastani wa siku kumi unahitaji siku kumi.
Denominator hupuuza sehemu kubwa ya soko
Hii ndiyo changamoto inayostahili kuzingatiwa. Denominator ya Record High Percent ni jumla ya new highs na new lows pekee, na si kitu kingine. Hisa iliyo katikati ya 52-week range yake haimo kwenye numerator wala denominator. Fahirisi hii haiwezi kutofautisha kikao ambacho hisa mia tisa kati ya elfu tatu zimefikia ukomo, na kile ambacho tisa pekee zimefanya hivyo; inatoa matokeo yote mawili kwa namba ileile ya tarakimu mbili yenye kuleta taswira ya uhakika.
Wazia soko la hisa lenye majina elfu sita katika kikao cha utulivu cha mwezi Agosti: hisa arobaini zimefikia new highs, ishirini zimefikia new lows. Record High Percent ni arobaini ikigawanywa kwa sitini, au sitini na sita nukta saba, jambo linaloashiria ongezeko kubwa. Hii ilihesabiwa kutoka asilimia moja ya hisa zilizoorodheshwa. Majina mengine elfu tano mia tisa arobaini hayakuwa na sauti.
Kikapu cha majina arobaini huweka toleo linaloweza kuhesabika la hali hiyo kwenye skrini. Kila kikao ndani ya kipindi hicho hupangwa kwenye kundi kulingana na idadi ya majina yaliyofikia ukomo wowote.
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 vikao 39 vilivyo kwenye kundi la 1 to 3 names, usomaji mzima ulitegemea wastani wa majina 2 kati ya arobaini. Vikao hivyo vilikuwa na median ya Record High Percent ya 100 na vilikuwa umbali wa median ya pointi 50 kutoka mstari wa hamsini. Vikao 10 or more names, ambavyo 1 kati yake vilikuwa na wastani wa majina 10, vilikuwa na median ya 70 na vilikuwa umbali wa pointi 20 kutoka katikati.
Hesabu hizi huwekea mipaka kile ambacho kikao chenye miamala michache kinaweza kuonyesha. Kwa majina matatu yaliyofikia ukomo, usomaji unaowezekana ni sifuri, thelathini na tatu nukta tatu, sitini na sita nukta saba, na mia moja. Kwa majina mawili, ni sifuri, hamsini, na mia moja pekee. Usomaji wa sitini na sita nukta saba uliotokana na highs mbili na low moja hubeba desimali ambayo sampuli yake haiwezi kuiunga mkono. Tabia ya kurekebisha hili ni rahisi: soma idadi halisi ya highs na lows kando ya fahirisi, usisome fahirisi hiyo peke yake.
Upana wa soko: High-Low Index dhidi ya advance/decline
Vipimo vyote viwili huuliza ni hisa ngapi zinazoshiriki. Huuliza swali hilo kwa muda tofauti. Upana wa advance/decline huhesabu kila hisa iliyofunga ikiwa juu au chini ikilinganishwa na jana. Kishiriki chake ni soko zima, na hufafanua siku moja. High-Low Index huhesabu tu hisa zilizopo kwenye kiwango cha juu au cha chini cha wiki hamsini na mbili. Kishiriki chake ni kidogo, na hufafanua mahali bei zilipo dhidi ya historia ya mwaka mzima. Soko linaweza kuwa juu kwa ujumla katika siku husika wakati hisa chache sana zikiwa karibu na kiwango cha juu cha wiki hamsini na mbili.
Jopo hapa chini husawazisha vipimo vyote viwili kwa vipindi kumi vilevile, kwenye kikapu kilekile, jambo linaloviweka kwenye kipimo kimoja.
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 kwenye 52.5 kwa ajili ya High-Low Index na 52.8 kwa ajili ya hisa zinazopanda za siku kumi kwenye Apr 15, na kumalizia kwenye 64 na 52.5 kwenye Jul 29, katika vipindi 68 vilivyochorwa. Hisa zinazopanda hukaa kwenye bendi nyembamba. Takribani nusu ya kikapu hufunga juu katika kikao cha kawaida, na wastani wa siku kumi za namna hiyo huacha mstari ukiwa karibu na katikati ya kipimo. High-Low Index haina nanga ya namna hiyo. Wakati hakuna hisa katika kikapu inayofunga kwa kiwango cha chini cha wiki hamsini na mbili kwa vipindi kumi mfululizo, kila usomaji wa kila siku ni mia moja na wastani wake ni mia moja pia.
Upana wa soko husomeka vyema zaidi kukiwa na vipimo vya ushiriki kando yake. Relative volume huuliza ikiwa hisa moja inafanya biashara kwa uzito usio wa kawaida leo dhidi ya kawaida yake. The week's biggest stock movers huonyesha ni hisa zipi zilizosonga kweli, na unusual volume stocks this week huonyesha mahali biashara ilipoelekea.
Maswali Yanayoulizwa Mara kwa Mara Kuhusu High-Low Index
Kusoma kwa High-Low Index zaidi ya 70 kunamaanisha nini?
Inamaanisha kuwa idadi ya hisa zilizofikia viwango vipya vya juu vya wiki 52 ilizidi idadi ya hisa zilizofikia viwango vipya vya chini vya wiki 52 kwa uwiano wa zaidi ya mbili kwa moja katika wastani wa vipindi kumi vilivyopita. Hiyo ndiyo alama ya kawaida ya soko imara. Haielezi chochote kuhusu ni hisa ngapi zimefikia kiwango cha juu au cha chini kabisa, ambayo ndiyo namba inayopaswa kuangaliwa sambamba na index hiyo.
Kuna tofauti gani kati ya Record High Percent na High-Low Index?
Record High Percent ni takwimu ya kipindi kimoja: idadi ya viwango vipya vya juu ikigawanywa kwa jumla ya viwango vipya vya juu na viwango vipya vya chini, ikizidishwa kwa 100. High-Low Index ni wastani rahisi wa kusonga (simple moving average) wa siku kumi wa takwimu hiyo. Moja inaelezea hali ya leo. Nyingine inaelezea wiki mbili zilizopita.
Je, High-Low Index inaweza kuwa 0 au 100?
Ndiyo. Ikiwa hakuna hisa yoyote katika soko inayofikia kiwango kipya cha chini cha wiki 52 kwa vipindi kumi mfululizo, kila usomaji wa kila siku ni 100 na wastani wake pia ni 100. Wakati hakuna hisa inayofikia kiwango cha juu au cha chini, sehemu hiyo inakuwa na kigawanyo cha sifuri na kipindi hicho hakina usomaji uliotajwa.
Je, High-Low Index ni sawa na advance/decline breadth?
Hapana. Advance/decline breadth hugawanya kwa soko zima na kuelezea mwelekeo wa siku moja. High-Low Index hugawanya kwa kundi dogo la hisa zilizopo kwenye viwango vya juu au vya chini vya wiki 52 na kuelezea nafasi ya hisa dhidi ya bei za mwaka mmoja.
Ni hisa ngapi kwa kawaida huwa kwenye kigawanyo cha High-Low Index?
Katika kikapu cha majina 40 kinachopimwa hapa kuanzia Aprili hadi Julai 2026, vipindi vilivyomo kwenye kundi la 1 to 3 names vilikuwa na wastani wa majina 2 kwenye kigawanyo. Hesabu za soko zima huwa kubwa zaidi kwa idadi kamili huku zikibaki kuwa sehemu ndogo ya hisa zote zilizoorodheshwa, ndiyo maana hesabu ghafi zinapaswa kuwepo kwenye skrini kando ya index.
Kila hesabu kwenye ukurasa huu ni swali lililohifadhiwa na kuwekewa toleo (versioned query) kuhusu bei za kufunga soko. Fungua paneli yoyote ili kusoma SQL iliyo nyuma yake, au jenga upya mfululizo huo wa breadth kwenye kikapu chako mwenyewe katika terminal ya Strasmore.