BQL Screen Builder
SESSION 2026.05.21
UNIVERSE SPX Index
CCY USD
MODE shortlist
Thresholds Active 15/15
Aggregate Weight 49
Clause Count 18
Est. Quota Cost 475cells 25 rows × 19 fields
Custom Formulas 3
Exclusions Financials · Utilities · Real Estate
01

Universe Definition

Scope the population before applying thresholds
Country Filter (ISO)
Sector Exclusions
Min Market Cap
USD (mm default)
Max Market Cap
USD (mm default)
Query Mode
Sort Order
02

Filter Thresholds

CriterionCategoryOpThresholdWAlias · Expression
Revenue Growth 3Y CAGR
Top-line compounding over a multi-year window.
Growth
%
4
#sales_g_3y = sales_3yr_avg_growth()
EBITDA Margin (T12M)
Durable operating profitability.
Profitability
%
4
#ebitda_m = ebitda_margin()
EBITDA Margin Expansion 3Y CUSTOM
Margin trajectory over three years.
Profitability
ppts
3
#ebitda_m_exp = ebitda_margin() - ebitda_margin(fa_period_offset=-3)
Replace with your preferred 3-year EBITDA margin bridge formula.
EBITDA Growth 3Y Avg
Average of annual EBITDA YoY % changes (dropna) over the last three fiscal offsets.
Growth
%
4
#ebitda_g_3y = avg(dropna(pct_diff(ebitda(fpt='A', fpo=range(-3,0)))))
FCF / EBITDA Conversion
Earnings that translate into free cash flow.
Profitability
%
5
#fcf_conv = cf_free_cash_flow() / ebitda()
Capex / Sales
Screens out capital-heavy reinvestment profiles.
Capital Structure
%
3
#capex_sales = capital_expend() / sales_rev_turn()
Net Debt / EBITDA
Leverage within LBO-style boundary.
Capital Structure
x
5
#nd_ebitda = net_debt() / ebitda()
ROIC
Return on invested capital.
Profitability
%
4
#roic = return_on_inv_capital()
ROE
Public-markets capital efficiency lens.
Profitability
%
2
#roe = return_com_eqy()
Interest Coverage
EBITDA / Interest — debt capacity & resilience.
Capital Structure
x
3
#int_cov = ebitda_to_interest_expn()
EV / EBITDA (LTM)
Entry valuation ceiling.
Valuation
x
4
#ev_ebitda = ev_to_ebitda(fpt='LTM')
EV / EBITDA vs 5Y Avg CUSTOM
Trading at or below own medium-term average.
Valuation
%
2
#ev_vs_5y = ev_to_ebitda(fpt='LTM') / avg(ev_to_ebitda(fpt='LTM', dates=range(-5y, 0d))) - 1
Replace with your own premium/discount vs 5Y LTM EV/EBITDA.
P / E (T12M)
Second valuation lens.
Valuation
x
2
#pe = pe_ratio()
Free Float
Avoids illiquid or tightly held names.
Liquidity
%
2
#float = eqy_free_float_pct()
5Y Sales Growth Volatility CUSTOM
Stable trajectories over noisy swings.
Growth
σ
2
#sales_vol = std_dev(sales_growth(dates=range(-5y, 0d)))
Replace with your std-dev expression for 5Y sales growth.
03

BQL Output

shortlist
LIVE
screen.bql 63 lines · 1544 chars
01let(
02	#mcap = cur_mkt_cap(currency='USD');
03	#sales_g_3y = sales_3yr_avg_growth();
04	#ebitda_m = ebitda_margin();
05	#ebitda_m_exp = ebitda_margin() - ebitda_margin(fa_period_offset=-3);
06	#ebitda_g_3y = avg(dropna(pct_diff(ebitda(fpt='A', fpo=range(-3,0)))));
07	#fcf_conv = cf_free_cash_flow() / ebitda();
08	#capex_sales = capital_expend() / sales_rev_turn();
09	#nd_ebitda = net_debt() / ebitda();
10	#roic = return_on_inv_capital();
11	#roe = return_com_eqy();
12	#int_cov = ebitda_to_interest_expn();
13	#ev_ebitda = ev_to_ebitda(fpt='LTM');
14	#ev_vs_5y = ev_to_ebitda(fpt='LTM') / avg(ev_to_ebitda(fpt='LTM', dates=range(-5y, 0d))) - 1;
15	#pe = pe_ratio();
16	#float = eqy_free_float_pct();
17	#sales_vol = std_dev(sales_growth(dates=range(-5y, 0d)));
18)
19get(
20	name(),
21	country_iso(),
22	gics_sector_name(),
23	#mcap,
24	#sales_g_3y,
25	#ebitda_m,
26	#ebitda_m_exp,
27	#ebitda_g_3y,
28	#fcf_conv,
29	#capex_sales,
30	#nd_ebitda,
31	#roic,
32	#roe,
33	#int_cov,
34	#ev_ebitda,
35	#ev_vs_5y,
36	#pe,
37	#float,
38	#sales_vol
39)
40for(
41	filter(
42		members('SPX Index'),
43		not(gics_sector_name() in ['Financials', 'Utilities', 'Real Estate'])
44		and #mcap >= 100000000
45		and #mcap <= 2000000000
46		and #sales_g_3y >= 7.0
47		and #ebitda_m >= 15.0
48		and #ebitda_m_exp >= 0.0
49		and #ebitda_g_3y >= 8.0
50		and #fcf_conv >= 50.0
51		and #capex_sales <= 8.0
52		and #nd_ebitda <= 2.5
53		and #roic >= 10.0
54		and #roe >= 12.0
55		and #int_cov >= 4.0
56		and #ev_ebitda <= 11.0
57		and #ev_vs_5y <= 0.0
58		and #pe <= 20.0
59		and #float >= 25.0
60		and #sales_vol <= 15.0
61	)
62)
63preferences(sortby=#ebitda_m, sortorder=desc, maxrows=25)
3 custom formulas require house definition
  • #ebitda_m_exp EBITDA Margin Expansion 3Y
  • #ev_vs_5y EV / EBITDA vs 5Y Avg
  • #sales_vol 5Y Sales Growth Volatility
Reference
Syntax
Bloomberg BQL (let() / get() / for())
Server ranking
preferences(sortby, sortorder, maxrows)
Market cap
Raw USD, suffix-aware (M/B)
Delivery
BQuant, BQL API, or BQ<GO>
BQL Screen Builder · Screening Desk · v2.0.0 / 2026.05.21