Fundamentals Unscored
— / 100Score-bearing fundamentals shown here exclude gate-only risk checks. · 35 metrics shown.
Fiscal Wizard · Single-issue tearsheet
Run #4074UBS ETRACS Alerian MLP Index ETN Series B
The ETRACS Alerian MLP Index ETN Series B due July 18, 2042 (the “Securities”) is senior unsecured debt securities issued by UBS. The index measures the composite performance of energy master limited partnerships (“MLPs”), and is calculated by S&P Dow Jones Indices using a float-adjusted, capitalization-weighted methodology.
Composite verdict
Industry rank 1st of 31 in Banks - Diversified
No notable composite patterns — the signals don't cluster into a named setup right now.
Fundamentals Unscored
— / 100Score-bearing fundamentals shown here exclude gate-only risk checks. · 35 metrics shown.
Technicals Bullish
99.9 / 100Bullish setup leads (TRIX Zero-Line, ADX DI Cross, SuperTrend); bears gated by guards. · 46 signals shown.
Risk Gates
1 blocking 1 caution1 guard active, 18 signals gated.
Blocks signals that oppose the long-term moving-average regime.
Blocks counter-regime signals only when the MA crossover agrees with the long-term regime.
Breakdown
Empty pane
Every chip in either subscore card drills into the metrics or signals that fed it — including the formula, the threshold band, and what the current reading means for AMUB.

Fundamentals · Valuation
Insufficient data to score this section.
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 2.000× |
| Direction | lower |
What it would cost to take over the entire firm (equity plus debt, less cash) per dollar of pre-interest, pre-tax, pre-depreciation operating earnings. Capital-structure-agnostic — directly comparable across heavily and lightly levered businesses, which a P/E can't do. The weakness: EBITDA ignores capex, so capital-intensive businesses look artificially cheap on this metric. Cross-check with EV/FCF when capex is meaningful.
EV = market_cap + total_debt + preferred_equity + minority_interest - cash; EV/EBITDA = EV / ebitda_ttm
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 2.000× |
| Direction | lower |
Valuation expressed against the cash actually available to all capital providers after capex. Often more honest than EV/EBITDA when capital expenditure is meaningful relative to depreciation, because EBITDA ignores capex entirely while FCF reflects it. The cleanest single-number 'what would I pay to own this whole business?' valuation lens for capital-intensive firms.
EV/FCF = (market_cap + total_debt - cash) / free_cash_flow_ttm
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.500× |
| Direction | lower |
Adjusts the numerator for debt and cash so heavily-levered or cash-rich companies become comparable on a revenue-multiple basis. Particularly useful for cross-industry valuation work where some firms run net cash and others carry meaningful debt loads. Same caveats as P/S: best read alongside gross margin to translate the multiple into expected steady-state earnings power.
EV/Sales = (market_cap + total_debt - cash) / revenue_ttm
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.500× |
| Direction | lower |
The multiple equity analysts most commonly quote because it reflects expected earnings rather than the trailing window. Same caveats as trailing P/E plus one extra: the denominator depends on consensus estimates, which can be systematically optimistic going into a downturn or pessimistic at a cyclical trough. Worth cross-checking against trailing P/E and sell-side estimate trend.
Forward P/E = price / forward_eps
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.500× |
| Direction | higher |
Capital-structure-agnostic earnings yield. Pairs with Greenblatt ROC to compute the famous Magic Formula rank (the universe-rank of earnings yield plus universe-rank of return on capital). Pre-tax operating earnings divided by the full claim on the firm gives a cleaner cross-firm valuation comparison than P/E or earnings yield alone, because it strips out the distortions from leverage, cash, and tax structure.
Greenblatt EY = EBIT / Enterprise Value * 100
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.000× |
| Direction | higher |
An ABSOLUTE intrinsic-value signal, distinct from the relative multiples (PE, EV/EBITDA) which only compare a stock to its industry peers. Intrinsic value comes from the Residual Income Model: book value plus the present value of the residual income (earnings above a charge for the cost of equity) the firm is forecast to generate. This is the best-VALIDATED absolute value signal in the academic literature (Frankel & Lee 1998, replicated through 2026): the value-to-price ratio robustly predicts 1-3 year cross-sectional returns, survives every major factor model, and subsumes book-to-market. Because it is scored across the WHOLE universe (not within-industry), it complements the relative multiples rather than double-counting them. Pair it with a quality screen (Piotroski) to avoid value traps, and read the EPV decomposition to see whether a discount is unpriced earnings power or just speculative growth coming out of the price.
MoS = (V - price) / price * 100 (clamped to [-100, 200]), where V = book_value_per_share + (forward_eps - r*book_value_per_share) / (1 + r - omega) is the Residual Income Model intrinsic value (r = cost of equity ~11%, omega = residual-income persistence ~0.6). Positive = upside to fair value (undervalued).
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.500× |
| Direction | lower |
Share price divided by per-share book value of common equity — what the market values the franchise at versus what the accountants say it's worth on paper. Most informative for asset-heavy businesses (banks, insurers, industrials) where book value approximates a liquidation floor; far less informative for asset-light franchises whose value sits in brand, software, or other intangibles that GAAP under-states or excludes entirely.
P/B = market_cap / common_equity
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 1.000× |
| Direction | lower |
How many dollars of share price the market is willing to pay for one dollar of trailing-twelve-month earnings. The universal valuation anchor for profitable companies — useful for cross-sector comparison and as a quick read on whether the market expects earnings growth, decline, or a quality re-rating. Sensitive to one-off items in the denominator (write-downs, tax holidays, share buybacks); pair with EV/EBITDA when capital structure or non-cash charges look noisy.
P/E = market_cap / net_income_ttm
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.500× |
| Direction | lower |
Useful when earnings are negative, noisy, or one-time-distorted (early-stage growth, restructurings, cyclical troughs). Works best within an industry, not across — gross margin profiles vary so wildly that 1x P/S for a software company means something completely different from 1x P/S for a grocery chain.
P/S = market_cap / revenue_ttm
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.500× |
| Direction | target |
Divides the trailing P/E by the annualised three-year EPS growth rate (in percentage points). Below 1.0 is conventionally read as 'cheap relative to growth'; above 2 implies the multiple is well ahead of recent growth. Sensitive to which growth window you choose and unstable when earnings cross zero — flips sign or explodes when prior EPS is negative.
PEG = (P/E) / eps_growth_3y_pct
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.500× |
| Direction | target |
Peter Lynch's adjustment to PEG: adds the dividend yield to the growth rate in the denominator so that mature dividend payers don't get unfairly punished by a low growth rate alone. Sweet spot is 1.0 (P/E equals growth plus yield); below 0.5 often signals a broken growth assumption rather than genuine value; above 2 is over-paying.
PEGY = (P/E) / (eps_growth_rate_pct + dividend_yield_pct)

Fundamentals · Profitability
Insufficient data to score this section.
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.500× |
| Direction | higher |
Productivity of the asset base — how efficiently the firm converts assets into sales. Combined with net margin, this is the core of the DuPont decomposition: ROA = net margin × asset turnover. Two businesses can land at the same ROA via opposite paths: thin-margin / high-turnover (Costco, supermarkets) vs. fat-margin / low-turnover (luxury, software).
Asset Turnover = revenue_ttm / average_total_assets
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.500× |
| Direction | lower |
Lower is generally better for shareholder cash returns — less of every dollar of revenue gets reinvested in maintaining the asset base. But very low values can flag under-investment in a capital-intensive business, which catches up later via deteriorating capacity or competitiveness. Pairs with FCF margin to separate 'thin operating margin' from 'fat operating margin offset by heavy capex'.
Capex to Sales = capital_expenditures_ttm / revenue * 100
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 1.000× |
| Direction | target |
Sanity-check on earnings quality — a ratio of 1.0 means every dollar of GAAP earnings shows up as free cash flow. Persistently below 1.0 means working-capital build or capex is consuming earnings; persistently above 1.0 is unusual and may flag accounting conservatism (heavy non-cash charges) or a one-time release. Trend matters more than absolute level.
Cash Conversion = free_cash_flow_ttm / net_income_ttm
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 1.000× |
| Direction | higher |
Easier to compare than operating margin across firms with very different leverage and depreciation profiles, because it adds D&A back. Software platforms commonly run above 30%; capital-light service businesses cluster around 20%; capital-intensive industrials sit below 15%. The weakness: ignores the cash needed to maintain the asset base — pair with FCF margin for a complete profitability picture.
EBITDA Margin = ebitda / revenue * 100
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 2.000× |
| Direction | higher |
End-to-end conversion ratio: of every dollar of revenue, how much falls through to genuine free cash flow available to all capital providers? More honest than net margin because it accounts for the capex needed to maintain (and grow) the business. The single best indicator of whether the business is a quality compounder or a GAAP-earnings illusion.
FCF Margin = (free_cash_flow_ttm / revenue_ttm) * 100
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 1.500× |
| Direction | higher |
Free cash flow the business throws off, divided by what the market currently charges for the equity. Treats the equity claim as a perpetual stream of free cash. More honest than earnings yield because it reflects the cash actually available to shareholders after all reinvestment. Cyclicals can swing below zero in a downturn — read with the trailing-cycle range.
FCF Yield = (free_cash_flow_ttm / market_cap) * 100
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.500× |
| Direction | higher |
Joel Greenblatt's reformulation of return-on-capital, designed to filter for businesses that earn high pre-tax returns on the tangible operating capital that actually generates EBIT. Excludes goodwill, acquired intangibles, and financial assets so that two firms with the same operating economics rank similarly regardless of acquisition history. Pairs with Greenblatt's Earnings Yield (EBIT/EV) to produce the famous 'Magic Formula' rank — quality stocks at value prices.
Greenblatt ROC = EBIT / (working_capital + net_fixed_assets) * 100
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 1.500× |
| Direction | higher |
First-line profitability measure — how much revenue is left after the direct cost of producing it. Stable or rising gross margin signals pricing power and low input-cost exposure; falling gross margin is one of the earliest reliable signals of competitive pressure or commodity-input squeeze. Industry context is everything: 30% gross margin is excellent for a grocery chain and disastrous for a software company.
Gross Margin = ((revenue_ttm - cogs_ttm) / revenue_ttm) * 100
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 1.500× |
| Direction | higher |
Operating margin minus interest, tax, and below-the-line items. Useful but noisier than operating margin: tax rate changes, debt-service shifts, and one-time items can move net margin year-over-year even when the operating business is unchanged. Always pair with operating margin and FCF margin — divergence between them is a tell about leverage, tax structure, or earnings quality.
Net Margin = (net_income_ttm / revenue_ttm) * 100
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.500× |
| Direction | target |
Pre-capex version of cash conversion: compares operating cash flow directly to net income, before subtracting capex. Numbers persistently below 1.0 suggest accruals are doing the work (revenue recognised before cash collected, or expenses deferred). Numbers above 1.0 are typically driven by D&A exceeding true economic depreciation — a mild positive sign but not always meaningful.
OCF/NI = operating_cash_flow_ttm / net_income_ttm
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 2.000× |
| Direction | higher |
Captures the leverage between revenue and operating profit — the core test of whether a business converts sales into income at the operating level. Independent of capital structure (excludes interest) and tax-jurisdiction noise. Trend matters as much as level: an improving operating margin indicates pricing power or operational efficiency gains; a falling margin signals input-cost pressure, wage inflation, or competitive erosion.
Operating Margin = (operating_income_ttm / revenue_ttm) * 100
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 1.000× |
| Direction | higher |
Capital-efficiency measure that ignores how the assets are financed. Useful for comparing within a sector but heavily biased by industry — banks and utilities run low ROA by design (huge balance sheets), software and franchise businesses run high ROA (asset-light). The DuPont decomposition links it to ROE: ROE = ROA × (assets / equity) × (1/(1-tax)), so leverage inflates the gap between ROA and ROE.
ROA = (net_income_ttm / average_total_assets) * 100
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 1.000× |
| Direction | higher |
Pre-tax cousin of ROIC using operating capital employed (long-term debt plus equity, approximately equal to total assets minus current liabilities). Damodaran publishes ROCE by industry annually, so it benchmarks cleanly against sector norms. Particularly useful for capital-intensive businesses where you want to see pre-tax returns on the long-term capital base.
ROCE = ebit / (total_assets - current_liabilities) * 100
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 2.000× |
| Direction | higher |
The headline profitability metric. Net income divided by average book equity tells you how productive each dollar of shareholders' capital is. High sustained ROE compounds book value when the business can reinvest at a similar return. Two warnings: ROE rises mechanically with leverage (high D/E inflates ROE without making the business better), and aggressive buybacks can shrink the equity denominator faster than they shrink earnings, artificially boosting ROE even as fundamental returns are flat.
ROE = (net_income_ttm / average_common_equity) * 100
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 2.000× |
| Direction | higher |
Measures how productive the actual operating capital base is, independent of capital structure. Strips out the effects of cash, leverage, and below-the-line items so you see the underlying economic engine. The benchmark is the firm's weighted-average cost of capital (WACC) — sustained ROIC above WACC creates value, sustained ROIC below WACC destroys it. The single most important profitability metric for long-term compounding.
NOPAT = operating_income_ttm * (1 - effective_tax_rate); invested_capital = shareholders_equity + total_debt - cash; ROIC = NOPAT / avg_invested_capital * 100

Fundamentals · Growth
Insufficient data to score this section.
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 2.000× |
| Direction | higher |
Bottom-line growth on a per-share basis — captures both operating progress and any net buyback effect. The denominator uses the absolute value of prior EPS so a turnaround from negative to positive earnings reads with the conventional sign rather than producing arithmetic nonsense. Pair with revenue growth to separate real franchise expansion from buyback-driven per-share lift.
EPS Growth = (diluted_eps_ttm - diluted_eps_prior_ttm) / abs(diluted_eps_prior_ttm)
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 2.000× |
| Direction | higher |
Top-line growth — the cleanest way to see whether the franchise is expanding. Best read alongside margin trend: revenue rising while margin compresses is often discount-driven volume rather than real growth, and can mask underlying weakness. Compare to industry peers — what looks weak in absolute terms can be best-in-sector if the industry is contracting.
Revenue Growth = (revenue_ttm - revenue_prior_ttm) / revenue_prior_ttm

Fundamentals · Efficiency
Insufficient data to score this section.
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.250× |
| Direction | lower |
The single best operations-quality metric. Negative CCC means the firm is funded by suppliers — the customer pays before the supplier needs to be paid (Apple, Costco, Amazon at scale). Long CCC ties up working capital and forces operating-loan dependence. Combines three sub-metrics: days inventory outstanding, days sales outstanding, days payable outstanding.
CCC = DIO + DSO - DPO
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.250× |
| Direction | lower |
How long the average sale sits as a receivable before becoming cash. Earnings-quality flag: receivables growing faster than revenue is one of the cleanest tells for revenue recognition stretching — Beneish flagged exactly this pattern as a primary fraud indicator. Industry context matters: B2B / project businesses run longer DSO than retail, but the trend is more important than the level.
DSO = 365 * average_accounts_receivable / revenue
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.250× |
| Direction | higher |
DuPont productivity measure. Combined with margin, it tells the asset-light vs. asset-heavy story: low turnover with high margin is the luxury / branded model, high turnover with thin margin is the supermarket / discount model. Very high turnover in retail can also flag stockouts (lost sales) — the metric reads best industry-relative, not absolute.
Inventory Turnover = cogs / average_inventory

Fundamentals · Income
Insufficient data to score this section.
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.500× |
| Direction | stepped |
Direct cash income from holding the share. Stable dividend yield over time often signals capital discipline and predictable cash generation; abnormally high yield is frequently a warning that the dividend isn't covered by free cash flow and may be cut. Always read alongside payout ratio and FCF coverage.
Dividend Yield = (dividends_per_share_ttm / price) * 100
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 1.500× |
| Direction | higher |
Net income divided by market cap, expressed as a percent. Lets you compare equity earning power directly to bond yields: a 6% earnings yield is the equity-side analog to a 6% coupon, with the difference that earnings can grow (or contract) while a bond coupon is fixed. The standard 'is the equity risk-premium adequate?' framing.
Earnings Yield = (net_income_ttm / market_cap) * 100
| Raw value | — |
|---|---|
| Score (0-100) | — |
| Weight | 0.500× |
| Direction | target |
Sustainability check on the dividend yield. Below 30% means the dividend has substantial room to grow; 30–60% is the conventional sweet spot for a mature payer; above 85% is stretched and frequently precedes a cut. REITs and utilities run higher than the broad market by design — REIT payouts above 80% are normal because the structure requires distributing most income.
Payout Ratio = dividends_paid_ttm / net_income_ttm
Technicals · Momentum
Strong Momentum — most metrics are scoring well above the professional bands' midpoints.
CCI is below -100 — price is stretched well below its typical-price mean (oversold). A mean-reversion buy bias; in a strong downtrend it can stay stretched, so confirm with the trend.
| Score (0-100) | 94.44 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 4 |
| Last trigger date | 2026-06-01 |
| Triggers in last 60 bars | 29 |
| Bars evaluated | 508 |
| Signal params | period=20, oversold=-100, overbought=100 |
| Chart params | period=20, low=-100, high=100 |
| Threshold upper | 100.000 |
| Threshold lower | -100.000 |
| Threshold mid | 0.000 |
| Last bar value | -43.3316 |
CCI measures how far the current typical price ((H+L+C)/3) sits from its rolling SMA, normalized by the mean absolute deviation. Originally built for commodity cycles by Donald Lambert; widely used as a generic momentum / overbought-oversold gauge on any asset. CCI is unbounded but ±100 is the conventional 'normal range' edge — readings beyond that are interpreted as strong directional thrusts or stretched extremes depending on context.
+1 while CCI is below -100 (oversold); -1 while CCI is above +100 (overbought); 0 inside the ±100 band.
+1 = oversold (stretched below the typical-price mean, mean-reversion buy bias), -1 = overbought (stretched above), 0 = inside the ±100 band.
period=20, oversold=-100, overbought=100
Active pullback-buy in an established uptrend — price bouncing off a 2-period oversold reading inside a long-term up regime. Short-window mean-reversion setup.
Trigger history semantics changed 2026-05-11; rerun scoring before comparing this signal across older and newer runs.
| Score (0-100) | 75.94 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 8 |
| Last trigger date | 2026-05-26 |
| Triggers in last 60 bars | 3 |
| Bars evaluated | 508 |
| Signal params | period=2, oversold=10, exit=70, regime_ma=200, exit_method=rsi |
| Chart params | period=2, oversold=10, regime_ma=200 |
| Threshold mid | 50.000 |
| Indicator scale | 0.00 – 100.00 |
| Last bar value | 42.2446 |
| Last bar price | 64.0699 |
| Last bar regime | 50.0000 |
Designed to buy oversold pullbacks within an established uptrend (price above the regime moving average). Uses a 2-period RSI rather than the standard 14 to make it hyper-responsive to short-term swings. The default exit_method is RSI-threshold based: hold while RSI(2) is below the configured exit threshold and exit when RSI(2) crosses above exit. The book-style SMA exit is also supported by setting exit_method=sma with exit_ma.
+1 when price is above regime_ma and RSI(2) drops below oversold; held while inside the trade; back to 0 when the configured exit_method fires.
+1 = pullback-buy state active, 0 = flat. Bear-side variant uses the symmetric short rule.
period=2, oversold=10, exit=70, regime_ma=200, exit_method=rsi
MACD and price agreeing — no divergence to act on. Use other tools.
| Score (0-100) | 48.95 |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 67 |
| Last trigger date | 2026-03-02 |
| Triggers in last 60 bars | 0 |
| Bars evaluated | 508 |
| Signal params | fast=12, slow=26, signal=9, pivot_window=5, lookback=60 |
| Chart params | fast=12, slow=26, signal=9, pivot_window=5, lookback=60 |
| Last bar value | -0.1060 |
Compares price pivots against the MACD histogram (MACD line minus signal line) at those same bars. Bullish divergence: price makes a lower low, histogram makes a higher low — momentum is improving beneath the surface. Bearish divergence: price makes a higher high, histogram makes a lower high. Slower than the MACD signal cross but a richer confirmatory tell — the histogram captures momentum acceleration, not just direction.
+1 at the right-hand pivot of bullish divergence; -1 at right-hand pivot of bearish divergence; 0 otherwise.
+1 = bullish divergence, -1 = bearish divergence.
fast=12, slow=26, signal=9, pivot_window=5
MFI is below 20 — volume-weighted money flow is oversold after a stretched-down move. Carries more weight than a bare RSI read because it is volume-weighted.
| Score (0-100) | 91.05 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 3 |
| Last trigger date | 2026-06-02 |
| Triggers in last 60 bars | 10 |
| Bars evaluated | 508 |
| Signal params | period=14, oversold=20, overbought=80 |
| Chart params | period=14, low=20, high=80 |
| Threshold upper | 80.000 |
| Threshold lower | 20.000 |
| Threshold mid | 50.000 |
| Indicator scale | 0.00 – 100.00 |
| Last bar value | 23.0993 |
MFI is essentially RSI computed on (typical price × volume) instead of close alone, so high-volume bars push the oscillator harder than low-volume bars. It's 0-100 bounded and uses the same 20/80 OB-OS convention as a slower RSI. Because it folds in volume, MFI can flag distribution / accumulation underneath a flat price tape that RSI would miss.
+1 while MFI is below 20 (oversold); -1 while MFI is above 80 (overbought); 0 in between.
+1 = oversold (bullish, volume-weighted), -1 = overbought (bearish), 0 = mid-range.
period=14, oversold=20, overbought=80
RSI printing lower highs while price prints higher highs — buyers losing strength even as price keeps drifting up. Reversal-down tell typically seen before exhaustion tops.
| Score (0-100) | 37.46 |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 25 |
| Last trigger date | 2026-04-30 |
| Triggers in last 60 bars | 2 |
| Bars evaluated | 508 |
| Signal params | period=14, pivot_window=5, lookback=60 |
| Chart params | period=14, pivot_window=5, lookback=60 |
| Threshold mid | 50.000 |
| Indicator scale | 0.00 – 100.00 |
| Last bar value | 46.9142 |
When price prints a lower low while RSI prints a higher low at those same pivot bars, momentum is improving even though price is still falling — a classic bullish divergence that often precedes a reversal up. The bearish mirror fires when price makes a higher high but RSI prints a lower high, telegraphing exhausted upside. Divergences are confirmation tells rather than precise timing signals — best used as a 'something is changing under the surface' alert, not a trade trigger on their own.
+1 at the right-hand pivot of a (lower-low price, higher-low RSI) pair; -1 at the right-hand pivot of a (higher-high price, lower-high RSI) pair; 0 otherwise.
+1 = bullish divergence, -1 = bearish divergence, 0 = no divergence at this bar.
period=14, pivot_window=5, lookback=60
%K crossed up through %D from oversold — short-term buy trigger after a stretched-down move.
| Score (0-100) | 85.30 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 4 |
| Last trigger date | 2026-06-01 |
| Triggers in last 60 bars | 6 |
| Bars evaluated | 508 |
| Signal params | k=14, d=3, smooth=3, ob=80, os=20 |
| Chart params | k=14, d=3, smooth=3, ob=80, os=20 |
| Threshold upper | 80.000 |
| Threshold lower | 20.000 |
| Threshold mid | 50.000 |
| Indicator scale | 0.00 – 100.00 |
| Last bar value | 31.8921 |
| Last bar d | 29.3207 |
| Last bar signal | 0.0000 |
Bullish when %K crosses above %D while both lines are below the oversold threshold (typically 20); bearish when %K crosses below %D while both are above overbought (typically 80). Filters out mid-range stochastic crosses, which whipsaw in chop. Best used at well-defined ranges and at trend extremes.
+1 on bullish cross in oversold; -1 on bearish cross in overbought; 0 otherwise.
+1 = oversold bullish cross, -1 = overbought bearish cross.
k=14, d=3, smooth=3, ob=80, os=20
TRIX crossed above zero - triple-smoothed momentum has turned positive, filtering out the short-term noise.
| Score (0-100) | 100.00 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 0 |
| Last trigger date | 2026-06-05 |
| Triggers in last 60 bars | 60 |
| Bars evaluated | 508 |
| Signal params | period=15 |
| Chart params | period=15 |
| Last bar value | 0.0633 |
TRIX is the one-bar rate of change of a triple-exponentially-smoothed closing price. The triple smoothing strips out short-term noise, so TRIX oscillates slowly around zero. A cross up through zero marks momentum turning positive (bullish); a cross down through zero marks it turning negative (bearish). Smoother and lower-frequency than most momentum oscillators, which trades responsiveness for fewer whipsaws.
+1 when TRIX crosses up through zero; -1 when TRIX crosses down through zero; 0 otherwise.
+1 = TRIX turned positive (bullish momentum), -1 = TRIX turned negative (bearish momentum).
period=15
Ultimate Oscillator is in oversold territory — multi-timeframe buying pressure is washed out; a mean-reversion bounce bias.
| Score (0-100) | 92.07 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 5 |
| Last trigger date | 2026-05-29 |
| Triggers in last 60 bars | 17 |
| Bars evaluated | 508 |
| Signal params | timeperiod1=7, timeperiod2=14, timeperiod3=28, oversold=30, overbought=70 |
| Threshold upper | 70.000 |
| Threshold lower | 30.000 |
| Threshold mid | 50.000 |
| Indicator scale | 0.00 – 100.00 |
| Last bar value | 46.1781 |
Larry Williams' Ultimate Oscillator blends buying-pressure ratios over three lookbacks (7/14/28) into a single 0-100 reading, designed to reduce the false extremes that plague single-period oscillators. Below 30 is oversold and above 70 overbought. The signal reads the recovery out of those zones: a lift out of oversold is bullish, a drop out of overbought is bearish.
+1 while the Ultimate Oscillator is at or below the oversold threshold (default 30); -1 while it is at or above the overbought threshold (default 70); 0 in between.
+1 = oversold (bullish), -1 = overbought (bearish), 0 = oscillator mid-range.
timeperiod1=7, timeperiod2=14, timeperiod3=28, oversold=30, overbought=70
%R is below -80 — price is sitting near the bottom of its recent range (oversold). Treat as a 'stretched down' tell; confirm with trend / volume.
| Score (0-100) | 94.50 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 4 |
| Last trigger date | 2026-06-01 |
| Triggers in last 60 bars | 32 |
| Bars evaluated | 508 |
| Signal params | period=14, oversold=-80, overbought=-20 |
| Chart params | period=14, low=-80, high=-20 |
| Threshold upper | -20.000 |
| Threshold lower | -80.000 |
| Threshold mid | -50.000 |
| Indicator scale | -100.00 – 0.00 |
| Last bar value | -70.9563 |
Williams %R maps close-to-range position onto a -100 to 0 scale: -100 means the close is right at the lookback period's low (oversold), 0 means right at the period's high (overbought). The oscillator's interpretation mirrors RSI but the scale is inverted. Like other OB/OS oscillators, it works best as a tactical timing aid inside an already-established trend, not as a standalone reversal trigger in choppy markets.
+1 while %R is below -80 (oversold); -1 while %R is above -20 (overbought); 0 in between.
+1 = oversold (bullish), -1 = overbought (bearish), 0 = mid-range.
period=14, oversold=-80, overbought=-20
Coppock Curve crossed below zero - long-horizon momentum has rolled into a bearish cycle.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 0 |
| Last trigger date | 2026-06-05 |
| Triggers in last 60 bars | 60 |
| Bars evaluated | 508 |
| Signal params | wma_period=10, roc1_period=11, roc2_period=14 |
| Chart params | wma_period=10 |
| Last bar value | -6.8135 |
The Coppock Curve is a weighted moving average of the sum of two rate-of-change measures, originally designed as a long-horizon, buy-only bottom indicator for equity indices. This screener applies it to daily bars and adds a bearish state for symmetry: a cross up through zero is the classic long-term buy tell, a cross down through zero flags a bearish momentum cycle.
+1 when the Coppock Curve crosses up through zero from below; -1 when it crosses down through zero; 0 otherwise.
+1 = bullish zero-line cross (classic long-term buy), -1 = bearish zero-line cross.
wma_period=10, roc1_period=11, roc2_period=14
MACD histogram crossed below zero - the MACD line is now below its signal, momentum has tilted down.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 0 |
| Last trigger date | 2026-06-05 |
| Triggers in last 60 bars | 60 |
| Bars evaluated | 508 |
| Signal params | fast=12, slow=26, signal_period=9 |
| Chart params | fast=12, slow=26 |
| Last bar value | -0.1060 |
The MACD histogram is the difference between the MACD line (12/26 EMA spread) and its 9-period signal line. When the histogram crosses above zero, the MACD line has crossed above its signal - a bullish momentum-state shift; a cross below zero is bearish. This is a momentum-state read complementary to the MACD signal-cross entry event, capturing the regime rather than the precise entry bar.
+1 when the MACD histogram crosses up through zero; -1 when it crosses down through zero; 0 otherwise.
+1 = histogram turned positive (bullish momentum), -1 = histogram turned negative (bearish momentum).
fast=12, slow=26, signal_period=9
MACD line crossed down through its signal line — short-term momentum trigger short. Strongest when in a downtrend regime.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 8 |
| Last trigger date | 2026-05-26 |
| Triggers in last 60 bars | 4 |
| Bars evaluated | 508 |
| Signal params | fast=12, slow=26, signal=9 |
| Chart params | fast=12, slow=26, signal=9 |
| Last bar value | -0.0298 |
| Last bar signal | 0.0762 |
| Last bar histogram | -0.1060 |
| Last bar signal_trig | 0.0000 |
Fires on the bar where the MACD line (EMA12 minus EMA26) crosses through the signal line (EMA9 of MACD). Bullish when MACD crosses up through signal, bearish when it crosses down. Far more commonly used as a trade trigger than divergence — see macd_divergence for the slower confirmatory tell. Whipsaws in chop; cleanest when combined with a trend-regime filter.
+1 on bullish cross (MACD crosses up through signal); -1 on bearish cross (MACD crosses down through signal); 0 otherwise.
+1 = bullish MACD-signal cross, -1 = bearish MACD-signal cross.
fast=12, slow=26, signal=9
RSI(14) is in the overbought zone (at or above the line) — price has stretched up; a pullback bias, though it can stay overbought in a strong uptrend.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 12 |
| Last trigger date | 2026-05-19 |
| Triggers in last 60 bars | 5 |
| Bars evaluated | 508 |
| Signal params | period=14, oversold=30, overbought=70 |
| Chart params | period=14, low=30, high=70 |
| Threshold upper | 70.000 |
| Threshold lower | 30.000 |
| Threshold mid | 50.000 |
| Indicator scale | 0.00 – 100.00 |
| Last bar value | 46.9142 |
The 14-period Relative Strength Index is the canonical Wilder momentum oscillator, bounded 0-100. Readings below 30 mark oversold conditions and above 70 mark overbought. This signal reads the recovery out of those extremes: a cross back up through 30 is a bullish mean-reversion tell, a cross back down through 70 is bearish. The +-30/70 policy is standard practice layered on top of the TA-Lib primitive.
+1 while RSI(14) is at or below the oversold threshold (default 30); -1 while it is at or above the overbought threshold (default 70); 0 in between.
+1 = oversold (bullish mean-reversion bias), -1 = overbought (bearish), 0 = RSI in its mid-range.
period=14, oversold=30, overbought=70
ROC crossed down through −threshold — the rolling lookback shows a real drawdown, not just chop. Confirms downside momentum.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 2 |
| Last trigger date | 2026-06-03 |
| Triggers in last 60 bars | 9 |
| Bars evaluated | 508 |
| Signal params | period=10, threshold=5 |
| Chart params | period=10, threshold=5 |
| Threshold upper | 5.000 |
| Threshold lower | -5.000 |
| Threshold mid | 0.000 |
| Last bar value | -4.7515 |
ROC is the simplest momentum oscillator: (close − close_N_ago) / close_N_ago × 100. It's unbounded, sign-bearing, and reads as 'how much price has moved in absolute % terms over the lookback'. A configurable threshold (default 5%) separates ordinary fluctuation from strong directional thrusts. Useful as a coarse momentum cross when you want a less smoothed signal than RSI or MACD.
+1 when ROC crosses up through +threshold (strong bullish thrust), -1 when ROC crosses down through −threshold (strong bearish thrust), 0 otherwise.
+1 = bullish thrust cross, -1 = bearish thrust cross, 0 = ROC within ±threshold or no fresh cross.
period=10, threshold=5
Stochastic RSI dropped out of overbought - fast momentum is turning down after a stretched-up move.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 5 |
| Last trigger date | 2026-05-29 |
| Triggers in last 60 bars | 19 |
| Bars evaluated | 508 |
| Signal params | period=14, fastk_period=5, fastd_period=3, oversold=20, overbought=80 |
| Chart params | period=14 |
| Threshold upper | 80.000 |
| Threshold lower | 20.000 |
| Threshold mid | 50.000 |
| Indicator scale | 0.00 – 100.00 |
| Last bar stoch_k | 30.9847 |
| Last bar stoch_d | 28.4265 |
Stochastic RSI applies the stochastic oscillator formula to RSI values rather than price, producing a faster, more sensitive 0-100 momentum read. Readings below 20 are oversold and above 80 overbought. The signal fires on the recovery out of those zones: a lift out of oversold is bullish, a drop out of overbought is bearish. More reactive than plain RSI, so best filtered by trend context.
+1 when StochRSI crosses up through the oversold threshold (default 20); -1 when it crosses down through the overbought threshold (default 80); 0 otherwise.
+1 = bullish exit from oversold, -1 = bearish exit from overbought, 0 = StochRSI mid-range.
period=14, fastk_period=5, fastd_period=3, oversold=20, overbought=80
Technicals · Trend
Strong Trend — most metrics are scoring well above the professional bands' midpoints.
Price hugging its 52-week high — strength regime, breakout candidates. Stocks at new highs tend to keep making new highs.
| Score (0-100) | 86.82 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 11 |
| Last trigger date | 2026-05-20 |
| Triggers in last 60 bars | 22 |
| Bars evaluated | 508 |
| Signal params | window=252, proximity=0.01 |
| Chart params | window=252 |
| Last bar value | 22.1510 |
| Last bar upper | 23.5460 |
| Last bar lower | 17.1114 |
Reports whether the close sits within the configured proximity (default 2%) of the rolling 252-bar high or low. New-highs and new-lows are universally watched screening filters — momentum and breakout strategies start from here, and the broad market's new-high / new-low spread is a foundational breadth indicator.
+1 while close is within proximity of the 252-bar high; -1 while close is within proximity of the 252-bar low; 0 mid-range.
+1 = near 52-week high, -1 = near 52-week low, 0 = mid-range.
window=252, proximity=0.01
+DI crossed above -DI - upward directional pressure is now dominant. Pair with ADX strength before trading it.
| Score (0-100) | 100.00 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 0 |
| Last trigger date | 2026-06-05 |
| Triggers in last 60 bars | 60 |
| Bars evaluated | 508 |
| Signal params | period=14 |
| Chart params | period=14 |
| Threshold mid | 20.000 |
| Last bar plus_di | 43.7266 |
| Last bar minus_di | 43.7111 |
The +DI and -DI lines from Wilder's directional movement system measure upward versus downward directional pressure. When +DI crosses above -DI, buyers are gaining the upper hand (bullish); when -DI crosses above +DI, sellers are (bearish). This is a directional-bias signal only - it captures which side is in control, not how strong the trend is (that is the ADX line's job).
+1 when +DI crosses above -DI; -1 when -DI crosses above +DI; 0 otherwise.
+1 = bullish DI cross (upward pressure dominant), -1 = bearish DI cross (downward pressure dominant).
period=14
Aroon just cleared +50 — the most recent high is meaningfully fresher than the most recent low. Tells you a new uptrend is establishing, not that you're late to it.
| Score (0-100) | 94.55 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 4 |
| Last trigger date | 2026-06-01 |
| Triggers in last 60 bars | 42 |
| Bars evaluated | 508 |
| Signal params | period=25, high_threshold=50, low_threshold=-50 |
| Chart params | period=25, high_threshold=50, low_threshold=-50 |
| Threshold upper | 50.000 |
| Threshold lower | -50.000 |
| Threshold mid | 0.000 |
| Indicator scale | -100.00 – 100.00 |
| Last bar value | -28.0000 |
| Last bar aroon_up | 52.0000 |
| Last bar aroon_down | 80.0000 |
Aroon measures how recently the highest-high and lowest-low occurred inside the lookback (default 25 bars) and reports the difference as a single -100 to +100 oscillator. Positive values mean the most recent high is fresher than the most recent low (uptrend); negative values mean the opposite. Crosses through ±50 are commonly used as trend-onset / trend-loss alerts. Less reactive to whipsaws than price-only momentum oscillators.
+1 when Aroon crosses up through +high_threshold (default +50), -1 when Aroon crosses down through low_threshold (default -50), 0 otherwise.
+1 = fresh uptrend onset, -1 = fresh downtrend onset, 0 = no recent threshold cross (no clear trend tilt).
period=25, high_threshold=50, low_threshold=-50
Full Ichimoku bull setup — price above cloud, tenkan over kijun, cloud projecting green. Multi-component trend confirmation.
| Score (0-100) | 60.59 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 25 |
| Last trigger date | 2026-04-30 |
| Triggers in last 60 bars | 1 |
| Bars evaluated | 508 |
| Signal params | tenkan=9, kijun=26, senkou_b=52 |
| Chart params | tenkan=9, kijun=26, senkou_b=52 |
| Last bar value | 22.1510 |
| Last bar tenkan | 22.0739 |
| Last bar kijun | 22.5630 |
| Last bar cloud_a | 21.6480 |
| Last bar cloud_b | 21.6900 |
Composite trend system: bullish when price is above the cloud (Kumo), the tenkan crosses above the kijun, and the cloud projected ahead is green (Senkou A above Senkou B). Bearish on the symmetric short-side configuration. The full bull/bear signal requires all three components to align, making it slower but cleaner than any single-line indicator.
+1 on bullish trigger conditions, -1 on bearish, 0 otherwise.
+1 = full Ichimoku bullish setup, -1 = full bearish setup.
tenkan=9, kijun=26, senkou_b=52
Ticker outperforming the broad market by more than its trailing-year norm — sector or stock-specific tailwind in play.
| Score (0-100) | 79.17 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 23 |
| Last trigger date | 2026-05-04 |
| Triggers in last 60 bars | 24 |
| Bars evaluated | 508 |
| Signal params | period=63, rank_window=252, high_pct=0.8, low_pct=0.2 |
| Chart params | period=63, rank_window=252, high_pct=0.8, low_pct=0.2 |
| Threshold upper | 0.800 |
| Threshold lower | 0.200 |
| Threshold mid | 0.500 |
| Indicator scale | 0.00 – 1.00 |
| Last bar value | 0.3413 |
| Last bar rs | 0.4964 |
Computes the period-bar log-return spread (ticker minus SPY) and ranks the spread against its trailing 252-bar quantile. SPY = SPDR S&P 500 ETF Trust ('SPDR' = Standard & Poor's Depositary Receipts), the standard proxy for the US large-cap market. Ranking against the trailing window means the same threshold works in both gentle bull markets and high-volatility regimes — the metric is calibrated against the ticker's own history, not a fixed cutoff.
+1 while the ticker-vs-SPY spread is in the top high_pct of its trailing window; -1 while in the bottom low_pct; 0 otherwise.
+1 = clear outperformance regime, -1 = clear underperformance regime.
period=63, rank_window=252, high_pct=0.8, low_pct=0.2
Ticker just entered its top quintile of relative strength vs. the benchmark. Sector rotation tailwind — momentum tends to persist.
| Score (0-100) | 79.17 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 23 |
| Last trigger date | 2026-05-04 |
| Triggers in last 60 bars | 24 |
| Bars evaluated | 508 |
| Signal params | period=63, rank_window=252, high_pct=0.8, low_pct=0.2 |
| Chart params | period=63, rank_window=252, high_pct=0.8, low_pct=0.2 |
| Threshold upper | 0.800 |
| Threshold lower | 0.200 |
| Threshold mid | 0.500 |
| Indicator scale | 0.00 – 1.00 |
| Last bar value | 0.3373 |
Computes the trailing return spread between the ticker and the benchmark (default SPY) over a period (default 63 bars / ~quarter), then ranks the current spread within a longer rolling window (default 252 bars / ~year). A reading near 1 means this ticker is in its top decile of recent relative strength; near 0 means bottom decile. Used to flag rotation leaders / laggards before price-action signals catch up.
+1 when the percentile rank crosses up through high_pct (default 0.8 = top quintile), -1 when it crosses down through low_pct (default 0.2 = bottom quintile), 0 otherwise.
+1 = ticker entered relative-strength leadership, -1 = ticker entered relative weakness, 0 = mid-band rank (no fresh rotation signal).
period=63, rank_window=252, high_pct=0.8, low_pct=0.2
SuperTrend flipped bullish - price closed above the ATR-offset band; the trailing band now sits below as support.
| Score (0-100) | 100.00 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 0 |
| Last trigger date | 2026-06-05 |
| Triggers in last 60 bars | 60 |
| Bars evaluated | 508 |
| Signal params | atr_period=10, multiplier=3 |
| Chart params | atr_period=10, multiplier=3 |
| Last bar supertrend | 21.5041 |
| Last bar close | 22.1510 |
SuperTrend places a trailing band a multiple of ATR (default 3x a 10-period ATR) above or below price and flips the band side when price closes through it. When price flips above the band the trend is up (bullish); when it flips below the trend is down (bearish). A volatility-adaptive trend-following tool whose stop-and-reverse band widens in volatile tape and tightens in quiet tape.
+1 when price flips above the SuperTrend band (uptrend onset); -1 when price flips below it (downtrend onset); 0 otherwise.
+1 = SuperTrend flipped bullish (price above band), -1 = SuperTrend flipped bearish (price below band).
atr_period=10, multiplier=3
VI+ crossed above VI- - upward trend movement is taking over. A trend-onset tell.
| Score (0-100) | 100.00 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 0 |
| Last trigger date | 2026-06-05 |
| Triggers in last 60 bars | 60 |
| Bars evaluated | 508 |
| Signal params | period=14 |
| Chart params | period=14 |
| Threshold mid | 1.000 |
| Last bar vi_plus | 0.9335 |
| Last bar vi_minus | 0.9180 |
The Vortex Indicator builds two oscillators (VI+ and VI-) from the relationship between the current bar's range and the prior bar's high/low, normalized by true range. When VI+ crosses above VI-, an uptrend is taking hold (bullish); when VI- crosses above VI+, a downtrend is (bearish). A trend-onset crossover tool that reacts to fresh directional movement.
+1 when VI+ crosses above VI-; -1 when VI- crosses above VI+; 0 otherwise.
+1 = bullish vortex cross (uptrend onset), -1 = bearish vortex cross (downtrend onset).
period=14
Active short breakout state — price broke below the prior N-day lowest low. Bearish trend-follow entry, valid only when gates allow short-side trend risk.
Trigger history semantics changed 2026-05-11; rerun scoring before comparing this signal across older and newer runs.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 6 |
| Last trigger date | 2026-05-28 |
| Triggers in last 60 bars | 3 |
| Bars evaluated | 508 |
| Signal params | period=20, hold_bars=20 |
| Chart params | period=20 |
| Last bar value | 22.1510 |
| Last bar upper | 23.5460 |
| Last bar lower | 21.5800 |
Turtle-style breakout signal: enters long when price exceeds the highest high of the prior lookback window, short when price drops below the lowest low of the prior window. The channel is shifted to the prior bar to avoid lookahead. Holds the position state for a fixed number of bars. Cornerstone of trend-following strategies — works best in directional regimes and gets chopped up in range-bound markets.
+1 when the bar high exceeds the prior N-day high, held for hold_bars; -1 when the bar low breaks the prior N-day low, held for hold_bars. Ambiguous bars that exceed both sides are ignored on daily OHLC data.
+1 = long breakout state, -1 = short breakout state.
period=20, hold_bars=20
SAR flipped from below to above price — switch to short bias. Trail-stop short entries here.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 8 |
| Last trigger date | 2026-05-26 |
| Triggers in last 60 bars | 4 |
| Bars evaluated | 508 |
| Signal params | accel=0.02, max_accel=0.2 |
| Chart params | accel=0.02, max_accel=0.2 |
| Last bar value | 22.1510 |
| Last bar sar_bear | 22.7692 |
The Parabolic SAR (Stop and Reverse) plots a dot above or below price; when price crosses the SAR, the trend side flips and the dot jumps to the opposite side. The flip event itself is the trade trigger. Works well in clean trends, gets whipsawed in chop.
+1 on flip from above-price (bearish) to below-price (bullish); -1 on flip the other way.
+1 = bullish flip, -1 = bearish flip.
accel=0.02, max_accel=0.2
Technicals · Price Action
Above-average Price Action — more positives than negatives in this section.
Active Connors Double-7 pullback in an uptrend — buy the 7-day low, sell the 7-day high. Short-window mean-reversion setup.
Trigger history semantics changed 2026-05-11; rerun scoring before comparing this signal across older and newer runs.
| Score (0-100) | 73.08 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 9 |
| Last trigger date | 2026-05-22 |
| Triggers in last 60 bars | 2 |
| Bars evaluated | 508 |
| Signal params | lookback=7, regime_ma=200 |
| Last bar value | 22.1510 |
While price is above its 200-day MA (uptrend regime), buy when today's close is the lowest in 7 sessions; exit when today's close is the highest in 7 sessions. A simple, robust short-term mean-reversion system — works because pullbacks within an uptrend tend to be shallow and quickly retraced. Symmetrically, the bearish variant short-sells 7-day highs in downtrends.
+1 on entry day (new 7-day low above regime); held until exit on new 7-day high; back to 0 on exit.
+1 = pullback-buy state active, 0 = flat.
lookback=7, regime_ma=200
No engulfing reversal in the recent window — no two-candle shift in control has printed.
| Score (0-100) | 49.98 |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 150 |
| Last trigger date | 2025-10-29 |
| Triggers in last 60 bars | 0 |
| Bars evaluated | 508 |
| Signal params | prior_trend_window=5 |
| Last bar value | 22.1510 |
Bullish engulfing: a down candle followed by an up candle whose real body fully covers the prior real body. Bearish engulfing is the mirror. This implementation also checks prior_trend_window so the body engulfment is treated as a reversal after a move, not just another wide candle inside noise.
+1 when an up real body engulfs the prior down real body after a downtrend; -1 when a down real body engulfs the prior up real body after an uptrend.
+1 = bullish engulfing reversal, -1 = bearish engulfing reversal.
prior_trend_window=5
Price wicked into a Fibonacci support level and closed back above it — the level held. Trend-continuation buy zone with the rejection candle itself as the confirmation.
| Score (0-100) | 96.97 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 1 |
| Last trigger date | 2026-06-04 |
| Triggers in last 60 bars | 16 |
| Bars evaluated | 508 |
| Signal params | swing_lookback=60, levels=[0.236,0.382,0.5,0.618,0.786], atr_mult=0.5, atr_period=14 |
| Last bar value | 22.1510 |
Identifies the most recent significant swing high and low, projects the standard Fibonacci levels (23.6%, 38.2%, 50%, 61.8%, 78.6%) across the swing, and fires only when price rejects off one of those levels back in the prior-trend direction. In an active uptrend the trigger fires when a bar's low pierces a Fib support by up to 0.5 ATR and closes back above it; in a downtrend the mirror case fires at Fib resistance. A 2×ATR swing-range floor suppresses emission inside noisy consolidations where every level sits within one ATR of every other. Fibonacci levels are self-fulfilling support/resistance — heavily watched by chart-driven traders, so rejections at them tend to act as decision points whether the underlying ratios mean anything or not.
+1 in an uptrend when the bar's low pierces a Fib support (within atr_mult x ATR) and the close finishes above it. -1 in a downtrend when the bar's high pierces a Fib resistance and the close finishes below it. 0 otherwise.
+1 = bullish rejection at Fib support, -1 = bearish rejection at Fib resistance, 0 = no rejection event.
swing_lookback=60, levels=[0.236,0.382,0.5,0.618,0.786], atr_mult=0.5, atr_period=14
Standard H&S confirmed — three-peak topping pattern that broke its neckline down. Conventional measured-move target is the head-to-neckline distance projected below the neckline.
| Score (0-100) | 43.52 |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 38 |
| Last trigger date | 2026-04-13 |
| Triggers in last 60 bars | 1 |
| Bars evaluated | 508 |
| Signal params | shoulder_tol=0.01, head_prom=0.03 |
| Last bar value | 22.1510 |
Bearish head-and-shoulders: a left shoulder, a higher center peak (head), and a right shoulder of comparable height to the left, broken by a decisive close below the neckline (the line connecting the two intervening troughs). The inverse pattern — three troughs with a deeper middle and an upward neckline break — is bullish. Among the most-watched and most-cited topping/bottoming patterns in classical chart analysis.
+1 at neckline break of inverse-H&S; -1 at neckline break of standard H&S.
+1 = bullish inverse H&S confirmed, -1 = bearish H&S confirmed.
shoulder_tol=0.01, head_prom=0.03
Price tagged a key MA and bounced — moving average held as support. Trend-continuation entry, target the prior swing high.
| Score (0-100) | 96.01 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 0 |
| Last trigger date | 2026-06-05 |
| Triggers in last 60 bars | 11 |
| Bars evaluated | 508 |
| Signal params | ma_periods=[50,200], atr_mult=0.5, atr_period=14 |
| Last bar value | 22.1510 |
| Last bar sma50 | 22.1150 |
| Last bar sma200 | 19.9100 |
When price comes within an ATR-relative band of a key moving average (typically 50- or 200-period) and reverses without closing through it, the MA is acting as support (in an uptrend) or resistance (in a downtrend). The cleanest trend-continuation entry — buy the pullback to a rising MA, sell the rally to a falling MA. The proximity band is sized as 0.5 × Wilder ATR(14), so a high-volatility name and a quiet utility get proportionally-scaled bands instead of a fixed percentage that fires constantly on one and almost never on the other. Failure of the rejection (a clean close through) is itself meaningful and often signals a regime change.
+1 when price prints a low near the MA in an uptrend and closes back above; -1 when price prints a high near the MA in a downtrend and closes back below.
+1 = bullish MA rejection (support held), -1 = bearish MA rejection (resistance held).
ma_periods=[50,200], atr_mult=0.5, atr_period=14
Long lower wick rejected the prior downswing — buyers stepped in at the low. Reversal-up candle, strongest at structural support.
| Score (0-100) | 51.49 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 60 |
| Last trigger date | 2026-03-11 |
| Triggers in last 60 bars | 0 |
| Bars evaluated | 508 |
| Signal params | body_max=0.33, wick_min=0.67, prior_trend=5 |
| Last bar value | 22.1510 |
A candlestick has a real body (open-to-close distance) and wicks (the excursions from the body to the high and low). A pin bar requires a small real body, one dominant rejection wick, and a prior swing in the opposite direction. Bullish pin: long lower wick after a downtrend, body near the top — price probed lower and was rejected. Bearish pin: long upper wick after an uptrend, body near the bottom. Most reliable at structural levels.
+1 when body/range <= body_max, lower wick/range >= wick_min, upper wick is tiny, and prior_trend confirms a downswing; -1 for the mirrored upper-wick rejection after an upswing.
+1 = bullish reversal candle, -1 = bearish reversal candle.
body_max=0.33, wick_min=0.67, prior_trend=5
No completed star pattern recently — the three-candle structure isn't formed.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | — |
| Bars since trigger | — |
| Last trigger date | — |
| Triggers in last 60 bars | 0 |
| Bars evaluated | 508 |
Morning star (bullish): a large down real body, a small-body middle candle (the star) below the first body, and a bullish third candle that closes back into the first body by the configured penetration. Evening star is the bearish mirror at a top. The three-candle structure is more reliable than a single doji because it includes follow-through confirmation.
+1 on confirmed morning star; -1 on confirmed evening star. middle_body_max controls the star body's maximum size; penetration controls how far bar three must close into bar one's body.
+1 = morning star (bullish reversal), -1 = evening star (bearish reversal).
middle_body_max=0.3, penetration=0.5
Price retested a prior high and rolled — multi-top resistance confirmed. The rejected level is distribution; failure to break it warns of a top.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 20 |
| Last trigger date | 2026-05-07 |
| Triggers in last 60 bars | 4 |
| Bars evaluated | 508 |
| Signal params | peak_count=2, tolerance=0.01, min_sep=20 |
| Last bar value | 22.1510 |
Finds two or more pivot highs (tops) or lows (bottoms) within a price tolerance and minimum bar separation. Confirmed multi-bottom is bullish — the price level repeatedly defended is acting as support, suggesting a base. Multi-top is bearish — the level repeatedly rejected is acting as resistance, suggesting distribution. Pattern strength rises with the number of touches and the time between them.
+1 at confirmation of a multi-bottom (price retests prior low and holds); -1 at confirmation of a multi-top.
+1 = multi-bottom (support pattern), -1 = multi-top (resistance pattern).
peak_count=2, tolerance=0.01, min_sep=20
Outside-range bar after an uptrend closed down — sellers absorbed the prior rally. Reversal-down pattern.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 5 |
| Last trigger date | 2026-05-29 |
| Triggers in last 60 bars | 3 |
| Bars evaluated | 508 |
| Signal params | window=10 |
| Last bar value | 22.1510 |
Two consecutive non-overlapping windows where the second window's high is above the first's high AND the second's low is below the first's low (an outside range). Reads as a reversal signal off the prior trend: an outside-range bar that closes against the prior direction is a structural shift in supply and demand, not noise.
+1 if prior trend was down and current outside-range closes higher than it opens; -1 in the symmetric down-reversal case.
+1 = bullish outside reversal, -1 = bearish outside reversal.
window=10
Decisive close below an upward trendline — support line gave way. Regime-change candidate.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 5 |
| Last trigger date | 2026-05-29 |
| Triggers in last 60 bars | 10 |
| Bars evaluated | 508 |
| Signal params | lookback=60, min_touches=3 |
| Last bar value | 22.1510 |
Fits a trendline through pivot points and flags decisive closes through the line. Distinguishes a clean break (close violates the line) from a wick-test (intra-bar tag that closes back inside the trend). Trendline breaks are early-warning regime-change signals — the prior trend's structure has been violated, and the next leg may move in the opposite direction.
+1 on close above a downward trendline; -1 on close below an upward trendline.
+1 = bullish breakout above resistance line, -1 = bearish breakdown below support line.
lookback=60, min_touches=3
Rising wedge resolved down — compression broke in favor of sellers. Continuation entry on the breakdown retest.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 12 |
| Last trigger date | 2026-05-19 |
| Triggers in last 60 bars | 17 |
| Bars evaluated | 508 |
| Signal params | lookback=40, min_touches=3 |
| Last bar value | 22.1510 |
A wedge is a price compression where two trendlines converge. Rising wedge (both lines sloping up but the upper less steep than the lower) typically resolves down — price runs out of room as buyers exhaust. Falling wedge (both lines sloping down with the lower less steep) typically resolves up. Compressions resolve eventually; the direction is what the wedge predicts.
+1 on confirmed break above falling wedge; -1 on confirmed break below rising wedge.
+1 = bullish wedge resolution, -1 = bearish wedge resolution.
lookback=40, min_touches=3
Technicals · Volume
Mixed Volume — roughly balanced strengths and weaknesses.
No climax bar in the recent window — volume profile is unremarkable.
| Score (0-100) | 50.27 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 94 |
| Last trigger date | 2026-01-21 |
| Triggers in last 60 bars | 0 |
| Bars evaluated | 508 |
| Signal params | vol_ma=20, spike_mult=2, body_range_max=0.5 |
| Chart params | vol_ma=20, spike_mult=2 |
| Last bar value | 100.0000 |
| Last bar sma | 250.0000 |
| Last bar threshold | 500.0000 |
Identifies bars whose volume is well above their recent average AND whose body is small relative to the bar's true range. The classic 'climax' shape: an exhaustion bar where heavy participation produced very little net price change, often marking short-term turning points after a directional run. Bullish climax (capitulation) prints near the low of the bar; bearish climax (distribution) prints near the high.
+1 (long-side capitulation) when the climax bar prints near its low; -1 (distribution) when it prints near its high.
+1 = capitulation/buying climax (potential reversal lower-to-higher), -1 = distribution/selling climax (potential reversal higher-to-lower).
vol_ma=20, spike_mult=2, body_range_max=0.5
A/D rolled below its trailing average — distribution is winning. Often leads price weakness by several bars.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 5 |
| Last trigger date | 2026-05-29 |
| Triggers in last 60 bars | 7 |
| Bars evaluated | 508 |
| Signal params | sma_period=20 |
| Chart params | sma_period=20 |
| Last bar value | 288614.7093 |
| Last bar sma | 288852.8778 |
A/D is OBV's smarter cousin: each bar contributes a fraction of its volume based on where the close sits inside the bar's high-low range (close near high = full positive volume, close near low = full negative). Builds a running cumulative line whose slope reads as 'is money flowing in or out under the surface?'. Diverging from price the same way OBV does — but typically smoother because the per-bar weight already discounts indecisive (mid-range close) bars.
+1 when the A/D line crosses above its lookback-period SMA from below (fresh inflow); -1 when it crosses below from above (fresh outflow); 0 otherwise.
+1 = bullish A/D regime onset, -1 = bearish A/D regime onset, 0 = no fresh cross.
sma_period=20
CMF crossed below -0.05 — closes are dragging toward bar lows on volume. Net distribution; often precedes price drops by several sessions.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 2 |
| Last trigger date | 2026-06-03 |
| Triggers in last 60 bars | 7 |
| Bars evaluated | 508 |
CMF takes the same close-location-in-range volume weighting that drives A/D, sums it across a 20-bar window, and divides by total volume in that window — yielding a normalized score between -1 and +1. Above +0.05 typically reads as net accumulation, below -0.05 as net distribution. Unlike the unbounded A/D line, CMF's normalization makes cross-ticker comparison meaningful.
+1 when CMF crosses up through +0.05 (net accumulation onset), -1 when CMF crosses down through -0.05 (net distribution onset), 0 otherwise.
+1 = bullish flow regime onset, -1 = bearish flow regime onset, 0 = mid-band (no decisive flow tilt).
period=20
Rally running on falling volume — buyers losing conviction. The up move is being maintained by lack of supply rather than fresh demand. Sell-into-strength setup.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 3 |
| Last trigger date | 2026-06-02 |
| Triggers in last 60 bars | 30 |
| Bars evaluated | 508 |
| Signal params | trend_window=20 |
| Chart params | trend_window=20 |
| Threshold mid | 50.000 |
| Indicator scale | 0.00 – 100.00 |
| Last bar value | 82.9363 |
| Last bar volume | 0.0513 |
| Last bar close_slope | 49.3363 |
| Last bar volume_slope | 50.0000 |
Trends backed by declining volume tend to lose conviction. The signal compares the slope of price against the slope of volume over a rolling window: if price keeps moving but volume is shrinking, fewer participants are committed to the move. Often precedes a stall or reversal because the move is running on inertia rather than fresh capital.
+1 when price is rising but volume slope is negative (weak rally); -1 when price is falling but volume slope is negative (weak decline / potential reversal).
+1 = weak uptrend (sell into strength), -1 = weak downtrend (cover or buy into weakness).
trend_window=20
Force Index is below zero - volume-weighted selling pressure is dominant.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 0 |
| Last trigger date | 2026-06-05 |
| Triggers in last 60 bars | 60 |
| Bars evaluated | 508 |
| Signal params | period=13 |
| Chart params | period=13 |
| Last bar value | -26.2967 |
Alexander Elder's Force Index multiplies the bar-over-bar price change by volume and smooths the result with a 13-period EMA, combining direction, extent, and conviction of a move into one oscillator. While the smoothed Force Index is above zero, buyers are exerting net force (bullish); while it is below zero, sellers are (bearish). Because it weights price moves by volume, it distinguishes conviction-backed moves from thin ones.
+1 while the smoothed Force Index is above zero; -1 while it is below zero; NaN during EMA warmup.
+1 = net buying force while EFI > 0, -1 = net selling force while EFI < 0, NaN = EMA warmup period.
period=13
Distribution beginning even as price breaks higher — smart money may be quietly exiting into strength. Reversal-down confirmation tell.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 12 |
| Last trigger date | 2026-05-19 |
| Triggers in last 60 bars | 2 |
| Bars evaluated | 508 |
| Signal params | pivot_window=5, lookback=60 |
| Chart params | pivot_window=5, lookback=60 |
| Threshold mid | 50.000 |
| Indicator scale | 0.00 – 100.00 |
| Last bar value | 98.8894 |
| Last bar price | 82.9363 |
OBV cumulates signed volume — adds volume on up days and subtracts it on down days. Rising OBV reflects accumulation, falling OBV distribution. Same pivot-pair divergence rule as RSI/MACD: when price makes a new low but OBV doesn't, big-money has stopped selling at the lows. When price makes a new high but OBV lags, the rally lacks volume confirmation — distribution may be quietly underway.
+1 at right-hand pivot of (price lower-low, OBV higher-low); -1 at right-hand pivot of (price higher-high, OBV lower-high).
+1 = bullish OBV divergence, -1 = bearish OBV divergence.
pivot_window=5, lookback=60
Technicals · Volatility
Strong Volatility — most metrics are scoring well above the professional bands' midpoints.
Active long mean-reversion held — price tagged the lower band, exits at the midline. Hold until close back at the centre.
Trigger history semantics changed 2026-05-11; rerun scoring before comparing this signal across older and newer runs.
| Score (0-100) | 79.19 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 5 |
| Last trigger date | 2026-05-29 |
| Triggers in last 60 bars | 3 |
| Bars evaluated | 508 |
| Signal params | period=20, std=2 |
| Chart params | period=20, std=2 |
| Last bar value | 22.1510 |
| Last bar upper | 23.7134 |
| Last bar middle | 22.5961 |
| Last bar lower | 21.4789 |
Enters +1 when close ≤ lower band, holds until close ≥ middle band. Symmetric short-side state. Captures reversion-to-mean trades inside Bollinger bands — the trade is the move from the band back to the centre, not the breakout. Best in trending-but-noisy regimes where pullbacks cleanly retrace to the midline.
+1 enter on close ≤ lower band, exit on close ≥ middle. -1 enter on close ≥ upper, exit on close ≤ middle.
+1 = long mean-reversion held, -1 = short mean-reversion held, 0 = flat.
period=20, std=2
Price closed back inside the bands from below — short-term reversion-long signal. Stretched-down move snapping back.
| Score (0-100) | 83.80 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 4 |
| Last trigger date | 2026-06-01 |
| Triggers in last 60 bars | 5 |
| Bars evaluated | 508 |
| Signal params | period=20, std=2 |
| Chart params | period=20, std=2 |
| Last bar value | 22.1510 |
| Last bar upper | 23.7134 |
| Last bar middle | 22.5961 |
| Last bar lower | 21.4789 |
Fires on the bar where the close returns inside the bands after the prior close was outside. Long reentry from below the lower band is a mean-reversion long trigger; short reentry from above the upper band is a mean-reversion short trigger. The reentry — not the initial breakout — is the actual signal, because it confirms the move is reversing back toward the mean.
+1 when prior close < lower band and current close inside; -1 when prior close > upper band and current close inside.
+1 = long-side reentry from oversold, -1 = short-side reentry from overbought.
period=20, std=2
Mass Index reversal bulge in a down context - range expansion then contraction warns the downtrend may be ending.
| Score (0-100) | 56.95 |
|---|---|
| Weight | 1.000× |
| Last trigger value | 1.000 |
| Bars since trigger | 36 |
| Last trigger date | 2026-04-15 |
| Triggers in last 60 bars | 1 |
| Bars evaluated | 508 |
| Signal params | ema_fast=9, period=25, bulge_threshold=27, signal_threshold=26.5 |
| Chart params | fast=9, slow=25, bulge_threshold=27, signal_threshold=26.5 |
| Last bar value | 24.4720 |
Donald Dorsey's Mass Index sums a ratio of two EMAs of the high-low range to detect reversals through range expansion rather than price direction. The classic 'reversal bulge' fires when the index rises above 27 (bulge_threshold) and then falls back below 26.5 (signal_threshold). The screener pairs the bulge event with a closing-price trend-context heuristic to assign a directional reversal call.
+1 / -1 on a reversal bulge (Mass Index rises above 27 then drops below 26.5), with the sign set by the prevailing trend context; 0 otherwise.
+1 = bullish reversal bulge (reversal up from a downtrend), -1 = bearish reversal bulge (reversal down from an uptrend), 0 = no bulge.
ema_fast=9, period=25, bulge_threshold=27, signal_threshold=26.5
Close pierced the lower Keltner band — a volatility-confirmed thrust lower. Highest-quality continuation read in a downtrend; less reliable in chop.
| Score (0-100) | — |
|---|---|
| Weight | 1.000× |
| Last trigger value | -1.000 |
| Bars since trigger | 6 |
| Last trigger date | 2026-05-28 |
| Triggers in last 60 bars | 7 |
| Bars evaluated | 508 |
| Signal params | ema_period=20, atr_period=10, multiplier=2 |
| Chart params | ema_period=20, atr_period=10, multiplier=2 |
| Last bar value | 22.1510 |
| Last bar ema | 22.3597 |
| Last bar upper | 22.8465 |
| Last bar lower | 21.8729 |
Keltner Channels wrap an EMA centerline (default 20 bars) with bands at ±N × ATR (default 2 × ATR(10)). Compared to Bollinger Bands, the ATR-driven width is smoother and less prone to the 'rubber band' contraction-then-expansion that can mislead Bollinger Squeeze readers. Breakouts through the upper/lower band frequently mark trend-continuation thrusts when the centerline slope agrees.
+1 when close pierces the upper band from below (bullish thrust), -1 when close pierces the lower band from above (bearish thrust), 0 otherwise.
+1 = bullish band break, -1 = bearish band break, 0 = inside the channel.
ema_period=20, atr_period=10, multiplier=2
Risk Gates
1 guard active, 18 signals gated.
Technical
Signals being gated
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Price is above the long-term moving average; this gate blocks bearish entries as counter to the primary trend regime.
Blocks signals that oppose the long-term moving-average regime.
This is a market-regime permission rule. It is not a buy signal or a sell signal by itself.
Technical
Blocks counter-regime signals only when the MA crossover agrees with the long-term regime.
This is a confirmation gate. It only blocks when the long-term regime filter points the same way.
Fundamental
Bottom-band Altman Z blocks bullish signals — distress risk.
This is a distress-risk gate. It should be treated with extra care outside non-financial operating companies.
Industry note: Altman Z-Score is most reliable for non-financial operating companies. Banks, insurers, REITs, and other financial balance sheets need sector-specific solvency checks.
Fundamental
Bottom-band Beneish M blocks bullish signals — accounting-quality risk.
This is an earnings-manipulation risk gate. It is not a fraud finding; it tells the reader to verify the accounting.
Industry note: Beneish M-Score can be noisy for firms with unusual accounting structures. Use the raw components before making a final call.
Fundamental
Low cash can matter in stress. Very high cash can be capital-allocation context rather than a reason to block a bullish signal.
Industry note: Cash Ratio is less useful for banks and insurers because cash and liquid assets are part of their operating model.
Fundamental
Low readings suggest liquidity pressure. Very high readings may indicate inefficient working capital, but they should not be treated like distress.
Industry note: Liquidity ratios are less useful for banks and insurers because their balance sheets are structured differently.
Fundamental
High debt-to-assets blocks bullish signals — balance-sheet leverage risk.
This leverage gate is more stable than debt-to-equity when book equity is small or distorted.
Industry note: Financial firms require sector-specific capital ratios, so debt-to-assets should not be the only risk check there.
Fundamental
High debt-to-equity blocks bullish signals — leverage risk.
This leverage gate is useful, but book equity can be distorted by buybacks, accumulated losses, or sector accounting.
Industry note: Debt-to-equity is fragile when equity is small or negative. Confirm with debt-to-assets or net debt to EBITDA.
Fundamental
Weak interest coverage blocks bullish signals — debt-service risk.
This is a debt-service gate. It asks whether operating earnings can cover interest expense.
Industry note: Interest coverage is less meaningful for banks and insurers because interest expense is part of the operating model.
Fundamental
High long-term D/E blocks bullish signals — structural-leverage risk.
This gate focuses on structural balance-sheet debt rather than all liabilities.
Industry note: Book equity distortions can make this ratio noisy. Confirm with debt-to-assets or net debt to EBITDA.
Fundamental
High net debt / EBITDA blocks bullish signals — credit-leverage risk.
This is a credit leverage gate. Tolerable levels vary by industry and cash-flow stability.
Industry note: Utilities and telecom companies can often carry more debt than asset-light businesses. Banks and insurers need different leverage measures.
Fundamental
Bottom-band Piotroski F blocks bullish signals — fundamental-quality risk.
This is strongest as a value-stock quality filter. It should not be read as a universal bankruptcy test.
Industry note: Piotroski is most useful when the bullish case is value-led. For high-quality compounders, inspect the failed criteria before treating it as decisive.
Fundamental
This liquidity check strips inventory out of current assets before comparing to current liabilities.
Industry note: Quick Ratio is less useful for banks and insurers because their balance sheets are structured differently.
Fundamental
High positive accruals are the main concern. Large negative readings can also deserve review, but usually should not block by themselves.
Technical
Mutes all technical signals within the earnings announcement window when earnings dates are available.
This gate suppresses technical signals within ±3 days of an earnings announcement to avoid contamination from announcement noise and post-earnings drift. Returns unknown state when earnings date data is not available.
Technical
High-vol regime mutes mean-reversion signals; low-vol regime mutes breakout signals.
This gate checks whether recent realized volatility is in its historical top or bottom quartile. High-vol regimes suppress mean-reversion signal reliability; low-vol regimes suppress breakout signal reliability.
Technical
Weak trend strength blocks trend-following signals in either direction.
This is a market-condition gate. It targets trend-following signals, especially breakout-style signals, when the tape is choppy.