Methodology

Last updated: November 7, 2026

Bullish Gator uses structured, source-backed inputs to present Technical, Fundamental, Sentiment, and Overall views. Scores are analytical indicators, not predictions, recommendations, or guarantees. A score can change as data changes or becomes available.


Technical Score

The Technical Score is a 0 to 100 display of price-and-volume-based market behavior. It is a weighted blend of eight end-of-day inputs: price versus the 20-day moving average, price versus the 50-day moving average, price versus the 200-day moving average, the 50/200-day Golden or Death cross state, the MACD line versus its signal, the RSI(14) momentum reading, the Bollinger-band position, and recent volume versus the 20-day average. Trend-family inputs (short, intermediate, and long moving averages plus the Golden/Death state) carry 60% of the weight, momentum inputs (MACD and RSI) 25%, volume 10%, and Bollinger 5%. Each input is a continuous reading from -1 to +1, so distance counts as well as direction; only the cross state is a plain +1 or -1. RSI above 75 is tapered back toward zero. Weights re-normalize when an input is unavailable. The blend is shown on the 0 to 100 scale, where 72 or higher is Bullish, 50 or lower is Bearish, and anything in between is Neutral. Prices and indicators use the Tiingo adjusted close, which is adjusted for splits and dividends. The score is designed to describe recent market conditions; it does not forecast future price movement.


Fundamental Score

The Fundamental Score is a weighted blend of three complementary reads: a multi-period revenue and net-income Growth trend from public-company filing data, a modified 9-test Piotroski F-Score capturing balance-sheet Quality (profitability, cash-flow strength, leverage-and-liquidity, and operating-efficiency signals), and an Altman Distress Risk. The Piotroski tests use annual filing data, and a test that lacks data shows as N/A. The Altman formula is routed by GICS sector so each company is evaluated by the model that fits its structure best: Utilities, Communication Services, Financials, Real Estate, and Materials use Altman Z”-Score (Altman 1983 non-manufacturing variant, 4 factors: working-capital/assets, retained-earnings/assets, EBIT/assets, book-value-equity/liabilities). All other sectors use the original 1968 Altman Z-Score (5 factors including market-cap/liabilities and sales/assets). This routing follows published literature and prevents the known Z misdiagnosis of capital-intensive non-manufacturers (utilities, telecoms, insurance brokers) as Distress when their leverage is a feature of their business model, not a weakness. Each sub-read becomes a continuous 0 to 100 score, and the three are combined with fixed weights: Growth 20%, Quality 40%, Distress 40%. On that scale, 72 or higher is Bullish, 50 or lower is Bearish, and anything in between is Neutral. When a sub-read is unavailable (for example, many banks and real estate companies have no Altman figure), its weight is shared across the sub-reads that remain. When SEC XBRL lags a completed fiscal year, current SEC filings remain primary; API Ninjas fills only eligible gaps.


Fundamental valuation convention

Our P/E and EPS figures match the methodology used by Yahoo Finance, Google Finance, and Bloomberg: TTM Diluted (trailing twelve months, diluted shares). TTM P/E uses the most recent four completed quarters of diluted earnings. FY-annual P/E uses the most recently closed fiscal year's annual diluted EPS. Each page discloses the price-observation date and the EPS period end-date, so readers can reconcile against SEC filings.

Diluted EPS uses SEC XBRL and current SEC filings first. When needed, a validated four-quarter SEC series is used; API Ninjas fills only eligible gaps. A TTM fallback sourced from API Ninjas is identified on the page.

Reconciliation safeguard: API Ninjas never replaces an SEC figure for the same window. When no reliable TTM figure can be built, the page shows N/M and keeps the fiscal-year figures beside it.


Sentiment Score

The Sentiment Score is a 0 to 100 reading of recent coverage produced by an AI judge, not a weighted-counts formula. The judge reads a bounded set of evidence per company: recent news articles from Tiingo News and the GDELT Global Knowledge Graph (most listed articles come from Tiingo), Internet Archive TV News Archive segments, and videos published on this site in the past 7 days. It returns a 0 to 100 composite that reflects the direction and conviction of that evidence, and a short rationale summarizing what moved the read. There is no fixed formula: the judge weighs news above TV and TV above video, treats GDELT tone as supporting context, and rates the collection as a whole. The rating follows the composite with the same cut-offs as every other score: 72 or higher is Bullish, 50 or lower is Bearish, and anything in between is Neutral. Each day’s sentiment score is blended with the past week: 60% today, 40% the average of up to 7 prior runs. A rating changes when the blended score clears a cut-off by 3 points, so small daily swings do not flip it, and the score shown stays on the same side of the cut-off as its rating. When no coverage is found, the page shows a Neutral rating with no number. The four Signal Breakdown cards score each source on its own with the same cut-offs; they are shown for context and do not add up to the composite. Each listed item shows its date. Judge responses are cached by content hash, so the same inputs return the same judge score. The judge model is served by Azure OpenAI; the inputs it sees are per-item summaries and publisher labels, not raw article bodies.


Overall Score

The Overall view combines the three component scores using the current Stock Hub weighting: 47.5% Fundamental, 37.5% Technical, and 15% Sentiment. Each component is a continuous 0 to 100 score (not a rounded Bullish, Neutral, or Bearish label), so the Overall is a weighted average of the real numbers. For a worked example, a Fundamental of 86, a Technical of 83, and a Sentiment of 72 produce an Overall of about 83. The resulting Overall is classified with the same unified threshold used on every pillar: 72 or higher is Bullish, 50 or lower is Bearish, and anything in between is Neutral. If a pillar is unavailable, its weight renormalizes across the pillars that do have data so the Overall still fits on a 0 to 100 scale. The Fundamental component is the blended Growth/Quality/Distress read described above; the Technical component is the weighted composite of moving-average, momentum, and volume inputs described above; the Sentiment component comes from the per-company Sentiment read. If there is no qualifying Fundamental read, the Fundamental component contributes no positive or negative value rather than being assumed Neutral.


Market Mood and Market Regime

Market Mood is a site-wide read of the covered universe. It compares the share of stocks with a Bullish Overall rating with the share rated Bearish: it reads Bullish when the Bullish share is more than 10 percentage points above the Bearish share, Bearish in the opposite case, and Neutral otherwise.

Market Regime compares SPY's end-of-day price with its 200-day moving average. It is market context and does not affect ratings.


Data, cadence, and limitations

Most market-data and score pages are scheduled to refresh daily, generally using the latest available end-of-day and public-filing information. Earnings, news, television, and video inputs have their own source and collection windows. Source outages, market holidays, filing delays, rate limits, and processing failures can delay or limit an update. Bullish Gator does not promise real-time data or uninterrupted coverage.

See Data Sources for the providers and public records used in current production workflows. Because data can be corrected, restated, delayed, or incomplete, readers should independently verify material facts before making a financial decision.


Editorial independence

Scores and coverage are not for sale. Bullish Gator does not accept paid coverage, favorable ratings in exchange for compensation, or undisclosed promotional placement. Read the Financial Disclaimer before relying on site content.