You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
description: Use to look up the exact path or spelling of any Morningstar fundamental data point on a QuantConnect/LEAN `Fundamental` object `f` — every field under py`f.financial_statements.*`cs`f.FinancialStatements.*` (income statement, balance sheet, cash flow statement), the operation / valuation / earning ratios, earning reports, company profile, company & security reference, and asset classification — plus the Morningstar sector and industry classification code constants. Triggers — a missing-attribute / compile error on a Fundamental property path; questions like "what's the path to net income / operating cash flow / shares outstanding / PE ratio / sector code". Skip when — you need how to build or screen a universe (see the fundamental-universes skill).
3
+
description: START HERE to look up the exact path or spelling of any Morningstar fundamental data point on a QuantConnect/LEAN `Fundamental` object `f`. This skill holds the path-reading rules, the top-level and filing-metadata fields (market cap, `period_ending_date`, `file_date`, ...), and the index of the six field-family skills that hold the full tables — fundamental-income-statement, fundamental-balance-sheet, fundamental-cash-flow-statement, fundamental-ratios, fundamental-company-data, fundamental-classification. Triggers — a missing-attribute / compile error on a Fundamental property path; questions like "what's the path to net income / operating cash flow / shares outstanding / PE ratio / sector code". Skip when — you need how to build or screen a universe (see the fundamental-universes skill).
4
4
---
5
5
6
6
# Fundamental data-point attributes — QuantConnect / LEAN
7
7
8
-
Every readable Morningstar data point on a `Fundamental` object, written as a full path from the snapshot `f` with its description. Copy the path you need rather than guessing from English names — a wrong path wastes a backtest run. Get `f` from an py`add_universe(...)`cs`AddUniverse(...)` selection callback (each element is a `Fundamental`), from py`self.securities["SPY"].fundamentals`cs`Securities["SPY"].Fundamentals`, or from a history request.
8
+
Morningstar data points are read as a full path from the snapshot `f` — copy the path you need rather than guessing from English names; a wrong path wastes a backtest run. Get `f` from an py`add_universe(...)`cs`AddUniverse(...)` selection callback (each element is a `Fundamental`), from py`self.securities["SPY"].fundamentals`cs`Securities["SPY"].Fundamentals`, or from a history request. The field tables are split across skills by family: THIS skill carries the top-level and filing-metadata fields plus the index below — load the family skill that holds your field's table.
9
+
10
+
## Where every field lives — load the matching skill
| py`f.asset_classification.*`cs`f.AssetClassification.*` + code constants |`fundamental-classification`| sector / industry-group / industry codes and the `MorningstarSectorCode`-style constants they compare against |
9
20
10
21
## Reading the paths
11
22
12
23
- A path ending in `.[value 1M 2M 3M 6M 9M 12M]` is a `MultiPeriodField` — append **one** period accessor to read the number. py`.value`cs`.Value` is the most recent reported period; the `1M`–`12M` tokens are py`.one_month .two_months .three_months .six_months .nine_months .twelve_months`cs`.OneMonth .TwoMonths .ThreeMonths .SixMonths .NineMonths .TwelveMonths` respectively (trailing-twelve-month at `12M`). e.g. py`f.financial_statements.income_statement.net_income.twelve_months`cs`f.FinancialStatements.IncomeStatement.NetIncome.TwelveMonths`. Forgetting the accessor is silent — the wrapper compares as truthy and numeric inequalities give nonsense.
13
24
- A path with **no** bracket is read directly. e.g. py`f.valuation_ratios.pe_ratio`cs`f.ValuationRatios.PERatio`.
14
-
- The integer `*_code` fields under `asset_classification` compare against the named constants in the **Classification code constants** section at the end, e.g. py`f.asset_classification.morningstar_sector_code == MorningstarSectorCode.TECHNOLOGY`cs`f.AssetClassification.MorningstarSectorCode == MorningstarSectorCode.Technology`.
25
+
- The integer `*_code` fields under `asset_classification` compare against the named constants in the **fundamental-classification** skill, e.g. py`f.asset_classification.morningstar_sector_code == MorningstarSectorCode.TECHNOLOGY`cs`f.AssetClassification.MorningstarSectorCode == MorningstarSectorCode.Technology`.
26
+
27
+
## Top-level and filing-metadata data points
15
28
16
-
## Data points
29
+
The snapshot's own attributes and the filing/timing fields under py`f.financial_statements`cs`f.FinancialStatements` (period end, file date, period type, ...) — the fields every point-in-time strategy needs:
description: Use to look up the exact path or spelling of any Morningstar BALANCE SHEET field on a QuantConnect/LEAN `Fundamental` object — everything under py`f.financial_statements.balance_sheet.*`cs`f.FinancialStatements.BalanceSheet.*` — assets, liabilities, stockholders' equity, debt, working-capital components, and share counts. Triggers — "path to total assets / total equity / long-term debt / cash and equivalents / inventory / shares issued". For other field families start at the equity-fundamental-data skill.
4
+
---
5
+
6
+
# Balance-sheet fields — `Fundamental` data points
7
+
8
+
Full path from the snapshot `f` with the field's description — copy the path rather than guessing from English names; a wrong path wastes a backtest run. The path-reading rules and the index of all field-family skills are in the **equity-fundamental-data** skill.
9
+
10
+
## Reading the paths
11
+
12
+
- A path ending in `.[value 1M 2M 3M 6M 9M 12M]` is a `MultiPeriodField` — append **one** period accessor to read the number. py`.value`cs`.Value` is the most recent reported period; the `1M`–`12M` tokens are py`.one_month .two_months .three_months .six_months .nine_months .twelve_months`cs`.OneMonth .TwoMonths .ThreeMonths .SixMonths .NineMonths .TwelveMonths` respectively (trailing-twelve-month at `12M`). e.g. py`f.financial_statements.income_statement.net_income.twelve_months`cs`f.FinancialStatements.IncomeStatement.NetIncome.TwelveMonths`. Forgetting the accessor is silent — the wrapper compares as truthy and numeric inequalities give nonsense.
13
+
- A path with **no** bracket is read directly. e.g. py`f.valuation_ratios.pe_ratio`cs`f.ValuationRatios.PERatio`.
14
+
- The integer `*_code` fields under `asset_classification` compare against the named constants in the **fundamental-classification** skill.
description: Use to look up the exact path or spelling of any Morningstar CASH FLOW STATEMENT field on a QuantConnect/LEAN `Fundamental` object — everything under py`f.financial_statements.cash_flow_statement.*`cs`f.FinancialStatements.CashFlowStatement.*` — operating / investing / financing cash flows, capital expenditure, stock issuance and repurchase, and cash dividends paid. Triggers — "path to operating cash flow / free cash flow / capex / cash dividends paid / stock repurchase". For other field families start at the equity-fundamental-data skill.
4
+
---
5
+
6
+
# Cash-flow-statement fields — `Fundamental` data points
7
+
8
+
Full path from the snapshot `f` with the field's description — copy the path rather than guessing from English names; a wrong path wastes a backtest run. The path-reading rules and the index of all field-family skills are in the **equity-fundamental-data** skill.
9
+
10
+
## Reading the paths
11
+
12
+
- A path ending in `.[value 1M 2M 3M 6M 9M 12M]` is a `MultiPeriodField` — append **one** period accessor to read the number. py`.value`cs`.Value` is the most recent reported period; the `1M`–`12M` tokens are py`.one_month .two_months .three_months .six_months .nine_months .twelve_months`cs`.OneMonth .TwoMonths .ThreeMonths .SixMonths .NineMonths .TwelveMonths` respectively (trailing-twelve-month at `12M`). e.g. py`f.financial_statements.income_statement.net_income.twelve_months`cs`f.FinancialStatements.IncomeStatement.NetIncome.TwelveMonths`. Forgetting the accessor is silent — the wrapper compares as truthy and numeric inequalities give nonsense.
13
+
- A path with **no** bracket is read directly. e.g. py`f.valuation_ratios.pe_ratio`cs`f.ValuationRatios.PERatio`.
14
+
- The integer `*_code` fields under `asset_classification` compare against the named constants in the **fundamental-classification** skill.
description: Use to look up the exact path or spelling of any Morningstar ASSET CLASSIFICATION field on a QuantConnect/LEAN `Fundamental` object — everything under py`f.asset_classification.*`cs`f.AssetClassification.*` (Morningstar sector / industry-group / industry codes, style box, financial health grade) — plus the named code constants (`MorningstarSectorCode`, `MorningstarIndustryGroupCode`, `MorningstarIndustryCode`, ...) the integer `*_code` fields compare against. Triggers — "path to sector code / industry group code / how do I filter to Technology / SIC or NAICS code". For other field families start at the equity-fundamental-data skill.
4
+
---
5
+
6
+
# Asset-classification fields and code constants — `Fundamental` data points
7
+
8
+
Full path from the snapshot `f` with the field's description — copy the path rather than guessing from English names; a wrong path wastes a backtest run. The path-reading rules and the index of all field-family skills are in the **equity-fundamental-data** skill.
9
+
10
+
## Reading the paths
11
+
12
+
- A path ending in `.[value 1M 2M 3M 6M 9M 12M]` is a `MultiPeriodField` — append **one** period accessor to read the number. py`.value`cs`.Value` is the most recent reported period; the `1M`–`12M` tokens are py`.one_month .two_months .three_months .six_months .nine_months .twelve_months`cs`.OneMonth .TwoMonths .ThreeMonths .SixMonths .NineMonths .TwelveMonths` respectively (trailing-twelve-month at `12M`). e.g. py`f.financial_statements.income_statement.net_income.twelve_months`cs`f.FinancialStatements.IncomeStatement.NetIncome.TwelveMonths`. Forgetting the accessor is silent — the wrapper compares as truthy and numeric inequalities give nonsense.
13
+
- A path with **no** bracket is read directly. e.g. py`f.valuation_ratios.pe_ratio`cs`f.ValuationRatios.PERatio`.
14
+
- The integer `*_code` fields compare against the named constants in the **Classification code constants** section at the end, e.g. py`f.asset_classification.morningstar_sector_code == MorningstarSectorCode.TECHNOLOGY`cs`f.AssetClassification.MorningstarSectorCode == MorningstarSectorCode.Technology`.
description: Use to look up the exact path or spelling of any Morningstar EARNING REPORT, COMPANY/SECURITY REFERENCE, or COMPANY PROFILE field on a QuantConnect/LEAN `Fundamental` object — everything under py`f.earning_reports.*`cs`f.EarningReports.*` (EPS, DPS, report/file dates, shares), py`f.company_reference.*`cs`f.CompanyReference.*` (country, exchange, industry template), py`f.security_reference.*`cs`f.SecurityReference.*` (security type, primary share, listing status, IPO date), and py`f.company_profile.*`cs`f.CompanyProfile.*`. Triggers — "path to file date of the earning report / basic EPS / primary exchange / share class / is primary share / IPO date". For other field families start at the equity-fundamental-data skill.
4
+
---
5
+
6
+
# Company data fields — `Fundamental` data points
7
+
8
+
Full path from the snapshot `f` with the field's description — copy the path rather than guessing from English names; a wrong path wastes a backtest run. The path-reading rules and the index of all field-family skills are in the **equity-fundamental-data** skill.
9
+
10
+
## Reading the paths
11
+
12
+
- A path ending in `.[value 1M 2M 3M 6M 9M 12M]` is a `MultiPeriodField` — append **one** period accessor to read the number. py`.value`cs`.Value` is the most recent reported period; the `1M`–`12M` tokens are py`.one_month .two_months .three_months .six_months .nine_months .twelve_months`cs`.OneMonth .TwoMonths .ThreeMonths .SixMonths .NineMonths .TwelveMonths` respectively (trailing-twelve-month at `12M`). e.g. py`f.financial_statements.income_statement.net_income.twelve_months`cs`f.FinancialStatements.IncomeStatement.NetIncome.TwelveMonths`. Forgetting the accessor is silent — the wrapper compares as truthy and numeric inequalities give nonsense.
13
+
- A path with **no** bracket is read directly. e.g. py`f.valuation_ratios.pe_ratio`cs`f.ValuationRatios.PERatio`.
14
+
- The integer `*_code` fields under `asset_classification` compare against the named constants in the **fundamental-classification** skill.
0 commit comments