Fundamentals
—
UnscoredEDGAR + yfinance fundamentals, percentile-ranked within the universe.
Fundamentals
EDGAR + yfinance fundamentals, percentile-ranked within the universe.
Technicals
Recency-weighted directional read across 27 fiscal_wizard signals.
Click any of the rows above to see the metrics or signals that fed into it — including the formula behind each one and what the current value means for MSFT.
Weak Valuation — most metrics in this section are scoring below the universe median.
What it measures Capital-structure-agnostic valuation multiple. Useful for comparing levered companies because it adds debt and removes cash from the numerator and uses pre-interest, pre-tax, pre-depreciation earnings in the denominator.
Formula
EV = market_cap + total_debt + preferred_equity + minority_interest - cash; EV/EBITDA = EV / ebitda_ttm
What it measures Valuation expressed against the cash actually available to all capital providers. Often more honest than EV/EBITDA when capex is meaningful relative to D&A.
Formula
EV/FCF = (market_cap + total_debt - cash) / free_cash_flow_ttm
For MSFT Cheap on free cash flow - confirm FCF is sustainable and not propped up by working capital release.
What it measures Adjusts the numerator for debt and cash so heavily-levered or cash-rich companies are comparable. Particularly useful for cross-industry valuation work.
Formula
EV/Sales = (market_cap + total_debt - cash) / revenue_ttm
For MSFT Cheap on revenue when you account for the balance sheet.
What it measures How many dollars of book equity each share represents. Useful for asset-heavy businesses (banks, industrials) where book value approximates liquidation floor; less informative for asset-light franchises whose value is in intangibles.
Formula
P/B = market_cap / common_equity
For MSFT Trading near or below book - sometimes a margin of safety, sometimes a sign book value will be impaired.
What it measures Multiple of trailing-twelve-month earnings the market has assigned to the company. Lower means cheaper relative to current earnings power, but a single low P/E can also mean the market expects earnings to fall.
Formula
P/E = market_cap / net_income_ttm
For MSFT Cheap on current earnings - either an opportunity or a value trap if earnings are about to deteriorate.
What it measures Useful when earnings are negative or noisy (early-stage companies, restructurings). Works best within an industry because gross margin profiles vary wildly.
Formula
P/S = market_cap / revenue_ttm
For MSFT Cheap on revenue - investigate whether margins are structurally low or revenue quality is poor.
What it measures Divides P/E by the annualized EPS growth rate (in percent points). Below 1.0 is conventionally read as 'cheap relative to growth.' Sensitive to which growth window you use; can flip sign if earnings are negative.
Formula
PEG = (P/E) / eps_growth_3y_pct
Above-average Profitability — more positives than negatives in this section.
What it measures Productivity of the asset base. Combined with net margin, this is the DuPont decomposition of ROA: ROA = net_margin * asset_turnover.
Formula
Asset Turnover = revenue_ttm / average_total_assets
For MSFT Heavy assets needed per dollar of revenue - utilities, telecoms, capital goods.
What it measures Sanity-check on earnings quality. Persistently below 1 means working capital or capex is consuming earnings; persistently above 1 is unusual and may flag accounting conservatism or non-cash drags.
Formula
Cash Conversion = free_cash_flow_ttm / net_income_ttm
For MSFT Earnings quality is good - real cash arriving in step with reported income.
What it measures End-to-end conversion ratio: of every dollar of revenue, how much falls through to genuine free cash flow available to capital providers? More honest than net margin because it accounts for capex needed to maintain the business.
Formula
FCF Margin = (free_cash_flow_ttm / revenue_ttm) * 100
For MSFT Cash flowing through to owners - the hallmark of high-quality compounders.
What it measures FCF the business throws off relative to what you pay for the equity. Treats the equity as a perpetual claim on cash. Cyclicals can swing below zero in a downturn.
Formula
FCF Yield = (free_cash_flow_ttm / market_cap) * 100
For MSFT Strong cash income relative to price - attractive when growth doesn't have to do all the work.
What it measures First-line profitability measure - how much revenue is left after the direct cost of producing it. Stable gross margin suggests pricing power and low input-cost exposure.
Formula
Gross Margin = ((revenue_ttm - cogs_ttm) / revenue_ttm) * 100
For MSFT Strong unit economics - software, branded consumer, and IP-heavy businesses cluster here.
What it measures Operating margin minus interest, tax, and below-the-line items. Useful but noisy because tax rate and debt service distort year-to-year comparability.
Formula
Net Margin = (net_income_ttm / revenue_ttm) * 100
For MSFT Strong all-in profitability after every expense category.
What it measures Pre-capex version of cash conversion. Numbers persistently below 1 suggest accruals are doing the work; numbers persistently above 1 are a (mild) positive sign.
Formula
OCF/NI = operating_cash_flow_ttm / net_income_ttm
For MSFT Operating cash flow validates net income.
What it measures Captures the leverage between revenue and operating profit. Core test of whether a business converts sales into income at the operating level.
Formula
Operating Margin = (operating_income_ttm / revenue_ttm) * 100
For MSFT Pricing power and operating leverage - software and platform models commonly run above 30%.
What it measures Measures how productive the actual operating capital base is, independent of capital structure. The benchmark is the company's cost of capital - sustained ROIC above WACC creates value, below WACC destroys it.
Formula
NOPAT = operating_income_ttm * (1 - effective_tax_rate); ROIC = (NOPAT / average_invested_capital) * 100
What it measures Capital-efficiency measure that ignores how the assets are financed. Useful for comparing within a sector but biased low for asset-heavy businesses (banks, utilities) and high for asset-light ones.
Formula
ROA = (net_income_ttm / average_total_assets) * 100
For MSFT Assets are working hard - typical of asset-light, high-margin businesses.
What it measures Headline profitability metric. High ROE compounds book value if the business can reinvest at the same return. Beware of buybacks artificially inflating ROE by shrinking the denominator.
Formula
ROE = (net_income_ttm / average_common_equity) * 100
For MSFT Capital is being put to work effectively - sustainable when supported by real economic moats.
Above-average Balance Sheet — more positives than negatives in this section.
What it measures Strips out receivables and inventory, leaving only cash and equivalents over current liabilities. Stress-tests whether the business can meet obligations even if collections seize up.
Formula
Cash Ratio = cash_and_equivalents / current_liabilities
For MSFT Heavy cash backstop - common with profitable cash-rich franchises.
What it measures Whether the company can cover near-term obligations from near-term assets. Below 1.0 doesn't mean insolvent (cash flow can cover the gap) but is worth a closer look.
Formula
Current Ratio = current_assets / current_liabilities
For MSFT Comfortable liquidity buffer - large working-capital cushion.
What it measures How much the company funds itself with debt vs. equity. Higher leverage amplifies both returns and risks; the appropriate level varies wildly by industry.
Formula
Debt-to-Equity = total_debt / common_equity
For MSFT Capital structure is debt-heavy - amplifies equity returns but also stress in downturns.
What it measures Strips out short-term operating debt and revolver use to focus on permanent capital structure. Useful when comparing companies that fund working capital differently.
Formula
LT D/E = long_term_debt / common_equity
For MSFT Permanent debt is low - balance sheet flexibility for opportunistic deals.
Weak Income — most metrics in this section are scoring below the universe median.
What it measures Direct income from holding the share. Stable dividend yield often signals capital discipline; abnormally high yield can be a warning that the dividend isn't covered by FCF and may be cut.
Formula
Dividend Yield = (dividends_per_share_ttm / price) * 100
For MSFT Most of the return must come from price appreciation rather than income.
What it measures 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 being earnings can grow (or contract).
Formula
Earnings Yield = (net_income_ttm / market_cap) * 100
For MSFT You're earning a small income yield on the cap - the rest of the return has to come from growth.
Strong Composite — most metrics are scoring well above the universe median.
What it measures Five-factor distress signal originally calibrated for US public manufacturers. Above 3.0 is the conventional 'safe' zone, 1.8-3.0 is the grey zone, below 1.8 historically associates with elevated bankruptcy risk.
Formula
Z = 1.2X1 + 1.4X2 + 3.3X3 + 0.6X4 + 1.0X5; X1=working_capital/total_assets, X2=retained_earnings/total_assets, X3=ebit/total_assets, X4=market_cap/total_liabilities, X5=revenue/total_assets
What it measures Joseph Piotroski's score for distinguishing winners from losers among low-P/B stocks. Each of 9 questions answers 0 or 1; the more 'yes' answers, the higher quality the recent year-over-year improvements.
Formula
Sum of 9 binary indicators across profitability (ROA>0, CFO>0, ROA improving, CFO>NI), leverage (LT debt/assets falling, current ratio rising, no share issuance), and operating efficiency (gross margin rising, asset turnover rising)
For MSFT Clean fundamentals scorecard - profitability, leverage, and efficiency all moving the right way.
What it measures Richard Sloan's accruals-quality measure. Persistent positive accruals (NI exceeds OCF) tend to mean-revert, often via earnings disappointments. Magnitude over ~10% in either direction warrants closer accounting review.
Formula
Sloan = (net_income_ttm - operating_cash_flow_ttm) / average_total_assets
For MSFT Net income outpacing cash by an unusual amount - earnings quality may be deteriorating.
Insufficient data to score this section.
What it detects Buys oversold pullbacks within an established uptrend (price above the 200-day SMA). Holds while RSI(2) is below an exit threshold; exits when RSI(2) crosses above 60.
Trigger rule +1 when price is above regime_ma and RSI(2) drops below oversold; held while inside the trade; back to 0 when RSI(2) crosses above exit.
Parameters
period=2, oversold=10, exit=60, regime_ma=200
For MSFT Active pullback-short in an established downtrend — short-term pop into resistance fading.
What it detects Compares price pivots against the MACD histogram (MACD line minus signal line) at those same bars. Bullish divergence: price lower-low, histogram higher-low. Bearish divergence: price higher-high, histogram lower-high.
Trigger rule +1 at right-hand pivot of bullish divergence; -1 at right-hand pivot of bearish divergence; 0 otherwise.
Parameters
fast=12, slow=26, signal=9, pivot_window=5
For MSFT MACD histogram printing higher lows beneath lower lows in price — reversal-up tell.
What it detects When price prints a lower low while RSI prints a higher low at those same bars, momentum is improving even though price is still falling - a classic bullish divergence. The bearish mirror fires when price makes a higher high but RSI prints a lower high.
Trigger rule +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.
Parameters
period=14, pivot_window=5, lookback=60
For MSFT Momentum strengthening even as price prints lower lows — a reversal-up tell.
What it detects Bullish when %K crosses above %D while both lines are below the oversold threshold; bearish when %K crosses below %D while both are above overbought.
Trigger rule +1 on bullish cross in oversold; -1 on bearish cross in overbought; 0 otherwise.
Parameters
k=14, d=3, smooth=3, ob=80, os=20
For MSFT %K crossed down through %D from overbought — short-term sell trigger.
Insufficient data to score this section.
What it detects ADX (Average Directional Index) measures trend strength regardless of direction. Below ~20 historically associates with sideways/choppy markets unfavorable to trend strategies.
Trigger rule +1 while ADX is below the threshold (weak trend); 0 otherwise.
Parameters
period=14, weak_threshold=20
For MSFT ADX is above the weak threshold — trend strategies are workable.
What it detects Turtle-style breakout signal: enters long on a close above the highest high of the lookback window, short on a close below the lowest low. Holds the position for a fixed number of bars.
Trigger rule +1 on long entry, held for hold_bars; -1 on short entry, held for hold_bars.
Parameters
period=20, hold_bars=20
For MSFT Active long breakout state — close above the N-day highest high.
What it detects Composite trend system: bullish when price is above the cloud, tenkan crosses above kijun, and the cloud ahead is green. Bearish on the symmetric short-side configuration.
Trigger rule +1 on bullish trigger conditions, -1 on bearish, 0 otherwise.
Parameters
tenkan=9, kijun=26, senkou_b=52
For MSFT Ichimoku components disagree; no clean setup either direction.
What it detects Holds +1 while the fast moving average is above the slow one (bullish bias), -1 when below (bearish bias). Whipsaws in chop; works best when combined with a regime filter.
Trigger rule +1 while fast > slow, -1 while fast < slow.
Parameters
fast=5, slow=10, ma_type=ema
For MSFT Fast MA above slow MA — bullish bias state held.
What it detects The Parabolic SAR plots a stop-and-reverse dot above or below price; when price crosses the SAR, the trend side flips. The signal fires on the flip bar.
Trigger rule +1 on flip from above-price (bearish) to below-price (bullish); -1 on flip the other way.
Parameters
accel=0.02, max_accel=0.2
For MSFT SAR flipped from below to above price — switch to short bias.
What it detects Simplest possible regime filter: long-only when price is above its long-term MA, flat or short-only when below. Often used to gate other signals.
Trigger rule +1 while close > MA, -1 while close < MA.
Parameters
ma_period=200
For MSFT Regime filter is unset; no long-term bias gate active.
Insufficient data to score this section.
What it detects Open and close are nearly equal (tiny body, under ~5% of range) with comparable upper and lower wicks. Marks indecision; meaningful when it appears at trend extremes or after extended runs.
Trigger rule +1 on doji (the bar marks the indecision candle regardless of direction).
Parameters
body_max=0.05, wick_balance=0.3
For MSFT Indecision candle after a downtrend — buyers and sellers in balance, watch for follow-through.
What it detects 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.
Trigger rule +1 on entry day (new 7-day low above regime); held until exit on new 7-day high; back to 0 on exit.
Parameters
lookback=7, regime_ma=200
For MSFT Active short setup on the bearish mirror — fade the 7-day high in a downtrend.
What it detects Bullish engulfing: down candle followed by an up candle whose body fully covers the prior body. Bearish engulfing: up candle followed by a larger down candle covering the prior body. Strongest after a trend.
Trigger rule +1 on bullish engulfing after a downtrend; -1 on bearish engulfing after an uptrend.
Parameters
prior_trend_window=5
For MSFT No engulfing reversal in the recent window.
What it detects Identifies the most recent significant swing high and low, projects standard Fibonacci levels (23.6%, 38.2%, 50%, 61.8%, 78.6%), and tags bars where price interacts with one of those levels.
Trigger rule Reports the level price is closest to, in price units, when price is within the proximity band.
Parameters
swing_lookback=60, levels=[0.236,0.382,0.5,0.618,0.786]
For MSFT Price interacted with a key Fibonacci level on its way up — likely springboard or resistance to clear.
What it detects Bearish head-and-shoulders: left shoulder, higher head, right shoulder of comparable height to left, broken by a close below the neckline. Inverse pattern (three troughs) is bullish.
Trigger rule +1 at neckline break of inverse-H&S; -1 at neckline break of standard H&S.
Parameters
shoulder_tol=0.03, head_prom=0.02
For MSFT Inverse H&S confirmed — three-trough bottoming pattern that broke its neckline up.
What it detects When price comes within a small band of a key moving average (typically 50- or 200-period) and reverses without closing through it, the MA is acting as support (uptrend) or resistance (downtrend).
Trigger rule +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.
Parameters
ma_periods=[50,200], proximity=0.01
For MSFT Price tagged a key MA and bounced — moving average held as support.
What it detects Finds two or more pivot highs (tops) or lows (bottoms) within a price tolerance and minimum bar separation. Confirmed multi-bottom is bullish; multi-top is bearish.
Trigger rule +1 at confirmation of a multi-bottom (price retests prior low and holds); -1 at confirmation of a multi-top.
Parameters
peak_count=2, tolerance=0.02, min_sep=10
For MSFT Price retested a prior high and rolled — multi-top resistance confirmed.
What it detects A pin bar has a small real body (under ~30% of the bar's range) and a long wick (over ~60%) on one side, sticking out beyond the prior trend. Bullish pin: long lower wick after a downtrend. Bearish pin: long upper wick after an uptrend.
Trigger rule +1 for bullish pin (long lower wick, body near top, after downtrend); -1 for bearish pin.
Parameters
body_max=0.3, wick_min=0.6, prior_trend=5
For MSFT Long upper wick rejected the prior upswing — sellers stepped in at the high.
What it detects Morning star (bullish): big down candle, small-body middle, big up candle that closes well into the first body. Evening star is the bearish mirror at a top.
Trigger rule +1 on confirmed morning star; -1 on confirmed evening star.
Parameters
middle_body_max=0.3, penetration=0.5
For MSFT No completed star pattern recently.
What it detects 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.
Trigger rule +1 if prior trend was down and current outside-range closes higher than it opens; -1 in the symmetric down-reversal case.
Parameters
window=10
For MSFT Outside-range bar after a downtrend closed up — reversal-up reversal pattern.
What it detects Fits a trendline through pivot points and flags decisive closes through the line. Distinguishes a clean break from a wick-test by requiring the close to violate the line.
Trigger rule +1 on close above a downward trendline; -1 on close below an upward trendline.
Parameters
lookback=60, min_touches=2
For MSFT Decisive close above a downward trendline — resistance line gave way.
What it detects A wedge is a price compression where two trendlines converge. Rising wedge (both lines sloping up but upper less steep) typically resolves down; falling wedge resolves up.
Trigger rule +1 on confirmed break above falling wedge; -1 on confirmed break below rising wedge.
Parameters
lookback=40, min_touches=2
For MSFT Rising wedge resolved down — compression broke in favor of sellers.
Insufficient data to score this section.
What it detects 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.
Trigger rule +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).
Parameters
trend_window=20
For MSFT Decline running on falling volume — sellers losing conviction, reversal candidate.
What it detects OBV cumulates signed volume - rising OBV reflects accumulation, falling OBV distribution. Same pivot-pair rule as RSI/MACD divergence: when price makes a new low but OBV doesn't, big-money has stopped selling.
Trigger rule +1 at right-hand pivot of (price lower-low, OBV higher-low); -1 at right-hand pivot of (price higher-high, OBV lower-high).
Parameters
pivot_window=5, lookback=60
For MSFT Distribution beginning even as price breaks higher — smart money may be quietly exiting.
What it detects 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 that often marks short-term turning points.
Trigger rule +1 (long-side capitulation) when the climax bar prints near its low; -1 (distribution) when it prints near its high.
Parameters
vol_ma=20, spike_mult=2.5, body_range_max=0.4
For MSFT No climax bar in the recent window; volume profile is unremarkable.
Insufficient data to score this section.
What it detects Enters +1 when close <= lower band, holds until close >= middle band. Symmetric short-side state. Captures reversion-to-mean trades inside Bollinger bands.
Trigger rule +1 enter on close <= lower band, exit on close >= middle. -1 enter on close >= upper, exit on close <= middle.
Parameters
period=20, std=2
For MSFT Active short mean-reversion held — price tagged the upper band, exits at the midline.
What it detects Fires on the bar where the close returns inside the bands after the prior close was outside. Long reentry from below the lower band, short reentry from above the upper band.
Trigger rule +1 when prior close < lower band and current close inside; -1 when prior close > upper band and current close inside.
Parameters
period=20, std=2
For MSFT Price closed back inside the bands from above — short-term reversion-short signal.