DSE strategy research by fintezo

Data through 2026-11-05

Testing stock-picking rules on the Dhaka Stock Exchange, in the open

96 rule variants were backtested on 2013 to 2020 data, one per family was chosen by a fixed rule, and the choice was then judged on 2021 onward. Two rules are now tracked forward on paper with frozen settings.

Hypothetical research results. Backtests and paper trades are not real trading. Not investment advice.

Forward paper trade

Rules frozen on 2026-11-06. Tk 1 crore on paper per rule, 0.40% cost per side, fills at the next session close, quarterly rebalancing. NAV is compared with DSEX from the inception signal.

lowvt_Q30

primary

Lowest 30 by 60-day median value traded, quarterly. Found post hoc in the combined_Q30 decomposition.

Pending first entry on 2026-11-08. Signal formed at the 2026-11-05 close; no fills yet, so there is no NAV to chart.

  • Next rebalance signal: 2026-12-31 (expected; entry at the next session close)
  • Holdings with no trade for 20+ sessions: 0
  • 30 names, equal weight at each rebalance

Research record only. These are the names a frozen rule would hold on paper; they are a record of the rule, not advice, and no orders are placed. Hypothetical research results. Backtests and paper trades are not real trading. Not investment advice.

Holdings (30)
CodeTarget weightSignal close, Tk
ACFL3.33%22.20
ACTIVEFINE3.33%4.60
ADVENT3.33%13.80
ALIF3.33%4.30
DACCADYE3.33%15.00
DESCO3.33%24.10
FAMILYTEX3.33%2.10
FUWANGFOOD3.33%8.20
GENNEXT3.33%2.40
HAMI3.33%143.00
INTECH3.33%20.40
ISLAMIBANK3.33%21.80
ISLAMICFIN3.33%9.40
JMISMDL3.33%127.00
KPPL3.33%12.20
LIBRAINFU3.33%539.20
MEGCONMILK3.33%27.80
MERCANBANK3.33%6.40
NATLIFEINS3.33%90.70
ONEBANKPLC3.33%6.80
PDL3.33%5.20
PREMIERBAN3.33%5.50
PRIMELIFE3.33%34.30
RENWICKJA3.33%749.50
SAFKOSPINN3.33%20.50
SALAMCRST3.33%11.60
SINGERBD3.33%62.20
SSSTEEL3.33%5.00
WMSHIPYARD3.33%8.00
ZEALBANGLA3.33%160.10

combined_Q30

reference

Top 30 by a five-factor combined score, quarterly. Pre-registered selection of the factors family.

Pending first entry on 2026-11-08. Signal formed at the 2026-11-05 close; no fills yet, so there is no NAV to chart.

  • Next rebalance signal: 2026-12-31 (expected; entry at the next session close)
  • Holdings with no trade for 20+ sessions: 0
  • 30 names, equal weight at each rebalance

Research record only. These are the names a frozen rule would hold on paper; they are a record of the rule, not advice, and no orders are placed. Hypothetical research results. Backtests and paper trades are not real trading. Not investment advice.

Holdings (30)
CodeTarget weightSignal close, Tk
ACFL3.33%22.20
ACTIVEFINE3.33%4.60
ALIF3.33%4.30
APEXTANRY3.33%73.00
AZIZPIPES3.33%96.60
BDLAMPS3.33%216.30
DSHGARME3.33%118.70
DULAMIACOT3.33%190.70
FAMILYTEX3.33%2.10
GENNEXT3.33%2.40
HAMI3.33%143.00
INTECH3.33%20.40
ISLAMICFIN3.33%9.40
KPPL3.33%12.20
LRBDL3.33%11.70
MEGCONMILK3.33%27.80
MEGHNAPET3.33%71.40
PDL3.33%5.20
PLFSL3.33%1.70
PRIMELIFE3.33%34.30
RAHIMTEXT3.33%163.10
RINGSHINE3.33%3.50
SAFKOSPINN3.33%20.50
SAIFPOWER3.33%6.60
SHYAMPSUG3.33%298.40
SINGERBD3.33%62.20
SSSTEEL3.33%5.00
SUNLIFEINS3.33%48.00
TUNGHAI3.33%4.70
ZEALBANGLA3.33%160.10

Research summary

No strategy passed the strict out-of-sample test.

0Holds
3Promising
5Fails

Verdicts of the 8 pre-registered selections, one per family, judged on 2021+ data. Applying the same rule to every one of the 96 rows gives 9 holds, 21 promising and 66 fails, but a row that was not selected in-sample is not a test.

The Deflated Sharpe Ratio, which corrects for the number of variants tried (84, or 96 with the value study), is at most 0.057 for any selection against a 0.95 bar. No selection clears it, and none clears the Harvey-Liu-Zhu t > 3 hurdle in-sample.

Key strategy curves

Monthly, net of costs, on the point-in-time-safe universe. The shaded area is the out-of-sample period. lowvt_Q30 was found after the out-of-sample data had been seen, so its line there is not an independent test.

StrategyIS excessIS tOOS excessOOS tOOS ex-floorProtocol verdict
combined_Q30paper trade (reference)+16.7%+2.61+12.7%+2.08+10.5%Promisingon the default universe
lowvt_Q30paper trade (primary)+2.3%+0.73+13.5%+2.11+9.7%Not a testfound post hoc
beta_M50low-risk selection+7.6%+1.70+4.5%+1.51+2.6%Promisingon the default universe
dy_T30_Qvalue selection+9.7%+2.32+2.0%+0.79+2.6%Failson pit_safe
EW top-100baseline−8.0%−2.74−4.5%−0.74−9.5%Baseline

Excess = strategy CAGR minus DSEX CAGR per year; t = Newey-West t of monthly excess. IS = 2013-01-27 to 2020-12-31, OOS = 2021-01-01 onward. Ex-floor drops July 2022 to January 2024. These pit_safe figures are reruns made after selection; the protocol verdict is the one recorded when each family's selection was judged. combined_Q30's pit_safe rerun clears t 2, but its official test on the default universe gave +10.7%, t 1.89.

Year-end values (cumulative return since Jan 2013)
Yearcombined_Q30lowvt_Q30beta_M50dy_T30_QEW top-100DSEX
2013+50.5%+20.4%+16.4%+44.8%−1.5%+5.2%
2014+76.2%+13.0%+23.9%+45.4%−9.4%+19.9%
2015+84.9%+12.6%+26.2%+36.2%−22.0%+14.1%
2016+100.5%+37.5%+48.4%+78.4%−17.0%+24.2%
2017+146.4%+60.3%+83.1%+135.1%−7.5%+54.0%
2018+238.5%+58.6%+117.1%+118.8%−20.7%+32.8%
2019+260.7%+25.9%+103.2%+105.3%−40.2%+9.8%
2020+328.1%+58.1%+131.6%+168.0%−28.9%+33.2%
2021+474.3%+125.6%+194.0%+251.8%−18.1%+66.6%
2022+516.3%+168.4%+173.1%+235.9%−22.7%+53.0%
2023+680.5%+241.5%+212.9%+244.2%−17.2%+54.0%
2024+523.5%+160.5%+176.0%+201.7%−42.7%+28.6%
2025+565.7%+170.0%+156.6%+163.2%−48.1%+20.0%
2026+760.6%+230.7%+200.0%+201.8%−45.5%+33.5%

All 96 trials

84 price and volume variants in seven families plus 12 value variants. Within each family the variant with the highest in-sample t is the selection; only that row is an out-of-sample test. The rule column applies the same verdict rule to every row for reference.

Source
calendarmoy_is6_top100 selected+10.2%+2.08+2.8%+0.57Failsdefaultstrategy_calendar.md
calendareidpost5_top100 −1.9%−0.55−1.2%−0.42Failsdefaultstrategy_calendar.md
calendarholspan_top100 −2.3%−0.61+0.3%−0.13Failsdefaultstrategy_calendar.md
calendareidpre5_top100 −4.0%−0.86+1.6%+0.11Failsdefaultstrategy_calendar.md
calendarprehol2_top100 −3.8%−0.87−0.6%−0.27Failsdefaultstrategy_calendar.md
calendarprehol2_top30 −4.2%−0.93−0.8%−0.29Failsdefaultstrategy_calendar.md
calendartom13_top100 −5.0%−1.17+0.2%−0.05Failsdefaultstrategy_calendar.md
calendartom13_top30 −6.1%−1.36−0.5%−0.14Failsdefaultstrategy_calendar.md
calendartom23_top100 −6.9%−1.57+4.0%+0.53Failsdefaultstrategy_calendar.md
calendartom23_top30 −7.7%−1.72+2.6%+0.29Failsdefaultstrategy_calendar.md
calendarmoy_halloween_top100 −9.9%−2.24−4.5%−0.97Failsdefaultstrategy_calendar.md
calendardow_wedthu_top100 −30.4%−6.54−28.5%−6.12Failsdefaultstrategy_calendar.md
eventsbreakout52_H20_top100 selected−0.8%−0.31−9.2%−1.57Failsdefaultstrategy_events.md
eventsbreakout52_H20_all −1.9%−0.50−8.3%−1.45Failsdefaultstrategy_events.md
eventslowerlock_H20_top100 −3.6%−0.91−3.4%−0.72Failsdefaultstrategy_events.md
eventsbreakout52_H5_top100 −3.9%−0.91−5.2%−0.99Failsdefaultstrategy_events.md
eventslowerlock_H20_all −3.9%−0.98−4.9%−0.93Failsdefaultstrategy_events.md
eventslowerlock_H5_all −5.3%−1.17−2.9%−0.59Failsdefaultstrategy_events.md
eventsbreakout52_H5_all −5.5%−1.18−6.5%−1.29Failsdefaultstrategy_events.md
eventsbonus_ex_H5_top100 −5.9%−1.26−1.7%−0.46Failsdefaultstrategy_events.md
eventslowerlock_H5_top100 −6.0%−1.31−2.6%−0.57Failsdefaultstrategy_events.md
eventsbonus_ex_H5_all −6.5%−1.36−2.0%−0.52Failsdefaultstrategy_events.md
eventsbonus_ex_H20_top100 −7.1%−1.55−2.1%−0.55Failsdefaultstrategy_events.md
eventsbonus_ex_H20_all −7.5%−1.69−2.5%−0.62Failsdefaultstrategy_events.md
factorscombined_Q30 selected+15.7%+2.69+10.7%+1.89Promisingdefaultstrategy_factors.md
factorsamihud_Q30 +10.9%+2.39+9.7%+1.83Promisingdefaultstrategy_factors.md
factorslowvol_mom_M20 +9.7%+2.33+7.1%+2.16Holdsdefaultstrategy_factors.md
factorsmom_Q30 +14.1%+2.32+2.2%+0.52Failsdefaultstrategy_factors.md
factorslowvol_mom_Q30 +7.5%+2.22+7.0%+2.18Holdsdefaultstrategy_factors.md
factorsmom_M20 +13.4%+2.00−1.4%−0.17Failsdefaultstrategy_factors.md
factorscombined_M20 +10.3%+1.92+4.0%+0.85Failsdefaultstrategy_factors.md
factorsamihud_M20 +6.5%+1.48+10.3%+1.57Promisingdefaultstrategy_factors.md
factorsrev_Q30 +4.8%+1.01−3.9%−0.46Failsdefaultstrategy_factors.md
factorsrev_M20 −0.6%+0.17−6.3%−0.68Failsdefaultstrategy_factors.md
factorslowvol_Q30 −0.7%−0.35+6.1%+2.26Holdsdefaultstrategy_factors.md
factorslowvol_M20 −2.8%−0.97+3.0%+1.00Promisingdefaultstrategy_factors.md
lowriskbeta_M50 selected+8.1%+2.04+4.9%+1.80Promisingdefaultstrategy_lowrisk.md
lowriskbeta_Q30 +9.5%+1.99+3.3%+1.06Promisingdefaultstrategy_lowrisk.md
lowriskbeta_M30 +8.4%+1.83+3.2%+1.03Promisingdefaultstrategy_lowrisk.md
lowriskmax_Q30 +1.1%+0.30+5.0%+2.47Holdsdefaultstrategy_lowrisk.md
lowrisktvol_M50 +0.0%−0.05+6.0%+2.57Holdsdefaultstrategy_lowrisk.md
lowrisktvol_M30 +0.1%−0.07+4.5%+1.78Promisingdefaultstrategy_lowrisk.md
lowriskivol_M50 −0.2%−0.10+4.7%+2.34Holdsdefaultstrategy_lowrisk.md
lowriskmax_M50 −0.4%−0.16+3.9%+1.57Promisingdefaultstrategy_lowrisk.md
lowrisktvol_Q30 −0.7%−0.35+6.1%+2.26Holdsdefaultstrategy_lowrisk.md
lowriskmax_M30 −1.2%−0.42+1.4%+0.50Failsdefaultstrategy_lowrisk.md
lowriskivol_M30 −2.8%−1.14+3.5%+1.37Promisingdefaultstrategy_lowrisk.md
lowriskivol_Q30 −4.0%−1.71+4.8%+2.05Holdsdefaultstrategy_lowrisk.md
momentumm12_T30_M selected+12.6%+2.14−1.6%−0.22Failsdefaultstrategy_momentum.md
momentumm6_T30_Q +9.1%+1.50−0.3%+0.11Failsdefaultstrategy_momentum.md
momentumhi52_Q5_M +5.0%+1.22+7.8%+1.67Promisingdefaultstrategy_momentum.md
momentumhi52_T30_M +2.9%+0.77+8.6%+1.65Promisingdefaultstrategy_momentum.md
momentumhi52_T30_Q +2.6%+0.66+3.9%+0.94Failsdefaultstrategy_momentum.md
momentumm3_T30_M +1.1%+0.30−3.4%−0.43Failsdefaultstrategy_momentum.md
momentumm6_T30_M +0.9%+0.24−2.2%−0.16Failsdefaultstrategy_momentum.md
momentumm6_Q5_M +0.9%+0.23−1.9%−0.15Failsdefaultstrategy_momentum.md
momentumm12_T30_M_MS +2.1%+0.22+2.1%+0.41Failsdefaultstrategy_momentum.md
momentumhi52_T30_M_MS +0.1%−0.15+8.6%+1.43Promisingdefaultstrategy_momentum.md
momentumm3_T30_M_MS −0.8%−0.30−0.1%−0.00Failsdefaultstrategy_momentum.md
momentumm6_T30_M_MS −0.5%−0.30+1.2%+0.28Failsdefaultstrategy_momentum.md
reversal industryind12_K3_Q selected+12.9%+2.05+7.3%+1.15Promisingdefaultstrategy_reversal_industry.md
reversal industryind12_K2_M +13.5%+1.65+4.6%+0.74Failsdefaultstrategy_reversal_industry.md
reversal industryind12_K3_M +8.5%+1.33−0.9%+0.07Failsdefaultstrategy_reversal_industry.md
reversal industryind6_K3_Q +3.6%+0.76−4.9%−0.75Failsdefaultstrategy_reversal_industry.md
reversal industryind6_K3_M +1.3%+0.41−8.1%−1.15Failsdefaultstrategy_reversal_industry.md
reversal industryrev1m_M20 −1.1%+0.05−6.1%−0.65Failsdefaultstrategy_reversal_industry.md
reversal industryind6_K2_M −3.4%−0.37−13.8%−1.69Failsdefaultstrategy_reversal_industry.md
reversal industryrev1m_M20_L100 −5.8%−0.93−10.5%−1.55Failsdefaultstrategy_reversal_industry.md
reversal industryrev1m_W20_L100 −10.1%−2.08−14.5%−2.46Failsdefaultstrategy_reversal_industry.md
reversal industryrev1w_W20 −18.6%−3.97−24.3%−3.56Failsdefaultstrategy_reversal_industry.md
reversal industryrev1w_W20_L100 −20.0%−4.06−27.0%−5.54Failsdefaultstrategy_reversal_industry.md
reversal industryrev1w_W40_L100 −15.8%−4.41−21.5%−4.89Failsdefaultstrategy_reversal_industry.md
timingtop100_sma100 selected+0.3%−0.13−4.2%−0.82Failsdefaultstrategy_timing.md
timingtop100_mom12m −2.3%−0.61+0.9%+0.17Failsdefaultstrategy_timing.md
timingtop100_dual −2.9%−0.73+2.6%+0.51Failsdefaultstrategy_timing.md
timingtop30_sma100 −2.8%−0.79−8.4%−1.57Failsdefaultstrategy_timing.md
timingtop100_breadth50 −3.3%−0.97−0.3%−0.08Failsdefaultstrategy_timing.md
timingtop30_mom12m −4.4%−1.00−5.0%−1.04Failsdefaultstrategy_timing.md
timingtop100_sma200 −4.3%−1.02+0.8%+0.11Failsdefaultstrategy_timing.md
timingtop100_sma10m −4.9%−1.11−1.5%−0.31Failsdefaultstrategy_timing.md
timingtop30_dual −6.3%−1.27−1.5%−0.42Failsdefaultstrategy_timing.md
timingtop30_sma200 −7.8%−1.61−6.2%−1.26Failsdefaultstrategy_timing.md
timingtop30_sma10m −8.4%−1.74−8.4%−1.67Failsdefaultstrategy_timing.md
timingtop30_breadth50 −7.1%−1.77−3.2%−0.79Failsdefaultstrategy_timing.md
valuedy_T30_Q selected+9.7%+2.32+2.0%+0.79Failspit_safestrategy_value.md
valuedy_P20_M +6.9%+2.15+5.1%+1.94Promisingpit_safestrategy_value.md
valuesue_P20_M +9.3%+1.63+6.8%+1.86Promisingpit_safestrategy_value.md
valuebm_T30_Q +4.8%+1.49+3.6%+0.72Failspit_safestrategy_value.md
valuesue_T30_M +8.7%+1.44+5.3%+1.38Promisingpit_safestrategy_value.md
valueroe_T30_Q +4.3%+0.82+1.1%+0.49Failspit_safestrategy_value.md
valueroe_P20_M +4.3%+0.78+1.9%+0.77Failspit_safestrategy_value.md
valueep_T30_Q +1.1%+0.51+5.8%+1.94Promisingpit_safestrategy_value.md
valueqv_T30_Q +0.9%+0.43+6.5%+2.10Holdspit_safestrategy_value.md
valuebm_P20_M +0.1%+0.34+8.2%+1.42Promisingpit_safestrategy_value.md
valueqv_T30_M −0.7%+0.04+5.1%+1.92Promisingpit_safestrategy_value.md
valueep_P20_M −0.8%+0.03+4.1%+1.78Promisingpit_safestrategy_value.md

Methodology and caveats

Protocol

Each family had 12 variants fixed before any result was seen. In-sample is 2013-01-27 to 2020-12-31 and out-of-sample is 2021-01-01 onward. The selection is the variant with the highest in-sample Newey-West t (3 lags) of monthly excess return over DSEX. Its verdict: holds if out-of-sample excess is positive with t of at least 2, promising if positive with t of at least 1, fails otherwise.

Across all 96 trials the Deflated Sharpe Ratio fails for every selection, so none survives a correction for the number of variants tried.

Costs and execution

Tk 1 crore, 0.40% commission per side, orders filled at the close of the session after the signal, trades capped at 10% of 20-session median value traded, and a two-session minimum hold (T+2). Results are also reported at 0.65% per side in the research notes.

The pit_safe universe

The default universe filters on today's market category and drops delisted codes, which leaks future information. The pit_safe universe applies no category filter and adds unlisted codes that look like equities (bonds, debentures and mutual funds excluded by pattern). The key curves, value study and paper trade use pit_safe; the 84 price and volume trials in the table were run on the default universe.

Floor-price era

From July 2022 to January 2024 the DSE traded under regulator-imposed floor prices, so many prices could not move freely, and the simulator cannot model a stock stuck at its floor. The ex-floor column removes it from both strategy and DSEX; outside it, no key strategy's out-of-sample t reaches 1.4.

Survivorship and data

  • Company metadata is a current snapshot, so delisted names and historical categories are only partly recovered, even under pit_safe.
  • DSEX is a price index and adjusted prices exclude cash dividends, so both sides omit them.
  • The simulator allows fractional shares and same-session reuse of sale proceeds.

lowvt_Q30 was found post hoc

lowvt_Q30 (lowest 60-day median value traded) came out of a decomposition of combined_Q30 run after the 2021+ data had been seen. Its out-of-sample figures are therefore not an out-of-sample test. It was weak in sample (+2.3%, t 0.73). The forward paper trade, frozen on 2026-11-06, is the first clean test of it.