High-Low Index nedir ve nasıl hesaplanır
High-Low Index, Record High Percent değerinin on günlük hareketli ortalamasıdır. Yuvarlak sayılarla formülün işleyişi ve düşük hacimli piyasalardaki örneklem hatası incelenmiştir.
Piyasa Genişliği Göstergesi Olarak High-Low Index
High-Low Index, iki farklı verinin hesaplanmasıyla oluşturulan bir piyasa genişliği ölçütüdür. Gösterge, "Record High Percent" değerinin on günlük basit hareketli ortalamasıdır. Record High Percent ise, yeni elli iki haftalık zirvelerin, yeni elli iki haftalık zirveler ile yeni elli iki haftalık diplerin toplamına bölünmesi ve sonucun yüz ile çarpılmasıyla elde edilir.
Elli seviyesinin üzerindeki bir değer, yeni zirve yapan hisse sayısının yeni dip yapanlardan fazla olduğunu gösterir. Elli seviyesinin altındaki bir değer ise bunun tam tersine işaret eder. Formül bu kadar kısa ve nettir. Aşağıda, bu aritmetiğin yuvarlak sayılarla nasıl işlediği ve kararlı görünen bir okumanın aslında çok az sayıda hisse senedine dayanmasına yol açan örneklem büyüklüğü hatası açıklanmaktadır.
Apr 1 Hesaplama Yöntemi ve Örneklem Riski
High-Low Index hesaplanırken kullanılan Record High Percent, piyasadaki eğilimin yönünü belirlemek için kullanılır. Ancak bu hesaplama yöntemi, piyasadaki toplam hisse senedi sayısından bağımsız olarak yalnızca yeni zirve ve dip yapan hisselere odaklanır. Bu durum, piyasanın genelinden ziyade, o dönemde hareketli olan dar bir hisse grubunun veriyi domine etmesine neden olabilir.
Piyasa genişliği analizi yapılırken, yatırımcıların bu göstergenin hesaplanmasındaki örneklem kısıtlarını göz önünde bulundurması gerekir. Özellikle düşük hacimli piyasalarda, çok az sayıda hisse senedinin yeni zirve veya dip yapması, endeksin olduğundan daha güçlü veya zayıf görünmesine yol açabilir.
Sonuç olarak, High-Low Index tek başına bir alım-satım sinyali olarak değil, piyasa genelindeki katılımın gücünü teyit eden bir yardımcı araç olarak değerlendirilmelidir.
High-Low Endeksi nasıl hesaplanır?
İki adım, her ikisi de tek bir satıra sığar.
- Kayıtlı Yüksek Yüzdesi, tek bir seans için: evreninizdeki 52 haftanın zirvesinde kapanan hisseleri sayın, 52 haftanın dibinde kapananları sayın, zirveleri ikisinin toplamına bölün ve yüz ile çarpın.
- High-Low Endeksi: son on günlük Kayıtlı Yüksek Yüzdesi değerlerinin ortalamasını alın.
Yuvarlak sayılar bunu somutlaştırır. Bir bant doksan yeni zirve ve otuz yeni dip basar. Zirveler artı dipler yüz yirmi eder ve doksanın yüz yirmiye bölümü sıfır virgül yetmiş beştir, dolayısıyla o seans için Kayıtlı Yüksek Yüzdesi yetmiş beştir. Şimdi on seanslık okumaları alın: yetmiş beş, yetmiş, altmış beş, altmış, elli beş, elli, kırk beş, kırk, otuz beş ve otuz. Bunların toplamı beş yüz yirmi beştir ve beş yüz yirmi beşin ona bölümü elli iki virgül beştir. High-Low Endeksi, kendi Kayıtlı Yüksek Yüzdesi yetmiş beş olan bir günde elli iki virgül beşi gösterir.
Bu fark, hareketli ortalamanın yaptığı işlemdir. On günlük hafıza, bir gecede yüzden sıfıra savrulabilen bir seriyi, geç ulaşma pahasına yumuşatır. Endeks, piyasa genişliğinin iki hafta boyunca nerede olduğuna yanıt verir. Bu öğleden sonra ne olduğuna asla yanıt vermez.
Yeni 52 haftalık zirve neyi ifade eder?
Bir hisse senedi, fiyatı önceki 52 hafta içinde gördüğü tüm seviyelerin üzerine çıktığında yeni bir 52 haftalık zirve yapmış sayılır. Veri sağlayıcıları bu konuda farklı yöntemler izler: Bazıları gün içi en yüksek ve en düşük seviyeleri karşılaştırırken, diğerleri yalnızca kapanış fiyatlarını baz alır; bu iki yöntem aynı seans için farklı sonuçlar doğurur. Bu sayfadaki tüm verilerde kapanış fiyatları esas alınmıştır. Yeni 52 haftalık zirveler ve dipler listesinin tamamına buradan ulaşılabilir.
Aşağıdaki panel, 1 Nisan ile 31 Temmuz 2026 tarihleri arasında, 40 büyük ölçekli ABD hissesinden oluşan sabit bir sepet için her seansta her iki uç değeri de hesaplar. Bu büyüklükteki bir sepet, sayıların manuel olarak kontrol edilebilecek kadar küçük kalmasını sağlar; formüldeki hata da bu sayede daha sonra belirginleşir.
Her verinin arkasındaki tam SQL
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_date77 seans boyunca iki değer nadiren birlikte yükselir. Dönemin son seansı olan Jul 29 tarihinde, 40 hisseden 3 adedi 52 haftalık zirve seviyesinden, 0 adedi ise 52 haftalık dip seviyesinden kapanış yapmıştır. İlk seans olan Apr 1 tarihinde ise bu dağılım 1 zirveye karşılık 1 dip şeklindedir. Sepetteki diğer tüm hisseler kendi aralıkları içinde kalmış ve hesaplamaya dahil olmamıştır.
İyi bir High-Low Index değeri nedir?
Elli çizgisi, yeni zirveler ile yeni diplerin dengede olduğu pivot noktasıdır. Yetmiş seviyesi, yeni zirvelerin yeni diplere oranının on günlük ortalamada ikiden bire yakın olduğu geleneksel güçlü göstergedir. Otuz seviyesi ise bunun ayna görüntüsü olan geleneksel zayıf göstergedir. Endeks otuz ile yetmiş arasında seyrettiğinde, piyasadaki uç noktaların karışık olduğu mesajını verir; endeks zamanın büyük bölümünde bu aralıkta kalır.
Aşağıdaki panel, ham günlük Record High Percent verisini aynı sepet için kendi on günlük ortalamasına karşı grafiğe döker. Gecikme, tarif edilmek yerine grafik üzerinde görülebilir durumdadır.
Her verinin arkasındaki tam SQL
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_dateGrafik aralığı, Apr 15 tarihinde 100 Record High Percent değeri ve 52.5 endeks seviyesi ile açılır. Jul 29 tarihinde 100 değeri ve 64 endeks seviyesi ile kapanır. Her bir veriyi yetmiş ve otuz göstergelerine göre değerlendirin; iki çizgi arasındaki mesafeyi ise düzeltmenin maliyeti olarak okuyun: Herhangi bir günde ortalama, kendisinden önceki dokuz seansı taşımaya devam eder. On günlük bir ortalama on gün gerektirdiğinden, pencerenin ilk dokuz seansı panelin dışında tutulmuştur.
Payda piyasanın büyük kısmını görmezden gelir
Akılda tutulması gereken kısıtlama şudur. Rekor Yüksek Yüzdesi'nin paydası, yeni zirveler artı yeni diplerden oluşur, başka hiçbir şeyden değil. 52 haftalık aralığının ortasında seyreden bir hisse, ne payda ne de pay kısmında yer alır. Endeks, 3.000 hisseden 900'ünün uç değerlere ulaştığı bir seans ile 9'unun ulaştığı bir seansı birbirinden ayıramaz; her ikisini de aynı kendinden emin iki haneli rakamla yansıtır.
Durgun bir Ağustos seansında 6.000 hisseli bir borsayı hayal edin: 40 hisse yeni zirve, 20 hisse yeni dip yapıyor. Rekor Yüksek Yüzdesi 40 bölü 60, yani 66,7'dir; bu da geniş tabanlı bir yükseliş gibi görünür. Ancak bu veri, listelenen hisselerin yüzde birinden hesaplanmıştır. Diğer 5.940 hissenin hiçbir etkisi olmamıştır.
40 hisselik sepet, bunun sayılabilir bir versiyonunu ekrana getirir. Pencere içindeki her seans, kaç hissenin uç değer kaydettiğine göre bir kovaya ayrılır.
Her verinin arkasındaki tam SQL
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_denominator39 seansın bulunduğu 1 to 3 names kovasında, okumanın tamamı 40 hisseden ortalama 2 adedine dayanıyordu. Bu seanslar 100 medyan Rekor Yüksek Yüzdesi taşıyordu ve 50 çizgisinden medyan 50 puan uzaktaydı. 10 or more names seans ise, ortalama 10 hisse ile 1 adedinde, 70 medyan değerini taşıyordu ve orta noktadan 20 puan uzaktaydı.
Aritmetik, sığ bir seansın kaydedebileceği değerleri sınırlar. Uç noktada üç hisse olduğunda, olası tek okumalar 0, 33,3, 66,7 ve 100'dür. İki hisse olduğunda ise sadece 0, 50 ve 100 mümkündür. İki zirve ve bir dip üzerine kurulu 66,7'lik bir okuma, örnekleminin destekleyemeyeceği bir ondalık basamak taşır. Bunu düzeltmenin yolu bellidir: Endeksi asla tek başına okumayın, her zaman endeksin yanındaki ham zirve ve dip sayılarını inceleyin.
Piyasa genişliği: High-Low Index ve yükselen/düşen hisse oranı
Her iki ölçüm de kaç hissenin katılımcı olduğunu sorgular. Ancak bu sorgulamayı farklı vadeler üzerinden yaparlar. Yükselen/düşen hisse oranı (advance/decline), bir önceki güne göre değer kazanan veya kaybeden her bir hisseyi sayar. Paydası tüm evreni kapsar ve tek bir günü tanımlar. High-Low Index ise yalnızca elli iki haftalık uç değerlerdeki hisseleri sayar. Paydası küçüktür ve fiyatların tam bir yıllık geçmişe göre nerede konumlandığını gösterir. Bir piyasa seansı genelinde fiyatlar yükselirken, elli iki haftalık zirvesine yakın çok az sayıda hisse bulunabilir.
Aşağıdaki panel, her iki ölçümü de aynı on seans üzerinden ve aynı sepet üzerinde yumuşatarak tek bir ölçekte birleştirir.
Her verinin arkasındaki tam SQL
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_dateBu ikili, çizilen aralığa High-Low Index için 52.5, on günlük yükselen hisse oranı için 52.8 seviyesinden Apr 15 tarihinde başlar ve Jul 29 tarihinde 64 ve 52.5 seviyeleriyle, toplam 68 seanslık bir süreçte tamamlanır. Yükselen hisse oranı dar bir bantta hareket eder. Normal bir seansta sepetin yaklaşık yarısı günü yükselişle kapatır ve bu değerlerin on günlük ortalaması çizgiyi ölçeğin orta noktasına yakın tutar. High-Low Index'in böyle bir çıpası yoktur. Sepetteki hiçbir hisse on seans boyunca elli iki haftalık dip seviyesini görmediğinde, her bir günlük okuma yüz olur ve ortalama da yüz değerinde kalır.
Piyasa genişliği, yanındaki katılım ölçümleriyle birlikte daha iyi okunur. Göreceli hacim, bir hissenin bugün kendi normuna kıyasla alışılmadık derecede yoğun işlem görüp görmediğini sorgular. Haftanın en çok hareket eden hisseleri, hangi hisselerin fiilen fiyat değişimi kaydettiğini gösterirken, bu haftanın sıra dışı hacimli hisseleri işlem yoğunluğunun nerede toplandığını ortaya koyar.
High-Low Endeksi SSS
High-Low Endeksi'nin 70'in üzerinde olması ne anlama gelir?
Bu, son on işlem gününün ortalamasında, 52 haftalık yeni zirvelerin 52 haftalık yeni diplere oranının ikiden bire üstün olduğu anlamına gelir. Bu, geleneksel güçlü piyasa göstergesidir. Bu veri, kaç hissenin uç noktalara ulaştığı hakkında bilgi vermez; bu nedenle yanında mutlaka kontrol edilmesi gereken sayı budur.
Record High Percent ile High-Low Endeksi arasındaki fark nedir?
Record High Percent tek bir seansa ait veridir: yeni zirveler bölü yeni zirveler artı yeni dipler, çarpı yüz. High-Low Endeksi ise bu verinin on günlük basit hareketli ortalamasıdır. Biri bugünü tanımlarken, diğeri son iki haftayı tanımlar.
High-Low Endeksi 0 veya 100 olabilir mi?
Evet. Eğer evrendeki hiçbir hisse on gün boyunca 52 haftalık yeni bir dip yapmazsa, her günlük okuma yüz olur ve ortalama da yüz çıkar. Hiçbir hisse ne yeni bir zirve ne de yeni bir dip yaptığında, kesrin paydası sıfır olur ve o seans için tanımlanmış bir değer oluşmaz.
High-Low Endeksi, yükselen/düşen hisse genişliği (advance/decline breadth) ile aynı mıdır?
Hayır. Yükselen/düşen hisse genişliği tüm evrene bölünür ve tek bir günün yönünü tanımlar. High-Low Endeksi ise 52 haftalık uç noktalarda bulunan küçük hisse grubuna bölünür ve bir yıllık fiyat hareketlerine göre konumu tanımlar.
High-Low Endeksi paydasında genellikle kaç hisse bulunur?
Nisan ile Temmuz 2026 arasında ölçülen kırk isimlik sepette, 1 to 3 names grubundaki seanslar paydada ortalama 2 isim içermiştir. Borsa genelindeki sayılar mutlak değer olarak daha büyüktür ancak tüm listelemelerin küçük bir dilimini oluşturmaya devam ederler; bu nedenle ham sayılar ekranda endeksin yanında yer almalıdır.
Bu sayfadaki her sayı, kapanış fiyatları üzerinden oluşturulmuş, sürümlenmiş bir sorgudur. Arkasındaki SQL kodunu okumak için herhangi bir paneli açabilir veya Strasmore terminalinde kendi sepetiniz üzerinde aynı genişlik serisini yeniden oluşturabilirsiniz.