Equity
Morningstar Migration
Introduction
Morningstar retired the Global Equity Data Feeds that supplied the US Fundamental Data dataset and replaced them with the Equity Data Feeds. On September 23, 2026, QuantConnect switched the dataset to the new feeds. The switch covers the entire history back to 1998, not just the data delivered from that day on, so a backtest you ran before the switch can produce a different result afterwards.
The two generations are not interchangeable. Morningstar recalculated many figures, changed the sign convention on others, dates the derived families by the filing that produced them, and delivers the price multiples daily instead of monthly. It also covers more companies and publishes data points the old feeds never carried, while some old series are gone.
The previous data is deprecated. QuantConnect serves one fundamental history, so there is no setting that keeps the old values alongside the new ones: the vendor no longer produces them, they cannot be corrected or extended, and running research on a feed that live trading no longer receives is worse than an unfamiliar backtest result. This page explains what changed so you can tell whether your strategy is affected and re-validate it.
What Changes
Of all the values that both generations carry, about one third differ. The reasons break down as follows:
| Reason | Share of the differences |
|---|---|
| Morningstar recalculated the figure | 78% |
| The sign convention changed | 15% |
| Rounding and small revisions | 7% |
The differences are not cosmetic. Where a value changed at all, 61% of the time it changed by more than 20%, and only 9% of the time by less than 1%. A screen with a hard threshold, such as a debt-to-equity ceiling or a minimum operating margin, selects a different set of companies on the new data.
The sign convention affects 19 properties, including CostOfRevenue, DepreciationAmortizationDepletion, InterestPaidSupplementalData, and AllowanceForLoansAndLeaseLosses. These are expenses and contra-asset lines that the old feeds delivered as negative numbers in some period windows and the new feeds deliver as positive numbers, or the reverse. A ratio you compute yourself from these lines flips with them, so check any custom calculation that adds or subtracts one of these fields rather than multiplying it.
Morningstar also renamed 44 fields, mapping the old line to a new one with a narrower or broader definition. AccruedInterestReceivable, for example, is now sourced from Accrued Interest Receivable Current, which matches the old series 93% of the time and is a current-asset subset of it. The properties keep their names in LEAN, so nothing breaks, but the figure behind the name is not always the same figure.
Affected Properties
The change is concentrated in the ratio families. The statements themselves move much less, and the reference and classification data barely move at all. The following table shows the share of shared values that differ in each root:
| Root | Values that differ |
|---|---|
ValuationRatios | 97% |
EarningRatios | 82% |
OperationRatios | 76% |
FinancialStatements | 23% |
CompanyProfile | 11% |
EarningReports | 11% |
AssetClassification | 6% |
SecurityReference | 4% |
CompanyReference | 2% |
The ValuationRatios figure overstates the disruption a little: the price multiples are recomputed every day instead of once a month, so most days now carry a fresh value where the old feeds repeated last month's. The number still tells you what matters, which is that a universe ranked on PERatiope_ratio, PriceToBookprice_to_book, or any other multiple selects different companies on the new data almost every day.
If your algorithm reads only the statement lines and the classification fields, for example a universe that filters on MarketCapmarket_cap and sector, the impact is small but not zero. If it reads the ratios, expect a materially different backtest.
Reporting Dates
The largest behavioral change is not a number, it is a date. The old feeds dated the ratio, growth, per-share, and average families at the end of the reporting period. The figures behind them were not public then. They became public weeks later, when the company filed the statement they are derived from.
Apple's return on assets for fiscal 2021 is a typical case. The old feeds dated it September 30, 2021, the day the fiscal year ended, but the net income and total assets it divides were filed on October 29, 2021. A backtest reading OperationRatios.ROA.OneYearoperation_ratios.roa.one_year saw the ratio 29 days before the market did.
In the new dataset, a value that has no filing date of its own takes the filing date of the statement it comes from. Of the properties in the fundamental output, 625 are dated by a filing date their own feed carries, 242 borrow their company's statement filing, and 201 have no reporting period to be early or late against, such as the price multiples and the reference data, and keep the day they arrive.
Only the middle group moves, and 99 of those properties existed in the old output. For them, 96% of the figures now arrive later than they used to, by a median of 63 days. Filings from 1998 through 2012 carry no usable filing date in the feeds at all, so the real dates are carried over from the previous generation, with a nominal 45-day delay for a security that has none.
Live trading never had this problem, because a live algorithm only receives what the vendor delivered that day. The look-ahead existed in backtests and research, which is why removing it usually lowers a backtest's return rather than raising it. A strategy that rebalances shortly after fiscal period ends is the most exposed: it now waits for the filing.
Update Frequency
342 properties move at a different cadence than they used to. The price multiples are the ones you notice: the old feeds published them monthly and the new feeds publish them daily, so they change more often, not earlier. Several AssetClassification scores moved from yearly to quarterly updates. A statement's twelve-month window still carries the fiscal year, so it still moves once a year when the annual report is filed.
Coverage
The new feeds cover more companies. The dataset grows from 8,717 to 9,705 US Equities, a gain of 996 companies, and 8 securities that the old feeds carried are not in the new ones. None of those 8 ever carried a filing in the old output.
The history still starts in January 1998, but not every security starts on the same day it used to. Where values are missing relative to the old output, the overwhelming majority belong to the securities the new feeds do not carry, a smaller share to securities whose coverage starts later than it did, and a negligible number are gaps inside an otherwise continuous series.
A wider universe changes selection even when no value changed. A filter that takes the top 500 companies by dollar volume with fundamental data available now chooses from a larger pool, so companies near your cut-off can drop out without anything about them being different. Check HasFundamentalDatahas_fundamental_data as you did before; it simply returns trueTrue for more securities.
New Data Points
The Equity Data Feeds carry 96 data points the old feeds did not. Counting each property and period window separately, 535 series are new. They fall into five groups:
- Credit risk:
DistanceToDefaultdistance_to_defaultandProbabilityOfDefaultprobability_of_default. - Company and security flags:
IsShellCompanyis_shell_company,IsIPOis_ipo,StateOrCountryOfIncorporationstate_or_country_of_incorporation, full-time and part-time employee counts, andTreasurySharestreasury_shares. - Valuation: diluted and normalized enterprise-value ratios such as
DilutedEVToEBITDAdiluted_ev_to_ebitdaandTotalDebtToEVtotal_debt_to_ev, multi-year averages of the price multiples and yields, andNormalizedEarningsYieldnormalized_earnings_yield. - Bank regulatory metrics: Tier 1 and Tier 2 capital and their ratios, common equity Tier 1, leverage and liquidity coverage ratios, net interest margin and spread, risk-weighted assets, and non-performing loans.
- REIT metrics: funds from operations in basic, diluted, and adjusted form, net asset value and EPRA measures, each with per-share variants.
They are dated by the filing that produced them from the start of the history the new feeds cover, so you can research and backtest with them immediately.
Retired Data Points
Morningstar no longer provides some series, or no longer provides some reporting windows of them. LEAN keeps those members so your existing algorithms still compile, but they are marked obsolete and throw a NotSupportedException when you read them. The message names the alternative:
DividendCoverageRatio.ThreeMonths was retired by Morningstar in 2026; use DividendCoverageRatio.TwelveMonths. NormalizedDilutedEPSGrowth was retired by Morningstar in 2026 for all periods; no replacement is available.
Two rules keep this from breaking code that iterates the data. GetPeriodValues()get_period_values() and HasValuehas_value never touch a retired member, so a loop over the available periods skips them rather than throwing. A property whose default window was retired reports a surviving window as its default, so reading the property without naming a period keeps working and returns the closest equivalent.
Counting each property and period window separately, 1,251 old series are gone, though 358 of them were never populated in the first place and no algorithm can have depended on their values. The retirements are concentrated in FinancialStatements, which loses the most series, and in OperationRatios.
Compile your project after the migration and run it once over a short period. The exception message tells you which field to replace and what to replace it with, and a field with no replacement is one whose logic you need to rewrite.
Backtest Impact
Backtest results change. How much depends on what your algorithm reads and how sharply it selects.
| What your algorithm does | What to expect |
|---|---|
| Ranks or filters on valuation, earning, or operation ratios | A different universe and materially different results. |
| Rebalances shortly after fiscal period ends | Signals arrive a median of 63 days later, so the look-ahead that flattered the old backtest is gone. |
| Reads statement lines directly | Roughly a quarter of the values differ, and the expense and contra-asset lines can change sign. |
| Uses sector, industry, or reference data | Little change, but a wider universe to select from. |
| Calls a retired property | A NotSupportedException naming the replacement. |
Treat the migration as a reason to re-run your research, not as a bug to work around. Re-run the backtest first and compare the equity curve against your last result on the old data. If they diverge, find out which of the changes above explains it before you change any parameters: a strategy that only worked on values dated before they were public was never going to work in live trading, and re-fitting it to the new data hides that rather than fixing it.
A strategy whose edge survives the re-run is now measured on the same data your live algorithm receives, which is the point of the change.
Common Questions
Can I keep backtesting on the old Morningstar data?
No. Morningstar retired the feeds that produced it, so the old data can no longer be corrected or extended, and QuantConnect serves one fundamental history. Backtests that ran on it before September 23, 2026 cannot be reproduced.
Why did my backtest return drop after the migration?
The most common cause is the removal of a look-ahead. The old feeds dated ratios, growth, per-share, and average properties at the end of the reporting period, weeks before the filing that produced them was public. Those figures now arrive a median of 63 days later, so a strategy that traded on them earned less than the old backtest showed. Live trading never received the early values.
Do I have to change my algorithm's code?
Only if it reads a property Morningstar retired. Those members still compile but throw a NotSupportedException that names the replacement, so compile the project and run it over a short period to find them. Everything else keeps working and returns the new values.
Does the migration change my live algorithms?
Live algorithms receive the new feeds from September 23, 2026. The values differ from the old ones, so a live algorithm can select a different universe than it did the day before, and a retired property throws. The upside is that research, backtesting, and live trading now agree on both the values and the dates they carry.
How do I tell whether a specific property changed?
Request the history of the property over a period you already studied and compare it against the figures in your old backtest logs. Pay attention to the dates as well as the values: a property in the ratio, growth, per-share, or average families can carry the same figure on a later date.