Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
6d37f4a
Model four company reference points the new Morningstar feeds carry
Martin-Molinero Aug 8, 2026
9a528ee
Model the share ISIN, which the new feeds carry
Martin-Molinero Aug 8, 2026
1993fac
Model the ten supplemental income statement values
Martin-Molinero Aug 8, 2026
ee8f269
Model the diluted market capitalisation
Martin-Molinero Aug 8, 2026
cb20291
Model the company long description
Martin-Molinero Aug 8, 2026
ae4d3e4
Model the free float share count
Martin-Molinero Aug 8, 2026
f8eb424
Model eight new data points the equity feeds ship
Martin-Molinero Aug 14, 2026
fd0de5b
Model the diluted and normalized valuation ratio family
Martin-Molinero Aug 14, 2026
4ea603b
Model the bank and REIT template metrics
Martin-Molinero Aug 20, 2026
5c2fe67
Deprecate the fundamentals the 2026 feed migration retired
Martin-Molinero Aug 25, 2026
8fed772
Say a retired property is gone in every period
Martin-Molinero Aug 25, 2026
3278a33
Say it the way a user reads it
Martin-Molinero Aug 25, 2026
52191ea
Keep retired members out of serialization
Martin-Molinero Sep 4, 2026
5c0dbdf
Test the retired members where they live
Martin-Molinero Sep 4, 2026
7990121
Pace processed data provider logging
Martin-Molinero Sep 8, 2026
6bf62ca
Deprecate fundamental members that never held a value
Martin-Molinero Sep 8, 2026
4635192
Declare the twelve-month accession number
Martin-Molinero Sep 8, 2026
ed50cf4
Default the accession number to the quarterly filing
Martin-Molinero Sep 8, 2026
a26893e
Add the analytical data points the new Morningstar feeds carry for mo…
Martin-Molinero Sep 9, 2026
ce355b0
Drop OtherNonCashItemsValue, the old property takes the code
Martin-Molinero Sep 9, 2026
992be40
Restore the fundamentals the templates workbook sources after all
Martin-Molinero Sep 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
626 changes: 625 additions & 1 deletion Common/Data/Fundamental/FundamentalProperty.cs

Large diffs are not rendered by default.

16 changes: 11 additions & 5 deletions Common/Data/Fundamental/Generated/AccountsPayableBalanceSheet.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/*
* QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
* Lean Algorithmic Trading Engine v2.0. Copyright 2023 QuantConnect Corporation.
*
Expand Down Expand Up @@ -37,13 +37,17 @@ public class AccountsPayableBalanceSheet : MultiPeriodField
/// Gets/sets the OneMonth period value for the field
/// </summary>
[JsonProperty("1M")]
public double OneMonth => FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, FundamentalProperty.FinancialStatements_BalanceSheet_AccountsPayable_OneMonth);
[Obsolete("AccountsPayable.OneMonth was retired by Morningstar in 2026; use AccountsPayable.ThreeMonths (also available: SixMonths, TwelveMonths).")]
[JsonIgnore]
public double OneMonth => throw new NotSupportedException("AccountsPayable.OneMonth was retired by Morningstar in 2026; use AccountsPayable.ThreeMonths (also available: SixMonths, TwelveMonths).");

/// <summary>
/// Gets/sets the TwoMonths period value for the field
/// </summary>
[JsonProperty("2M")]
public double TwoMonths => FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, FundamentalProperty.FinancialStatements_BalanceSheet_AccountsPayable_TwoMonths);
[Obsolete("AccountsPayable.TwoMonths was retired by Morningstar in 2026; use AccountsPayable.ThreeMonths (also available: SixMonths, TwelveMonths).")]
[JsonIgnore]
public double TwoMonths => throw new NotSupportedException("AccountsPayable.TwoMonths was retired by Morningstar in 2026; use AccountsPayable.ThreeMonths (also available: SixMonths, TwelveMonths).");

/// <summary>
/// Gets/sets the ThreeMonths period value for the field
Expand All @@ -61,7 +65,9 @@ public class AccountsPayableBalanceSheet : MultiPeriodField
/// Gets/sets the NineMonths period value for the field
/// </summary>
[JsonProperty("9M")]
public double NineMonths => FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, FundamentalProperty.FinancialStatements_BalanceSheet_AccountsPayable_NineMonths);
[Obsolete("AccountsPayable.NineMonths was retired by Morningstar in 2026; use AccountsPayable.ThreeMonths (also available: SixMonths, TwelveMonths).")]
[JsonIgnore]
public double NineMonths => throw new NotSupportedException("AccountsPayable.NineMonths was retired by Morningstar in 2026; use AccountsPayable.ThreeMonths (also available: SixMonths, TwelveMonths).");

/// <summary>
/// Gets/sets the TwelveMonths period value for the field
Expand Down Expand Up @@ -97,7 +103,7 @@ public override double Value
public override IReadOnlyDictionary<string, double> GetPeriodValues()
{
var result = new Dictionary<string, double>();
foreach (var kvp in new[] { new Tuple<string, double>("1M",OneMonth), new Tuple<string, double>("2M",TwoMonths), new Tuple<string, double>("3M",ThreeMonths), new Tuple<string, double>("6M",SixMonths), new Tuple<string, double>("9M",NineMonths), new Tuple<string, double>("12M",TwelveMonths) })
foreach (var kvp in new[] { new Tuple<string, double>("3M",ThreeMonths), new Tuple<string, double>("6M",SixMonths), new Tuple<string, double>("12M",TwelveMonths) })
{
if(!BaseFundamentalDataProvider.IsNone(typeof(double), kvp.Item2))
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/*
* QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
* Lean Algorithmic Trading Engine v2.0. Copyright 2023 QuantConnect Corporation.
*
Expand Down Expand Up @@ -37,13 +37,17 @@ public class AccountsReceivableBalanceSheet : MultiPeriodField
/// Gets/sets the OneMonth period value for the field
/// </summary>
[JsonProperty("1M")]
public double OneMonth => FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, FundamentalProperty.FinancialStatements_BalanceSheet_AccountsReceivable_OneMonth);
[Obsolete("AccountsReceivable.OneMonth was retired by Morningstar in 2026; use AccountsReceivable.ThreeMonths (also available: SixMonths, TwelveMonths).")]
[JsonIgnore]
public double OneMonth => throw new NotSupportedException("AccountsReceivable.OneMonth was retired by Morningstar in 2026; use AccountsReceivable.ThreeMonths (also available: SixMonths, TwelveMonths).");

/// <summary>
/// Gets/sets the TwoMonths period value for the field
/// </summary>
[JsonProperty("2M")]
public double TwoMonths => FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, FundamentalProperty.FinancialStatements_BalanceSheet_AccountsReceivable_TwoMonths);
[Obsolete("AccountsReceivable.TwoMonths was retired by Morningstar in 2026; use AccountsReceivable.ThreeMonths (also available: SixMonths, TwelveMonths).")]
[JsonIgnore]
public double TwoMonths => throw new NotSupportedException("AccountsReceivable.TwoMonths was retired by Morningstar in 2026; use AccountsReceivable.ThreeMonths (also available: SixMonths, TwelveMonths).");

/// <summary>
/// Gets/sets the ThreeMonths period value for the field
Expand All @@ -61,7 +65,9 @@ public class AccountsReceivableBalanceSheet : MultiPeriodField
/// Gets/sets the NineMonths period value for the field
/// </summary>
[JsonProperty("9M")]
public double NineMonths => FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, FundamentalProperty.FinancialStatements_BalanceSheet_AccountsReceivable_NineMonths);
[Obsolete("AccountsReceivable.NineMonths was retired by Morningstar in 2026; use AccountsReceivable.ThreeMonths (also available: SixMonths, TwelveMonths).")]
[JsonIgnore]
public double NineMonths => throw new NotSupportedException("AccountsReceivable.NineMonths was retired by Morningstar in 2026; use AccountsReceivable.ThreeMonths (also available: SixMonths, TwelveMonths).");

/// <summary>
/// Gets/sets the TwelveMonths period value for the field
Expand Down Expand Up @@ -97,7 +103,7 @@ public override double Value
public override IReadOnlyDictionary<string, double> GetPeriodValues()
{
var result = new Dictionary<string, double>();
foreach (var kvp in new[] { new Tuple<string, double>("1M",OneMonth), new Tuple<string, double>("2M",TwoMonths), new Tuple<string, double>("3M",ThreeMonths), new Tuple<string, double>("6M",SixMonths), new Tuple<string, double>("9M",NineMonths), new Tuple<string, double>("12M",TwelveMonths) })
foreach (var kvp in new[] { new Tuple<string, double>("3M",ThreeMonths), new Tuple<string, double>("6M",SixMonths), new Tuple<string, double>("12M",TwelveMonths) })
{
if(!BaseFundamentalDataProvider.IsNone(typeof(double), kvp.Item2))
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/*
* QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
* Lean Algorithmic Trading Engine v2.0. Copyright 2023 QuantConnect Corporation.
*
Expand Down Expand Up @@ -55,7 +55,9 @@ public class AccruedInterestReceivableBalanceSheet : MultiPeriodField
/// Gets/sets the NineMonths period value for the field
/// </summary>
[JsonProperty("9M")]
public double NineMonths => FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, FundamentalProperty.FinancialStatements_BalanceSheet_AccruedInterestReceivable_NineMonths);
[Obsolete("AccruedInterestReceivable.NineMonths was retired by Morningstar in 2026; use AccruedInterestReceivable.ThreeMonths (also available: SixMonths, TwelveMonths).")]
[JsonIgnore]
public double NineMonths => throw new NotSupportedException("AccruedInterestReceivable.NineMonths was retired by Morningstar in 2026; use AccruedInterestReceivable.ThreeMonths (also available: SixMonths, TwelveMonths).");

/// <summary>
/// Gets/sets the TwelveMonths period value for the field
Expand Down Expand Up @@ -91,7 +93,7 @@ public override double Value
public override IReadOnlyDictionary<string, double> GetPeriodValues()
{
var result = new Dictionary<string, double>();
foreach (var kvp in new[] { new Tuple<string, double>("2M",TwoMonths), new Tuple<string, double>("3M",ThreeMonths), new Tuple<string, double>("6M",SixMonths), new Tuple<string, double>("9M",NineMonths), new Tuple<string, double>("12M",TwelveMonths) })
foreach (var kvp in new[] { new Tuple<string, double>("2M",TwoMonths), new Tuple<string, double>("3M",ThreeMonths), new Tuple<string, double>("6M",SixMonths), new Tuple<string, double>("12M",TwelveMonths) })
{
if(!BaseFundamentalDataProvider.IsNone(typeof(double), kvp.Item2))
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/*
* QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
* Lean Algorithmic Trading Engine v2.0. Copyright 2023 QuantConnect Corporation.
*
Expand Down Expand Up @@ -37,7 +37,9 @@ public class AccruedLiabilitiesTotalBalanceSheet : MultiPeriodField
/// Gets/sets the TwoMonths period value for the field
/// </summary>
[JsonProperty("2M")]
public double TwoMonths => FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, FundamentalProperty.FinancialStatements_BalanceSheet_AccruedLiabilitiesTotal_TwoMonths);
[Obsolete("AccruedLiabilitiesTotal.TwoMonths was retired by Morningstar in 2026; use AccruedLiabilitiesTotal.ThreeMonths (also available: TwelveMonths).")]
[JsonIgnore]
public double TwoMonths => throw new NotSupportedException("AccruedLiabilitiesTotal.TwoMonths was retired by Morningstar in 2026; use AccruedLiabilitiesTotal.ThreeMonths (also available: TwelveMonths).");

/// <summary>
/// Gets/sets the ThreeMonths period value for the field
Expand Down Expand Up @@ -79,7 +81,7 @@ public override double Value
public override IReadOnlyDictionary<string, double> GetPeriodValues()
{
var result = new Dictionary<string, double>();
foreach (var kvp in new[] { new Tuple<string, double>("2M",TwoMonths), new Tuple<string, double>("3M",ThreeMonths), new Tuple<string, double>("12M",TwelveMonths) })
foreach (var kvp in new[] { new Tuple<string, double>("3M",ThreeMonths), new Tuple<string, double>("12M",TwelveMonths) })
{
if(!BaseFundamentalDataProvider.IsNone(typeof(double), kvp.Item2))
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/*
* QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
* Lean Algorithmic Trading Engine v2.0. Copyright 2023 QuantConnect Corporation.
*
Expand Down Expand Up @@ -37,34 +37,27 @@ public class AccruedandDeferredIncomeBalanceSheet : MultiPeriodField
/// Gets/sets the ThreeMonths period value for the field
/// </summary>
[JsonProperty("3M")]
public double ThreeMonths => FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, FundamentalProperty.FinancialStatements_BalanceSheet_AccruedandDeferredIncome_ThreeMonths);
[Obsolete("AccruedandDeferredIncome was retired by Morningstar in 2026 for all periods; no replacement is available.")]
[JsonIgnore]
public double ThreeMonths => throw new NotSupportedException("AccruedandDeferredIncome was retired by Morningstar in 2026 for all periods; no replacement is available.");

/// <summary>
/// Gets/sets the TwelveMonths period value for the field
/// </summary>
[JsonProperty("12M")]
public double TwelveMonths => FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, FundamentalProperty.FinancialStatements_BalanceSheet_AccruedandDeferredIncome_TwelveMonths);
[Obsolete("AccruedandDeferredIncome was retired by Morningstar in 2026 for all periods; no replacement is available.")]
[JsonIgnore]
public double TwelveMonths => throw new NotSupportedException("AccruedandDeferredIncome was retired by Morningstar in 2026 for all periods; no replacement is available.");

/// <summary>
/// Returns true if the field contains a value for the default period
/// </summary>
public override bool HasValue => !BaseFundamentalDataProvider.IsNone(typeof(double), FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, FundamentalProperty.FinancialStatements_BalanceSheet_AccruedandDeferredIncome_TwelveMonths));
public override bool HasValue => false;

/// <summary>
/// Returns the default value for the field
/// </summary>
public override double Value
{
get
{
var defaultValue = FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, FundamentalProperty.FinancialStatements_BalanceSheet_AccruedandDeferredIncome_TwelveMonths);
if (!BaseFundamentalDataProvider.IsNone(typeof(double), defaultValue))
{
return defaultValue;
}
return base.Value;
}
}
public override double Value => throw new NotSupportedException("AccruedandDeferredIncome was retired by Morningstar in 2026 for all periods; no replacement is available.");

/// <summary>
/// Gets a dictionary of period names and values for the field
Expand All @@ -73,7 +66,7 @@ public override double Value
public override IReadOnlyDictionary<string, double> GetPeriodValues()
{
var result = new Dictionary<string, double>();
foreach (var kvp in new[] { new Tuple<string, double>("3M",ThreeMonths), new Tuple<string, double>("12M",TwelveMonths) })
foreach (var kvp in System.Array.Empty<Tuple<string, double>>())
{
if(!BaseFundamentalDataProvider.IsNone(typeof(double), kvp.Item2))
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/*
* QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
* Lean Algorithmic Trading Engine v2.0. Copyright 2023 QuantConnect Corporation.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/*
* QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
* Lean Algorithmic Trading Engine v2.0. Copyright 2023 QuantConnect Corporation.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/*
* QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
* Lean Algorithmic Trading Engine v2.0. Copyright 2023 QuantConnect Corporation.
*
Expand Down Expand Up @@ -37,13 +37,17 @@ public class AccumulatedDepreciationBalanceSheet : MultiPeriodField
/// Gets/sets the OneMonth period value for the field
/// </summary>
[JsonProperty("1M")]
public double OneMonth => FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, FundamentalProperty.FinancialStatements_BalanceSheet_AccumulatedDepreciation_OneMonth);
[Obsolete("AccumulatedDepreciation.OneMonth was retired by Morningstar in 2026; use AccumulatedDepreciation.ThreeMonths (also available: SixMonths, TwelveMonths).")]
[JsonIgnore]
public double OneMonth => throw new NotSupportedException("AccumulatedDepreciation.OneMonth was retired by Morningstar in 2026; use AccumulatedDepreciation.ThreeMonths (also available: SixMonths, TwelveMonths).");

/// <summary>
/// Gets/sets the TwoMonths period value for the field
/// </summary>
[JsonProperty("2M")]
public double TwoMonths => FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, FundamentalProperty.FinancialStatements_BalanceSheet_AccumulatedDepreciation_TwoMonths);
[Obsolete("AccumulatedDepreciation.TwoMonths was retired by Morningstar in 2026; use AccumulatedDepreciation.ThreeMonths (also available: SixMonths, TwelveMonths).")]
[JsonIgnore]
public double TwoMonths => throw new NotSupportedException("AccumulatedDepreciation.TwoMonths was retired by Morningstar in 2026; use AccumulatedDepreciation.ThreeMonths (also available: SixMonths, TwelveMonths).");

/// <summary>
/// Gets/sets the ThreeMonths period value for the field
Expand All @@ -61,7 +65,9 @@ public class AccumulatedDepreciationBalanceSheet : MultiPeriodField
/// Gets/sets the NineMonths period value for the field
/// </summary>
[JsonProperty("9M")]
public double NineMonths => FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, FundamentalProperty.FinancialStatements_BalanceSheet_AccumulatedDepreciation_NineMonths);
[Obsolete("AccumulatedDepreciation.NineMonths was retired by Morningstar in 2026; use AccumulatedDepreciation.ThreeMonths (also available: SixMonths, TwelveMonths).")]
[JsonIgnore]
public double NineMonths => throw new NotSupportedException("AccumulatedDepreciation.NineMonths was retired by Morningstar in 2026; use AccumulatedDepreciation.ThreeMonths (also available: SixMonths, TwelveMonths).");

/// <summary>
/// Gets/sets the TwelveMonths period value for the field
Expand Down Expand Up @@ -97,7 +103,7 @@ public override double Value
public override IReadOnlyDictionary<string, double> GetPeriodValues()
{
var result = new Dictionary<string, double>();
foreach (var kvp in new[] { new Tuple<string, double>("1M",OneMonth), new Tuple<string, double>("2M",TwoMonths), new Tuple<string, double>("3M",ThreeMonths), new Tuple<string, double>("6M",SixMonths), new Tuple<string, double>("9M",NineMonths), new Tuple<string, double>("12M",TwelveMonths) })
foreach (var kvp in new[] { new Tuple<string, double>("3M",ThreeMonths), new Tuple<string, double>("6M",SixMonths), new Tuple<string, double>("12M",TwelveMonths) })
{
if(!BaseFundamentalDataProvider.IsNone(typeof(double), kvp.Item2))
{
Expand Down
Loading
Loading