/*
* 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
{
///
/// Definition of the FinancialStatements class
///
public class FinancialStatements : FundamentalTimeDependentProperty
{
///
/// The exact date that is given in the financial statements for each quarter's end.
///
///
/// Morningstar DataId: 20001
///
[JsonProperty("20001")]
public FinancialStatementsPeriodEndingDate PeriodEndingDate => _periodEndingDate ??= new(_timeProvider, _securityIdentifier);
private FinancialStatementsPeriodEndingDate _periodEndingDate;
///
/// Specific date on which a company released its filing to the public.
///
///
/// Morningstar DataId: 20002
///
[JsonProperty("20002")]
public FinancialStatementsFileDate FileDate => _fileDate ??= new(_timeProvider, _securityIdentifier);
private FinancialStatementsFileDate _fileDate;
///
/// The accession number is a unique number that EDGAR assigns to each submission as the submission is received.
///
///
/// Morningstar DataId: 20003
///
[JsonProperty("20003")]
public FinancialStatementsAccessionNumber AccessionNumber => _accessionNumber ??= new(_timeProvider, _securityIdentifier);
private FinancialStatementsAccessionNumber _accessionNumber;
///
/// The type of filing of the report: for instance, 10-K (annual report) or 10-Q (quarterly report).
///
///
/// Morningstar DataId: 20004
///
[JsonProperty("20004")]
public FinancialStatementsFormType FormType => _formType ??= new(_timeProvider, _securityIdentifier);
private FinancialStatementsFormType _formType;
///
/// The name of the auditor that performed the financial statement audit for the given period.
///
///
/// Morningstar DataId: 28000
///
[JsonProperty("28000")]
public PeriodAuditor PeriodAuditor => _periodAuditor ??= new(_timeProvider, _securityIdentifier);
private PeriodAuditor _periodAuditor;
///
/// Auditor opinion code will be one of the following for each annual period: Code Meaning UQ Unqualified Opinion UE Unqualified Opinion with Explanation QM Qualified - Due to change in accounting method QL Qualified - Due to litigation OT Qualified Opinion - Other AO Adverse Opinion DS Disclaim an opinion UA Unaudited
///
///
/// Morningstar DataId: 28001
///
[JsonProperty("28001")]
public AuditorReportStatus AuditorReportStatus => _auditorReportStatus ??= new(_timeProvider, _securityIdentifier);
private AuditorReportStatus _auditorReportStatus;
///
/// Which method of inventory valuation was used - LIFO, FIFO, Average, Standard costs, Net realizable value, Others, LIFO and FIFO, FIFO and Average, FIFO and other, LIFO and Average, LIFO and other, Average and other, 3 or more methods, None
///
///
/// Morningstar DataId: 28002
///
[JsonProperty("28002")]
public InventoryValuationMethod InventoryValuationMethod => _inventoryValuationMethod ??= new(_timeProvider, _securityIdentifier);
private InventoryValuationMethod _inventoryValuationMethod;
///
/// The number of shareholders on record
///
///
/// Morningstar DataId: 28003
///
[JsonProperty("28003")]
public NumberOfShareHolders NumberOfShareHolders => _numberOfShareHolders ??= new(_timeProvider, _securityIdentifier);
private NumberOfShareHolders _numberOfShareHolders;
///
/// The nature of the period covered by an individual set of financial results. The output can be: Quarter, Semi-annual or Annual. Assuming a 12-month fiscal year, quarter typically covers a three-month period, semi-annual a six-month period, and annual a twelve-month period. Annual could cover results collected either from preliminary results or an annual report
///
///
/// Morningstar DataId: 28006
///
[JsonProperty("28006")]
public FinancialStatementsPeriodType PeriodType => _periodType ??= new(_timeProvider, _securityIdentifier);
private FinancialStatementsPeriodType _periodType;
///
/// The sum of Tier 1 and Tier 2 Capital. Tier 1 capital consists of common shareholders equity, perpetual preferred shareholders equity with non-cumulative dividends, retained earnings, and minority interests in the equity accounts of consolidated subsidiaries. Tier 2 capital consists of subordinated debt, intermediate-term preferred stock, cumulative and long-term preferred stock, and a portion of a bank's allowance for loan and lease losses.
///
///
/// Morningstar DataId: 28004
///
[JsonProperty("28004")]
public TotalRiskBasedCapital TotalRiskBasedCapital => _totalRiskBasedCapital ??= new(_timeProvider, _securityIdentifier);
private TotalRiskBasedCapital _totalRiskBasedCapital;
///
/// The instance of the IncomeStatement class
///
public IncomeStatement IncomeStatement => _incomeStatement ??= new(_timeProvider, _securityIdentifier);
private IncomeStatement _incomeStatement;
///
/// The instance of the BalanceSheet class
///
public BalanceSheet BalanceSheet => _balanceSheet ??= new(_timeProvider, _securityIdentifier);
private BalanceSheet _balanceSheet;
///
/// The instance of the CashFlowStatement class
///
public CashFlowStatement CashFlowStatement => _cashFlowStatement ??= new(_timeProvider, _securityIdentifier);
private CashFlowStatement _cashFlowStatement;
///
/// Creates a new instance for the given time and security
///
public FinancialStatements(ITimeProvider timeProvider, SecurityIdentifier securityIdentifier)
: base(timeProvider, securityIdentifier)
{
}
///
/// Clones this instance
///
public override FundamentalTimeDependentProperty Clone(ITimeProvider timeProvider)
{
return new FinancialStatements(timeProvider, _securityIdentifier);
}
}
}