Lean  $LEAN_TAG$
FinancialStatements.cs
1 /*
2  * QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
3  * Lean Algorithmic Trading Engine v2.0. Copyright 2023 QuantConnect Corporation.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  *
15 */
16 
17 using System;
18 using System.Linq;
19 using Python.Runtime;
20 using Newtonsoft.Json;
21 using System.Collections.Generic;
23 
25 {
26  /// <summary>
27  /// Definition of the FinancialStatements class
28  /// </summary>
30  {
31  /// <summary>
32  /// The exact date that is given in the financial statements for each quarter's end.
33  /// </summary>
34  /// <remarks>
35  /// Morningstar DataId: 20001
36  /// </remarks>
37  [JsonProperty("20001")]
39  private FinancialStatementsPeriodEndingDate _periodEndingDate;
40 
41  /// <summary>
42  /// Specific date on which a company released its filing to the public.
43  /// </summary>
44  /// <remarks>
45  /// Morningstar DataId: 20002
46  /// </remarks>
47  [JsonProperty("20002")]
49  private FinancialStatementsFileDate _fileDate;
50 
51  /// <summary>
52  /// The accession number is a unique number that EDGAR assigns to each submission as the submission is received.
53  /// </summary>
54  /// <remarks>
55  /// Morningstar DataId: 20003
56  /// </remarks>
57  [JsonProperty("20003")]
59  private FinancialStatementsAccessionNumber _accessionNumber;
60 
61  /// <summary>
62  /// The type of filing of the report: for instance, 10-K (annual report) or 10-Q (quarterly report).
63  /// </summary>
64  /// <remarks>
65  /// Morningstar DataId: 20004
66  /// </remarks>
67  [JsonProperty("20004")]
69  private FinancialStatementsFormType _formType;
70 
71  /// <summary>
72  /// The name of the auditor that performed the financial statement audit for the given period.
73  /// </summary>
74  /// <remarks>
75  /// Morningstar DataId: 28000
76  /// </remarks>
77  [JsonProperty("28000")]
78  public PeriodAuditor PeriodAuditor => _periodAuditor ??= new(_timeProvider, _securityIdentifier);
79  private PeriodAuditor _periodAuditor;
80 
81  /// <summary>
82  /// 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
83  /// </summary>
84  /// <remarks>
85  /// Morningstar DataId: 28001
86  /// </remarks>
87  [JsonProperty("28001")]
89  private AuditorReportStatus _auditorReportStatus;
90 
91  /// <summary>
92  /// 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
93  /// </summary>
94  /// <remarks>
95  /// Morningstar DataId: 28002
96  /// </remarks>
97  [JsonProperty("28002")]
99  private InventoryValuationMethod _inventoryValuationMethod;
100 
101  /// <summary>
102  /// The number of shareholders on record
103  /// </summary>
104  /// <remarks>
105  /// Morningstar DataId: 28003
106  /// </remarks>
107  [JsonProperty("28003")]
109  private NumberOfShareHolders _numberOfShareHolders;
110 
111  /// <summary>
112  /// 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
113  /// </summary>
114  /// <remarks>
115  /// Morningstar DataId: 28006
116  /// </remarks>
117  [JsonProperty("28006")]
119  private FinancialStatementsPeriodType _periodType;
120 
121  /// <summary>
122  /// 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.
123  /// </summary>
124  /// <remarks>
125  /// Morningstar DataId: 28004
126  /// </remarks>
127  [JsonProperty("28004")]
129  private TotalRiskBasedCapital _totalRiskBasedCapital;
130 
131  /// <summary>
132  /// The instance of the IncomeStatement class
133  /// </summary>
134 
135  public IncomeStatement IncomeStatement => _incomeStatement ??= new(_timeProvider, _securityIdentifier);
136  private IncomeStatement _incomeStatement;
137 
138  /// <summary>
139  /// The instance of the BalanceSheet class
140  /// </summary>
141 
142  public BalanceSheet BalanceSheet => _balanceSheet ??= new(_timeProvider, _securityIdentifier);
143  private BalanceSheet _balanceSheet;
144 
145  /// <summary>
146  /// The instance of the CashFlowStatement class
147  /// </summary>
148 
150  private CashFlowStatement _cashFlowStatement;
151 
152  /// <summary>
153  /// Creates a new instance for the given time and security
154  /// </summary>
155  public FinancialStatements(ITimeProvider timeProvider, SecurityIdentifier securityIdentifier)
156  : base(timeProvider, securityIdentifier)
157  {
158  }
159 
160  /// <summary>
161  /// Clones this instance
162  /// </summary>
164  {
165  return new FinancialStatements(timeProvider, _securityIdentifier);
166  }
167  }
168 }