Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
c4bd123
Model four company reference points the new Morningstar feeds carry
Martin-Molinero Aug 8, 2026
14ab51a
Model the share ISIN, which the new feeds carry
Martin-Molinero Aug 8, 2026
03ae549
Model the ten supplemental income statement values
Martin-Molinero Aug 8, 2026
46a6598
Model the diluted market capitalisation
Martin-Molinero Aug 8, 2026
5bb8585
Model the company long description
Martin-Molinero Aug 8, 2026
30db1cd
Model the free float share count
Martin-Molinero Aug 8, 2026
9781ae0
Model eight new data points the equity feeds ship
Martin-Molinero Aug 14, 2026
566bffb
Model the diluted and normalized valuation ratio family
Martin-Molinero Aug 14, 2026
87c157a
Model the bank and REIT template metrics
Martin-Molinero Aug 20, 2026
5fc03a5
Deprecate the fundamentals the 2026 feed migration retired
Martin-Molinero Aug 25, 2026
1a933cb
Say a retired property is gone in every period
Martin-Molinero Aug 25, 2026
303a634
Say it the way a user reads it
Martin-Molinero Aug 25, 2026
43e2666
Keep retired members out of serialization
Martin-Molinero Sep 4, 2026
53b7e4c
Test the retired members where they live
Martin-Molinero Sep 4, 2026
70b281f
Pace processed data provider logging
Martin-Molinero Sep 8, 2026
0803d7e
Deprecate fundamental members that never held a value
Martin-Molinero Sep 8, 2026
3f701fc
Declare the twelve-month accession number
Martin-Molinero Sep 8, 2026
44dbdd9
Default the accession number to the quarterly filing
Martin-Molinero Sep 8, 2026
fde503e
Add the analytical data points the new Morningstar feeds carry for mo…
Martin-Molinero Sep 9, 2026
b29518e
Drop OtherNonCashItemsValue, the old property takes the code
Martin-Molinero Sep 9, 2026
74ee2e4
Restore the fundamentals the templates workbook sources after all
Martin-Molinero Sep 9, 2026
6bd066a
Two windows the production run populates come back
Martin-Molinero Sep 10, 2026
3413d0e
Drop the six EPRA REIT metrics
Martin-Molinero Sep 10, 2026
0ba854a
Retire the windows the new feeds carry empty, restore six the transla…
Martin-Molinero Sep 10, 2026
6fe3f21
Date each statement on its own, and say when the merged date moves
Martin-Molinero Sep 11, 2026
ddea660
Name each statement's period ending date PeriodEndingDate
Martin-Molinero Sep 11, 2026
c1b821c
Drop the GeneralAndAdministrativeExpenses addition, the old property …
Martin-Molinero Sep 12, 2026
ca57cef
Drop nine additions whose lines the old properties now read
Martin-Molinero Sep 12, 2026
b3ba9de
Revive the 21 members the census shows the new feeds still carry
Martin-Molinero Sep 14, 2026
3c70227
Revive the 88 members the new feeds fill, TotalCapitalization among them
Martin-Molinero Sep 15, 2026
5edd8e4
Retire CashAndDueFromBanks again
Martin-Molinero Sep 15, 2026
de15355
Revive the 79 members the mapping fills and the census shows hold values
Martin-Molinero Sep 17, 2026
957565f
Put the revived members back on the indentation of their neighbours
Martin-Molinero Sep 17, 2026
470b982
Describe what the new feeds deliver where a line's meaning moved
Martin-Molinero Sep 17, 2026
d34a909
Describe the eleven members whose line is now another quantity
Martin-Molinero Sep 17, 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
  •  
  •  
  •  
574 changes: 573 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 All @@ -24,7 +24,7 @@
namespace QuantConnect.Data.Fundamental
{
/// <summary>
/// Sum of accrued liabilities and deferred income (amount received in advance but the services are not provided in respect of amount).
/// Obligations for goods and services received but not yet invoiced, reported in current liabilities. Deferred income is not included.
/// </summary>
public class AccruedandDeferredIncomeBalanceSheet : MultiPeriodField
{
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
/*
* QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
* Lean Algorithmic Trading Engine v2.0. Copyright 2023 QuantConnect Corporation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/

using System;
using System.Linq;
using Python.Runtime;
using Newtonsoft.Json;
using System.Collections.Generic;
using QuantConnect.Data.UniverseSelection;

namespace QuantConnect.Data.Fundamental
{
/// <summary>
/// Cumulative amount of wear and tear or obsolescence charged against the tangible assets of the company.
/// </summary>
public class AccumulatedDepreciationValueBalanceSheet : MultiPeriodField
{
/// <summary>
/// The default period
/// </summary>
protected override string DefaultPeriod => "TwelveMonths";

/// <summary>
/// Gets/sets the ThreeMonths period value for the field
/// </summary>
[JsonProperty("3M")]
public double ThreeMonths => FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, FundamentalProperty.FinancialStatements_BalanceSheet_AccumulatedDepreciationValue_ThreeMonths);

/// <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_AccumulatedDepreciationValue_TwelveMonths);

/// <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_AccumulatedDepreciationValue_TwelveMonths));

/// <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_AccumulatedDepreciationValue_TwelveMonths);
if (!BaseFundamentalDataProvider.IsNone(typeof(double), defaultValue))
{
return defaultValue;
}
return base.Value;
}
}

/// <summary>
/// Gets a dictionary of period names and values for the field
/// </summary>
/// <returns>The dictionary of period names and values</returns>
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) })
{
if(!BaseFundamentalDataProvider.IsNone(typeof(double), kvp.Item2))
{
result[kvp.Item1] = kvp.Item2;
}
}
return result;
}

/// <summary>
/// Gets the value of the field for the requested period
/// </summary>
/// <param name="period">The requested period</param>
/// <returns>The value for the period</returns>
public override double GetPeriodValue(string period) => FundamentalService.Get<double>(TimeProvider.GetUtcNow(), SecurityIdentifier, Enum.Parse<FundamentalProperty>($"FinancialStatements_BalanceSheet_AccumulatedDepreciationValue_{ConvertPeriod(period)}"));

/// <summary>
/// Creates a new empty instance
/// </summary>
public AccumulatedDepreciationValueBalanceSheet()
{
}

/// <summary>
/// Creates a new instance for the given time and security
/// </summary>
public AccumulatedDepreciationValueBalanceSheet(ITimeProvider timeProvider, SecurityIdentifier securityIdentifier) : base(timeProvider, securityIdentifier)
{
}
}
}
Loading
Loading