52-সপ্তাহের সর্বনিম্নের কাছে কম P/E স্টক
কম P/E ও 52-সপ্তাহের সর্বনিম্নের কাছাকাছি স্টকের সঠিক screen, সর্বনিম্ন থেকে দূরত্বের ranking এবং পরে নতুন low হওয়ার নিরপেক্ষ data দেখুন।
কম P/E-যুক্ত এবং 52-সপ্তাহের সর্বনিম্ন দামের কাছাকাছি থাকা স্টকগুলো দুটি সম্পূর্ণ ভিন্ন স্ক্রিনের মিলনস্থলে থাকে: একটি হলো trailing earnings-এর তুলনায় কম multiple, আরেকটি হলো স্টকটির নিজস্ব এক বছরের দামের পরিসরের নিচের প্রান্তের কাছাকাছি অবস্থান। নিচের স্ক্রিনে উভয় শর্তই কপি করা যায় এমন সংখ্যায় দেওয়া হয়েছে, বেঁচে থাকা স্টকগুলোকে তাদের সর্বনিম্ন দামের কাছাকাছি অবস্থান অনুযায়ী সাজানো হয়েছে, এবং প্রতিটি প্যানেলের নিচে query দেখানো হয়েছে। শুরুতেই একটি সতর্কতা: এভাবে তৈরি তালিকায় bargain-এর মতোই প্রায়ই falling knife-ও আসে। পরের একটি section-এ এর arithmetic ব্যাখ্যা করা হয়েছে।
52-সপ্তাহের সর্বনিম্ন দামের কাছাকাছি বলতে কী বোঝায়
52-সপ্তাহের সর্বনিম্ন দাম হলো trailing এক বছরে কোনো স্টক যে সর্বনিম্ন দামে trade হয়েছে। ওই সর্বনিম্ন দামের থেকে দূরত্বকে percentage-এ প্রকাশ করা হয়: সর্বশেষ close ভাগ 52-সপ্তাহের সর্বনিম্ন দাম, বিয়োগ 1। কোনো স্টকের সর্বশেষ close যদি 55 হয় এবং 52-সপ্তাহের সর্বনিম্ন দাম হয় 50, তাহলে সেটি তার সর্বনিম্ন দামের 10% ওপরে রয়েছে। এই arithmetic-ই পুরো ranking-এর ভিত্তি। আমাদের 52-সপ্তাহের সর্বোচ্চ ও সর্বনিম্ন দাম guide-এ এই price band আরও বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।
P/E ratio, অর্থাৎ price ভাগ trailing twelve-month earnings per share, আসে daily ratios table stocks_ratios থেকে। এটিই আমাদের সর্বোচ্চ dividend yield-যুক্ত স্টক screen-এর উৎস।
Price band আসে stocks_daily_aggs থেকে। এখানে প্রতি session-এ প্রতি স্টকের জন্য একটি করে row রয়েছে।
চারটি dial এই screen নির্ধারণ করে। এগুলো লিখে নির্দিষ্ট না করা পর্যন্ত প্রতিটিই arbitrary:
- 52-সপ্তাহের সর্বনিম্ন দামের থেকে দূরত্ব 10% বা তার কম
- trailing P/E শূন্যের বেশি এবং 15 বা তার কম
- market cap $10 billion বা তার বেশি
- average daily volume 1,000,000 shares বা তার বেশি
শেষের দুটি শর্ত তালিকাটিকে এমন নামের মধ্যে সীমাবদ্ধ রাখে, যেগুলোতে buy ও sell—দুই দিকেই বাস্তব market রয়েছে। $40 million-এর কোনো কোম্পানি দিনে 20,000 shares trade করলে তার multiple যেকোনো রকম হতে পারে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH ratios AS
(
SELECT
ticker,
argMax(price_to_earnings, date) AS pe,
argMax(market_cap, date) AS mcap,
argMax(average_volume, date) AS adv
FROM global_markets.stocks_ratios
WHERE date >= today() - 14
AND ticker NOT IN ('SPCX')
GROUP BY ticker
),
band AS
(
SELECT
ticker,
min(low) AS low_52w,
argMax(close, date) AS last_close
FROM global_markets.stocks_daily_aggs
WHERE date >= today() - 372
AND ticker NOT IN ('SPCX')
GROUP BY ticker
)
SELECT
b.ticker AS ticker,
round(toFloat64(b.last_close) / toFloat64(b.low_52w) * 100 - 100, 1) AS pct_above_low,
round(r.pe, 1) AS pe_ratio
FROM band AS b
INNER JOIN ratios AS r ON r.ticker = b.ticker
WHERE r.mcap >= 10000000000
AND r.adv >= 1000000
AND r.pe > 0
AND r.pe <= 15
AND b.low_52w > 0
AND toFloat64(b.last_close) / toFloat64(b.low_52w) <= 1.10
ORDER BY pct_above_low ASC, b.ticker ASC
LIMIT 15এই panel-এ ওই dial-গুলোর শর্তে সর্বনিম্ন দামের সবচেয়ে কাছাকাছি 6টি নাম দেখানো হয়েছে। সর্বোচ্চ 15টি row রাখা হয়েছে। VICI নিজের সর্বনিম্ন দামের সবচেয়ে কাছে রয়েছে। গত এক বছরে সেটি যে সর্বনিম্ন দাম ছুঁয়েছে, তার চেয়ে 2.3% ওপরে রয়েছে এবং trailing multiple হলো 10.5। Panel-এর অপর প্রান্তে BRK.B তার সর্বনিম্ন দামের 9.7% ওপরে রয়েছে।
তালিকাটি কীভাবে rank করা হয়
Sorting হলো এমন একটি ধাপ, যা অধিকাংশ screen বাদ দেয়। P/E অনুযায়ী ranking করলে সবচেয়ে সস্তা দেখানো multiple ওপরের দিকে আসে, কিন্তু price range-এর কোথায় অবস্থান করছে তা আড়ালে থাকে। সর্বনিম্ন দামের থেকে দূরত্ব অনুযায়ী ranking করলে নতুন সর্বনিম্ন দামের সবচেয়ে কাছের নামগুলো ওপরের দিকে আসে, কিন্তু সেগুলোর valuation কত তা আড়ালে থাকে। এই panel-এ distance ascending ক্রমে সাজানো হয়েছে এবং পরের column-এ multiple দেওয়া হয়েছে। ফলে একই row-তে দুই তথ্যই থাকে। সমান ফল হলে alphabetical order ব্যবহার করা হয়েছে। কয়েকটি নাম একই decimal-এ round হলে এই detail গুরুত্বপূর্ণ।
এটি পুনরুৎপাদন করতে চারটি input লাগে: পুরো trailing এক বছর জুড়ে daily close series, একটি trailing EPS figure, market cap হিসাবের জন্য share count, এবং average volume। এরপরের সবকিছু subtraction ও division।
Dial কোথায় রাখা হয়েছে তার ওপর উত্তীর্ণ নামের সংখ্যা নির্ভর করে
একটি dial পরিবর্তন করলেই তালিকার আকার বদলে যায়। নিচের panel-এ market cap ও liquidity-এর minimum অপরিবর্তিত রাখা হয়েছে। Distance band 5% থেকে 30% পর্যন্ত পরিবর্তন করে, দুইটি P/E ceiling-এ qualifying নামের সংখ্যা গোনা হয়েছে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
WITH ratios AS
(
SELECT
ticker,
argMax(price_to_earnings, date) AS pe,
argMax(market_cap, date) AS mcap,
argMax(average_volume, date) AS adv
FROM global_markets.stocks_ratios
WHERE date >= today() - 14
AND ticker NOT IN ('SPCX')
GROUP BY ticker
),
band AS
(
SELECT
ticker,
min(low) AS low_52w,
argMax(close, date) AS last_close
FROM global_markets.stocks_daily_aggs
WHERE date >= today() - 372
AND ticker NOT IN ('SPCX')
GROUP BY ticker
),
universe AS
(
SELECT
b.ticker AS ticker,
toFloat64(b.last_close) / toFloat64(b.low_52w) * 100 - 100 AS pct_above_low,
r.pe AS pe
FROM band AS b
INNER JOIN ratios AS r ON r.ticker = b.ticker
WHERE r.mcap >= 10000000000
AND r.adv >= 1000000
AND r.pe > 0
AND b.low_52w > 0
)
SELECT
concat('within ', toString(cutoff), '%') AS distance_band,
countIf(pct_above_low <= cutoff AND pe <= 15) AS names_pe_under_15,
countIf(pct_above_low <= cutoff AND pe <= 25) AS names_pe_under_25
FROM
(
SELECT
pct_above_low,
pe,
arrayJoin([5, 10, 15, 20, 25, 30]) AS cutoff
FROM universe
)
GROUP BY cutoff
ORDER BY cutoffপ্রথম panel-এর dial অনুযায়ী, 10% band এবং 15 ceiling-এ মোট 7টি large-cap স্টক qualify করে। Band 5%-এ নামিয়ে আনলে 1টি থাকে। এটি 30%-এ বাড়ালে সংখ্যা 43-এ পৌঁছায়। একই width-এ ceiling 25 করলে সংখ্যা হয় 137। এখানে কোনো setting-ই objectively সঠিক নয়। এগুলো কেবল dial। Screen প্রকাশের সৎ পদ্ধতি হলো dial কোথায় রাখা হয়েছিল তা জানানো।
52-সপ্তাহের সর্বনিম্ন দাম একটি চলমান floor
সর্বনিম্ন দাম নিজেই পরিবর্তিত হয়। এটি একটি rolling measurement। তাই calendar এগোলে window থেকে পুরনো সর্বনিম্ন দাম বাদ পড়ে। এমন দিনে floor ওপরে উঠতে পারে, যেদিন স্টকের দামে আদৌ কোনো পরিবর্তন হয়নি। মাসে মাসে একটি নাম track করলে বিষয়টি স্পষ্ট হয়। নিচের panel-এ household large-cap স্টক KO-কে তার trailing twelve months-এর সর্বনিম্ন দামের সঙ্গে তুলনা করা হয়েছে।
প্রতিটি সংখ্যার পেছনের সঠিক SQL
SELECT
formatDateTime(m, '%Y-%m') AS month,
round(toFloat64(month_close), 2) AS close_price,
round(toFloat64(trailing_low), 2) AS trailing_12m_low,
round(toFloat64(month_close) / toFloat64(trailing_low) * 100 - 100, 1) AS pct_above_low
FROM
(
SELECT
m,
month_close,
min(month_low) OVER (ORDER BY m ASC ROWS BETWEEN 11 PRECEDING AND CURRENT ROW) AS trailing_low
FROM
(
SELECT
toStartOfMonth(date) AS m,
argMax(close, date) AS month_close,
min(low) AS month_low
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'KO'
AND date >= today() - 1100
GROUP BY m
)
)
WHERE m >= toStartOfMonth(today() - 400)
ORDER BY m2026-08 তারিখে KO-এর close ছিল $87.71। একই সময়ে trailing twelve-month low ছিল $65.35। ফলে distance ছিল 34.2%। এই দুই price line-এর ব্যবধানই এই screen পরিমাপ করে। Low line ওপরে উঠলেও close line একই থাকলে, স্টকের দামে কোনো পরিবর্তন না ঘটেই measured distance কমে যায়।
কেন এই screen-এ falling knife আসে
এর পেছনের mechanism arithmetic-ভিত্তিক। P/E-এর E হলো trailing earnings, যা কোম্পানি report প্রকাশের সময় বছরে চারবার update হয়। P update হয় market খোলা থাকা প্রতিটি second-এ। একটি quarter জুড়ে price কমতে থাকলে, পরবর্তী report পর্যন্ত earnings figure অপরিবর্তিত থাকে। ফলে price কমার সঙ্গে সঙ্গে week after week lower multiple দেখা যায়। শেষবার report করা earnings figure থেকে price যত দূরে নেমে যায়, সেই মুহূর্তে multiple-টিকেই সবচেয়ে সস্তা মনে হয়। পরবর্তী report-এ earnings কমে এলে, আরও কম price-এ multiple আবার বেড়ে যায়। অর্থাৎ স্টকটি কখনও সত্যিই সস্তা ছিল না। এই pattern-এর নাম value trap।
Cyclical কোম্পানিগুলোতে একই measurement উল্টো ফল দেখায়। Automaker বা homebuilder-এর trailing P/E সাধারণত earnings cycle-এর peak-এ সবচেয়ে কম থাকে। তখন trailing EPS উচ্চ পর্যায়ে থাকে। Cycle-এর trough-এ তাদের P/E সবচেয়ে বেশি দেখা যায়।
এই pattern পরিমাপ করতে হলে অতীতের কোনো তারিখ অনুযায়ী screen পুনর্গঠন করতে হবে। এরপর screen-এ উত্তীর্ণ প্রতিটি নামকে follow করতে হবে। এর জন্য প্রতিটি ticker-এর সেই অতীত তারিখে প্রযোজ্য trailing multiple দরকার, শুধু সর্বশেষ multiple নয়। ওপরের panel-গুলোর পেছনে থাকা stocks_ratios row-গুলো প্রতিটি ticker-এর সর্বশেষ তারিখে পড়া হয়েছে। তাই এই page এমন কোনো follow-through number দিচ্ছে না, যার query দেখানো সম্ভব নয়। যেকোনো ক্ষেত্রেই একটি starting date থেকে তৈরি একটি cohort মাত্র একটি observation। অন্য মাসে শুরু করলে numbers বদলে যাবে। তালিকাটি ভবিষ্যতে কোনো price কী করবে—সে বিষয়ে কোনো দাবি করে না।
কম P/E কী কী তথ্য বাদ দেয়
- কোন earnings? Trailing EPS-এর মধ্যে one-time items, asset sales এবং legal settlements থাকতে পারে। একটি অস্বাভাবিকভাবে বড় quarter-এর earnings cash চলে যাওয়ার পরও এক বছর ধরে multiple কমিয়ে রাখতে পারে।
- Sector context। Banks, insurers, automakers এবং refiners সাধারণত software কোম্পানির তুলনায় structurally lower multiple-এ trade করে। সব sector-এর ওপর একই ceiling প্রয়োগ করলে তালিকায় একই কয়েকটি industry বারবার আসে।
- Balance sheet। P/E debt বিবেচনা করে না। একই multiple-এ trade করা কিন্তু leverage-এ বড় পার্থক্য থাকা দুটি কোম্পানি একই দামে নেই।
- Losses। Negative earnings থাকা কোম্পানির meaningful P/E নেই। তাই তারা এখানে কখনও দেখা যায় না। তালিকায় না থাকা কোনো চূড়ান্ত রায় নয়।
এই তালিকার পাশে দুটি কাছাকাছি তালিকা পড়লে ভালোভাবে তুলনা করা যায়। এই মাসের সবচেয়ে বড় stock movers দেখায় কোন নামগুলো গত মাসে সবচেয়ে বেশি এগিয়েছে বা পিছিয়েছে। আর সর্বনিম্ন volatility-যুক্ত স্টক দেখায় বিপরীত বৈশিষ্ট্যের নামগুলো।
Data notes এবং সংজ্ঞা
- Price আসে
stocks_daily_aggsথেকে। প্রতি session-এ প্রতি স্টকের জন্য একটি row রয়েছে। 52-সপ্তাহের সর্বনিম্ন দাম হলো trailing 372 calendar days-এ daily low column-এর minimum। - Multiple, market cap এবং average volume আসে
stocks_ratiosথেকে। প্রতিটি ticker-এর জন্য সর্বশেষ row নেওয়া হয়েছে। - এই window-এর মধ্যে split বা বড় special distribution হলে raw price band পরিবর্তিত হয়। তাই trailing year-এ এমন ঘটনা ঘটেছে—এমন কোনো নাম যাচাই করা উচিত।
- এই screen positive trailing multiple চায়। তাই loss-making কোম্পানি এতে কখনও দেখা যায় না।
FAQ
কোনো স্টক তার 52-সপ্তাহের সর্বনিম্ন দামের কাছাকাছি থাকলে তার অর্থ কী?
এর অর্থ হলো, বর্তমান price গত এক বছরে স্টকটির trade করা সর্বনিম্ন দামের কাছাকাছি রয়েছে। Distance to the low হলো last close ভাগ 52-সপ্তাহের সর্বনিম্ন দাম, বিয়োগ 1; এটিকে percentage হিসেবে পড়া হয়।
কত P/E-কে low বলা হয়?
এর কোনো fixed line নেই। Screen-গুলোতে সাধারণত trailing multiple 15-এ cap করা হয়। আরও কঠোর screen-এর জন্য 10 ব্যবহার করা হয়। Industry ভেদে multiple-এর যথেষ্ট পার্থক্য থাকে। তাই পুরো market-এর ওপর একটি ceiling প্রয়োগ করলে তালিকায় একই কয়েকটি sector বারবার আসে।
52-সপ্তাহের সর্বনিম্ন দামের কাছাকাছি থাকা low P/E stock কি ভালো buy?
কোনো screen এই প্রশ্নের উত্তর দেয় না। এই page-ও দেয় না। দুটি শর্তই অতীতের তথ্য বর্ণনা করে: ইতিমধ্যে report করা earnings-এর প্রতি dollar-এর জন্য market কত price দিচ্ছে, এবং স্টকটির নিজস্ব এক বছরের range-এর মধ্যে price কোথায় রয়েছে। পরবর্তীতে কী হবে, তার বর্ণনা কোনোটিই দেয় না।
Value trap কী?
Value trap হলো এমন একটি stock, যেটি trailing multiple অনুযায়ী সস্তা দেখায় কিন্তু পতন অব্যাহত থাকে। Earnings per share quarterly update হয়, আর price continuously update হয়। তাই fixed trailing E-এর বিপরীতে price কমতে থাকলে multiple ধারাবাহিকভাবে কম দেখায়। পরবর্তী report-এ lower price থাকা সত্ত্বেও সেই multiple আবার বেড়ে যেতে পারে।
এখানে প্রতিটি panel-এর সঙ্গে সেটি তৈরি করা query দেওয়া আছে। কোনো একটি খুলে P/E ceiling বা distance band পরিবর্তন করুন। এরপর Strasmore terminal-এ আপনার নির্ধারিত dial অনুযায়ী তালিকাটি নিজে পুনর্গঠন করুন।