**Dataset**: analyst4
**Region**: EUR
**Delay**: 1

# analyst4 Feature Engineering Analysis Report

**Dataset**: analyst4
**Category**: analyst
**Region**: EUR
**Analysis Date**: 2024-01-15
**Fields Analyzed**: 297

---

## Executive Summary

**Primary Question Answered by Dataset**: What do financial analysts collectively expect regarding future corporate performance across earnings, cash flows, balance sheet items, and per-share metrics?

**Key Insights from Analysis**:
- Dataset provides multi-dimensional analyst estimates including point estimates (mean, median), ranges (high, low), dispersion (std dev), and coverage (count) across key financial metrics
- Estimates are segmented by different methodologies/sources (adz, sadaf, af, qfv4) allowing for cross-validation of analyst consensus
- Rich set of per-share metrics (EPS, CFPS, BVPS, FCFPS) alongside absolute values enables structural analysis of capital efficiency
- Standard deviation and high/low spreads capture analyst disagreement, serving as proxies for uncertainty/information asymmetry

**Critical Field Relationships Identified**:
- High/Low/Median/Mean/Std form a distributional family describing the shape of analyst belief distributions
- Absolute metrics (Net Profit, EBITDA) vs Per-share metrics (EPS, CFPS) reveal capital structure and share count dynamics
- Operating metrics (EBIT, EBITDA) vs Cash metrics (CFO, CFI, CFF) distinguish between accrual and cash-based performance

**Most Promising Feature Concepts**:
1. **Analyst Dispersion Stability** - Standard deviation of estimates captures uncertainty; changes in dispersion predict volatility
2. **Estimate Revision Momentum** - Changes in median estimates reflect evolving analyst sentiment and information flow
3. **Consensus Skew** - Asymmetry between high/mean/median reveals optimistic/pessimistic bias in analyst communities

---

## Dataset Deep Understanding

### Dataset Description
The analyst4 dataset contains comprehensive broker estimates for European equities (EUR region), covering income statement items (revenue, EBIT, EBITDA, net profit), cash flow statement items (CFO, CFI, CFF, capex), balance sheet items (net debt, total assets, goodwill, book value), and per-share metrics (EPS, CFPS, BVPS, FCFPS, DPS). Data includes point estimates (mean, median), range boundaries (high, low), dispersion measures (standard deviation), and metadata (estimate count, forecast type flags). The dataset supports delay=1 configuration and covers TOP1200 universe.

### Field Inventory
| Field ID | Description | Data Type | Update Frequency | Coverage |
|----------|-------------|-----------|------------------|----------|
| `anl4_sadaf_netprofit_high` | Net profit - highest estimate | Float | Daily | ~85% |
| `anl4_sadaf_ebit_low` | EBIT - lowest estimate | Float | Daily | ~80% |
| `anl4_adz_ptpr_median` | Pretax income - median | Float | Daily | ~75% |
| `anl4_sadaf_cfo_median` | Cash Flow from Operations - median | Float | Daily | ~70% |
| `anl4_adz_bvps_median` | Book Value per Share - median | Float | Daily | ~90% |
| `anl4_af_cfps_low` | Cash Flow per Share - lowest | Float | Daily | ~65% |
| `anl4_sadaf_epsr_low` | GAAP EPS - lowest | Float | Daily | ~88% |
| `anl4_sadaf_dts_ffc` | Cash Flow from Financing - std dev | Float | Daily | ~40% |
| `anl4_adz_cfo_mean` | CFO - mean estimate | Float | Daily | ~70% |
| `anl4_sadaf_capex_number` | Capital Expenditures - estimate count | Integer | Daily | ~60% |
| `anl4_sadaf_netprofita_std` | Adjusted Net Income - std dev | Float | Daily | ~50% |
| `anl4_adz_netdebt_median` | Net Debt - median | Float | Daily | ~55% |
| `anl4_sadaf_totassets_mean` | Total Assets - mean | Float | Daily | ~45% |
| `anl4_af_eps_flag` | EPS - forecast type flag | Categorical | Daily | ~95% |
| `anl4_sadaf_ebitda_std` | EBITDA - std dev | Float | Daily | ~72% |

*(Additional 282 fields follow similar patterns across metrics and sources)*

### Field Deconstruction Analysis

#### `anl4_sadaf_netprofit_high` / `anl4_sadaf_netprofit_low` / `anl4_sadaf_netprofit_mean` / `anl4_sadaf_netprofit_median`
- **What is being measured?**: Distribution of analyst expectations for bottom-line net income
- **How is it measured?**: Aggregation of individual broker forecasts (high=max, low=min, mean=average, median=50th percentile)
- **Time dimension**: Forward-looking estimates for fiscal periods (quarterly/annual)
- **Business context**: Net profit is the ultimate measure of accounting profitability; the range reflects uncertainty and dispersion of views
- **Generation logic**: Sourced from broker research reports; sadaf methodology likely refers to a specific consolidation algorithm
- **Reliability considerations**: High coverage (number of estimates) increases reliability; low coverage may reflect illiquidity or limited analyst following

#### `anl4_sadaf_ebitda_std` / `anl4_af_dts_spe`
- **What is being measured?**: Dispersion (standard deviation) of analyst estimates for EBITDA and EPS respectively
- **How is it measured?**: Statistical standard deviation across contributing brokers
- **Time dimension**: Cross-sectional dispersion at a point in time (though evolves daily)
- **Business context**: Measures analyst disagreement/uncertainty; high dispersion suggests information asymmetry or volatile operating environment
- **Generation logic**: Calculated across all active estimates for the metric
- **Reliability considerations**: Std dev requires minimum number of estimates to be meaningful; single-estimate coverage yields undefined std dev

#### `anl4_adz_bvps_median` / `anl4_af_cfps_mean`
- **What is being measured?**: Per-share metrics for book value and cash flow
- **How is it measured?**: Balance sheet book value divided by shares outstanding (for BVPS); CFO divided by shares (for CFPS)
- **Time dimension**: Stock concept for BVPS (point-in-time), Flow concept for CFPS (period-based)
- **Business context**: Normalizes absolute metrics by share count for comparability; critical for valuation multiples
- **Generation logic**: Derived from absolute estimates divided by estimated shares outstanding
- **Reliability considerations**: Share count assumptions may vary between brokers; potential for divergence between sources (adz vs af)

#### `anl4_sadaf_capex_number` / `anl4_sadaf_rd_exp_number`
- **What is being measured?**: Analyst coverage depth for capital expenditures and R&D expenses
- **How is it measured?**: Count of distinct brokers providing estimates
- **Time dimension**: Daily snapshot of active estimate population
- **Business context**: Coverage count proxies for information environment richness; capex and R&D are discretionary investments indicating growth orientation
- **Generation logic**: Simple count of non-null estimates
- **Reliability considerations**: Sparse coverage for these items compared to EPS; may indicate modeled rather than forecasted values

### Field Relationship Mapping

**The Story This Data Tells**:
The dataset captures the collective intelligence of sell-side analysts regarding corporate future financial performance. Each metric (net profit, EBITDA, etc.) is not a single number but a distribution characterized by central tendency (mean, median), range (high, low), and uncertainty (std dev, count). The existence of multiple source methodologies (adz, sadaf, af, qfv4) suggests different data aggregation or vendor methodologies, enabling cross-validation. The relationship between operating profit (EBIT), cash generation (CFO), and financing (net debt) tells the story of how operations convert to cash and how the balance sheet evolves.

**Key Relationships Identified**:
1. **Distributional Family**: For each metric (e.g., netprofit), the set {high, low, mean, median, std, number} completely describes the analyst belief distribution
2. **Accrual vs Cash Bridge**: EBIT/EBITDA (accrual) → CFO (cash) → FCF (after capex) represents the conversion of earnings to cash
3. **Absolute to Per-Share Translation**: Net profit vs EPS, CFO vs CFPS, Book Value vs BVPS; differences reveal share count and dilution expectations
4. **Cross-Source Validation**: sadaf vs adz vs af estimates for the same metric; divergences indicate methodological differences or data latency
5. **Investment Intensity**: Capex and R&D relative to total assets or sales indicates growth vs maintenance corporate posture

**Missing Pieces That Would Complete the Picture**:
- Actual reported values for the forecasted periods (for accuracy/backtesting)
- Historical time series of these specific estimates (to measure revision paths)
- Analyst identity/ broker information (for weighting by accuracy)
- Forecast horizon specificity (exact fiscal period being estimated)

---

## Feature Concepts by Question Type

### Q1: "What is stable?" (Invariance Features)

**Concept**: Analyst Consensus Dispersion Stability
- **Sample Fields Used**: {sadaf_ebitda_std}, {sadaf_ebitda_mean}
- **Definition**: Coefficient of variation (std/mean) of EBITDA estimates, measuring relative disagreement stability
- **Why This Feature**: High stable dispersion indicates persistent uncertainty about operations; low dispersion suggests consensus. Changes in this stability predict information events.
- **Logical Meaning**: Captures the tightness of analyst clustering around operational expectations; structural uncertainty vs temporary confusion.
- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If yes, do use appropriate method to fill nan value in the following implementation example.
- **Directionality**: Higher values = greater analyst disagreement/uncertainty; Lower values = strong consensus
- **Boundary Conditions**: Near 0 = unanimous agreement; >1.0 = extreme dispersion (std > mean)
- **Implementation Example**: `divide({sadaf_ebitda_std}, abs({sadaf_ebitda_mean}))`

**Concept**: Estimate Range Invariance
- **Sample Fields Used**: {netprofit_high}, {netprofit_low}, {netprofit_median}
- **Definition**: Normalized spread between high and low estimates relative to median consensus
- **Why This Feature**: Measures how wide the optimistic/pessimistic bounds are relative to central expectation; stable wide ranges suggest structural business volatility.
- **Logical Meaning**: Quantifies the "disagreement premium" in analyst estimates; captures tail risk expectations.
- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If yes, do use appropriate method to fill nan value in the following implementation example.
- **Directionality**: Higher = greater uncertainty/divergence of opinions; Lower = tight consensus
- **Boundary Conditions**: 0 = all analysts agree exactly; >2.0 = high estimate >3x low estimate (extreme uncertainty)
- **Implementation Example**: `divide(subtract({netprofit_high}, {netprofit_low}), abs({netprofit_median}))`

---

### Q2: "What is changing?" (Dynamics Features)

**Concept**: Earnings Revision Momentum
- **Sample Fields Used**: {median_eps}, {eps_mean}
- **Definition**: Change in median EPS estimate over recent window (e.g., 5 days)
- **Why This Feature**: Analyst revisions are leading indicators of sentiment shifts; momentum captures information diffusion speed.
- **Logical Meaning**: Direction and magnitude of changing analyst expectations; positive momentum indicates improving fundamentals perception.
- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If yes, do use appropriate method to fill nan value in the following implementation example.
- **Directionality**: Positive = upward revisions (bullish); Negative = downward revisions (bearish)
- **Boundary Conditions**: Large positive/negative values indicate significant news/events; Near zero = stagnant expectations
- **Implementation Example**: `ts_delta({median_eps}, 5)`

**Concept**: Coverage Expansion/Contraction
- **Sample Fields Used**: {sadaf_netprofita_number}, {estimate_count_quarterly}
- **Definition**: Change in number of analysts covering specific metrics (net profit, sales)
- **Why This Feature**: Increasing coverage typically precedes significant corporate events or increased institutional interest; decreasing coverage may indicate loss of relevance.
- **Logical Meaning**: Proxy for information environment evolution and analyst attention allocation.
- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If yes, do use appropriate method to fill nan value in the following implementation example.
- **Directionality**: Increasing = growing analyst attention (information production); Decreasing = waning interest
- **Boundary Conditions**: Rapid increases (>50% change) suggest event-driven coverage; Stable counts indicate mature following
- **Implementation Example**: `ts_delta({sadaf_netprofita_number}, 10)`

---

### Q3: "What is anomalous?" (Deviation Features)

**Concept**: Consensus Skew Asymmetry
- **Sample Fields Used**: {netprofit_high}, {netprofit_mean}, {netprofit_median}
- **Definition**: Deviation of mean from median relative to the high-low range (measuring distribution skew)
- **Why This Feature**: Skew indicates optimistic/pessimistic bias; positive skew (mean > median) suggests outlier optimism.
- **Logical Meaning**: Captures the "fat tail" direction of analyst beliefs; reveals whether extreme views are optimistic or pessimistic.
- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If yes, do use appropriate method to fill nan value in the following implementation example.
- **Directionality**: Positive = right-skewed (optimistic outliers); Negative = left-skewed (pessimistic outliers)
- **Boundary Conditions**: +1 = mean equals high (extreme optimism); -1 = mean equals low (extreme pessimism); 0 = symmetric
- **Implementation Example**: `divide(subtract({netprofit_mean}, {netprofit_median}), subtract({netprofit_high}, {netprofit_low}))`

**Concept**: Cash Flow Divergence Signal
- **Sample Fields Used**: {cfo_median}, {netprofit_median}, {ebitda_median}
- **Definition**: Unusual deviation between operating cash flow and accrual earnings (net profit) relative to historical relationship
- **Why This Feature**: Large divergences between profit and cash flow indicate earnings quality issues or working capital anomalies.
- **Logical Meaning**: Measures the "cash conversion gap"; anomalies suggest non-recurring items or accounting adjustments.
- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If yes, do use appropriate method to fill nan value in the following implementation example.
- **Directionality**: Extreme positive = high cash conversion (quality earnings); Extreme negative = cash trapped in working capital (quality concerns)
- **Boundary Conditions**: Ratio >1.5 or <0.5 typically anomalous for mature firms
- **Implementation Example**: `subtract({cfo_median}, {netprofit_median})`

---

### Q4: "What is combined?" (Interaction Features)

**Concept**: Operating Leverage Proxy
- **Sample Fields Used**: {ebit_median}, {ebitda_median}
- **Definition**: Difference between EBITDA and EBIT margins (depreciation/amortization burden) relative to asset base
- **Why This Feature**: High D&A relative to EBIT indicates capital intensity and fixed cost structure; interaction with total assets reveals efficiency.
- **Logical Meaning**: Captures capital intensity and depreciation policy effects; interaction shows how fixed assets convert to operating profit.
- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If yes, do use appropriate method to fill nan value in the following implementation example.
- **Directionality**: Higher values (relative to assets) = high fixed asset intensity; Lower = asset-light operations
- **Boundary Conditions**: Near 0 = minimal depreciation; High values suggest heavy infrastructure or aggressive capitalization
- **Implementation Example**: `divide(subtract({ebitda_median}, {ebit_median}), {totassets_median})`

**Concept**: Profitability to Book Value Interaction
- **Sample Fields Used**: {ebit_median}, {bvps_median}
- **Definition**: Operating profitability relative to book value per share (proxy for expected ROE components)
- **Why This Feature**: Combines income statement strength with balance sheet valuation; high EBIT with low BVPS suggests efficient capital usage.
- **Logical Meaning**: Measures "operating yield" on book value; interaction reveals valuation disconnects.
- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If yes, do use appropriate method to fill nan value in the following implementation example.
- **Directionality**: Higher = strong operating returns on equity base; Lower = poor capital efficiency
- **Boundary Conditions**: Negative when losses occur; Very high values (>50%) suggest either undervaluation or peak earnings
- **Implementation Example**: `divide({ebit_median}, {bvps_median})`

---

### Q5: "What is structural?" (Composition Features)

**Concept**: Capital Expenditure Intensity Structure
- **Sample Fields Used**: {capex_median_value}, {sadaf_totassets_median}
- **Definition**: Capex as proportion of total assets (investment rate)
- **Why This Feature**: Reveals growth vs maintenance capital allocation; high ratios indicate expansionary phase or asset replacement cycles.
- **Logical Meaning**: Structural composition of asset base change; indicates reinvestment rate and growth capital proportion.
- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If yes, do use appropriate method to fill nan value in the following implementation example.
- **Directionality**: Higher = aggressive growth investment; Lower = maintenance mode or asset-light
- **Boundary Conditions**: >20% annual rate is high (heavy industry); <2% is low (mature/declining)
- **Implementation Example**: `divide({capex_median_value}, {sadaf_totassets_median})`

**Concept**: Leverage Structure Composition
- **Sample Fields Used**: {netdebt_median}, {totassets_median}, {totgw_median}
- **Definition**: Net debt minus goodwill as proportion of tangible assets (leverage excluding acquired intangibles)
- **Why This Feature**: Distinguishes between organic leverage and acquisition-driven leverage; goodwill-heavy structures indicate M&A history.
- **Logical Meaning**: True economic leverage composition; high values indicate balance sheet risk from operations vs acquisitions.
- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If yes, do use appropriate method to fill nan value in the following implementation example.
- **Directionality**: Higher = high financial leverage; Lower = conservative capitalization
- **Boundary Conditions**: >50% highly leveraged; Negative = net cash position
- **Implementation Example**: `divide(subtract({netdebt_median}, {totgw_median}), subtract({totassets_median}, {totgw_median}))`

---

### Q6: "What is cumulative?" (Accumulation Features)

**Concept**: Cumulative Estimate Revision Pressure
- **Sample Fields Used**: {median_eps}, {eps_mean}
- **Definition**: Accumulated sum of daily changes in median estimates over trailing window
- **Why This Feature**: Cumulative effect of persistent small revisions may be stronger than single large changes; captures sustained sentiment shifts.
- **Logical Meaning**: Total information shock accumulation over period; persistent accumulation indicates trending expectations.
- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If yes, do use appropriate method to fill nan value in the following implementation example.
- **Directionality**: Large positive = sustained upward revisions (bullish accumulation); Large negative = sustained downgrades
- **Boundary Conditions**: Bounded by information arrival rate; extreme values indicate continuous news flow
- **Implementation Example**: `ts_sum(ts_delta(ts_backfill({median_eps}, 20), 1), 20)`

**Concept**: Analyst Coverage Accumulation
- **Sample Fields Used**: {sadaf_rd_exp_number}, {sadaf_capex_number}, {sadaf_netprofita_number}
- **Definition**: Cumulative growth in analyst coverage for discretionary investment items (R&D, Capex) vs core earnings
- **Why This Feature**: Accumulating coverage of discretionary items indicates increasing scrutiny of capital allocation quality.
- **Logical Meaning**: Information environment evolution for investment decision analysis; cumulative attention shift.
- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If yes, do use appropriate method to fill nan value in the following implementation example.
- **Directionality**: Rising cumulative = increasing analyst focus on investment efficiency; Falling = neglect of capital allocation
- **Boundary Conditions**: Starts at 0 for new initiations; plateaus at maximum analyst following
- **Implementation Example**: `ts_sum(ts_delta({sadaf_capex_number}, 1), 30)`

---

### Q7: "What is relative?" (Comparison Features)

**Concept**: Cross-Sectional Dispersion Rank
- **Sample Fields Used**: {sadaf_netprofita_std}, {netprofit_mean}
- **Definition**: Rank of coefficient of variation (std/mean) across sector peers
- **Why This Feature**: Relative uncertainty vs peers matters more than absolute; high relative dispersion indicates stock-specific uncertainty.
- **Logical Meaning**: Information risk relative to comparable firms; ranks identify outliers in uncertainty distribution.
- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If yes, do use appropriate method to fill nan value in the following implementation example.
- **Directionality**: Higher rank = more uncertainty than peers (riskier information environment); Lower = clearer consensus vs peers
- **Boundary Conditions**: Rank 1 = highest uncertainty; Rank 0 = lowest uncertainty
- **Implementation Example**: `quantile(divide({sadaf_netprofita_std}, abs({netprofit_mean})), driver="uniform")`

**Concept**: Relative Valuation Anchor
- **Sample Fields Used**: {ptpr_median}, {bvps_median}, {div_median}
- **Definition**: Pretax income relative to book value, ranked within sector (proxy for relative ROE/PB deconstruction)
- **Why This Feature**: Combines income and book value to assess relative valuation efficiency; high profit with low book value indicates potential undervaluation.
- **Logical Meaning**: Cross-sectional positioning of profitability relative to accounting value; relative value creation efficiency.
- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If yes, do use appropriate method to fill nan value in the following implementation example.
- **Directionality**: Higher rank = higher profitability per unit book value (value creation leaders)
- **Boundary Conditions**: Extreme ranks indicate potential misvaluation vs peers
- **Implementation Example**: `quantile(divide({ptpr_median}, {bvps_median}), driver="gaussian")`

---

### Q8: "What is essential?" (Essence Features)

**Concept**: Sustainable Cash Flow Essence
- **Sample Fields Used**: {cfo_median}, {capex_median_value}, {div_median}
- **Definition**: Core discretionary cash flow after maintenance capex and dividends (true free cash flow to equity)
- **Why This Feature**: Strips away accrual accounting to reveal actual cash generation available for debt reduction/buybacks; essential measure of financial flexibility.
- **Logical Meaning**: The "essence" of shareholder value creation - actual distributable cash after maintaining operations and capital base.
- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If yes, do use appropriate method to fill nan value in the following implementation example.
- **Directionality**: Positive = self-funding entity with excess cash; Negative = cash-consuming entity requiring financing
- **Boundary Conditions**: Highly positive = cash cow; Persistent negative = speculative growth requiring external capital
- **Implementation Example**: `subtract(subtract({cfo_median}, {capex_median_value}), {div_median})`

**Concept**: Earnings Quality Essence
- **Sample Fields Used**: {netprofit_median}, {cfo_median}, {ebitda_median}
- **Definition**: Cash realization ratio (CFO/Net Profit) adjusted for depreciation (EBITDA-EBIT), measuring accrual vs cash earnings purity
- **Why This Feature**: Essential distinction between accounting earnings and cash reality; high quality means profits convert to cash.
- **Logical Meaning**: Core earnings convertibility; strips out non-cash accruals and working capital effects to show true cash generation capability.
- **is filling nan necessary**: we have some operators to fill nan value like ts_backfill() or group_mean() etc. however, in some cases, if the nan value itself has some meaning, then we should not fill it blindly since it may introduce some bias. so before filling nan value, we should think about whether the nan value has some meaning in the specific scenario. If yes, do use appropriate method to fill nan value in the following implementation example.
- **Directionality**: 1.0 = perfect cash conversion (high quality); <0.5 = poor conversion, high accruals (low quality)
- **Boundary Conditions**: >1.2 suggests working capital release or underreporting; <0 suggests losses with cash drain
- **Implementation Example**: `divide({cfo_median}, abs({netprofit_median}))`

---

## Implementation Considerations

### Data Quality Notes
- **Coverage**: Per-share metrics (CFPS, FCFPS) and discretionary items (Capex, R&D) have significantly lower coverage (~40-60%) than core EPS/Net Profit (~85%+)
- **Timeliness**: Daily updates but actual estimate revisions are event-driven; significant look-ahead bias if not using delay=1 properly
- **Accuracy**: Standard deviation requires minimum 2 estimates; many sparse fields return NaN for std dev
- **Potential Biases**: Analyst estimates are optimistic-biased on average; mean typically > median for earnings metrics

### Computational Complexity
- **Lightweight features**: Simple ratios and deltas (e.g., divide({cfo_median},{netprofit_median}), ts_delta({median_eps}, 5))
- **Medium complexity**: Time series aggregations with backfill (e.g., ts_sum with ts_backfill nested)
- **Heavy computation**: Cross-sectional quantile operations on sparse data (quantile(divide(...))) requiring dense grouping

### Recommended Prioritization

**Tier 1 (Immediate Implementation)**:
1. **Earnings Revision Momentum** (`ts_delta({median_eps}, 5)`) - Classic price predictor, clean data, high coverage
2. **Cash Conversion Ratio** (`divide({cfo_median}, {netprofit_median})`) - Fundamental quality metric, strong logical basis
3. **Analyst Dispersion** (`divide({sadaf_ebitda_std}, {sadaf_ebitda_mean})`) - Uncertainty proxy, well-documented in literature

**Tier 2 (Secondary Priority)**:
1. **Estimate Range Spread** - Captures tail risk, complementary to std dev
2. **Capex Intensity** - Growth indicator, useful for sector rotation
3. **Consensus Skew** - Sentiment asymmetry detection

**Tier 3 (Requires Further Validation)**:
1. **Coverage Change Dynamics** - Sparse data issues need validation
2. **Cross-Source Divergence** (adz vs sadaf) - Requires understanding vendor differences
3. **Per-share to Absolute reconciliations** - Complex share count assumptions

---

## Critical Questions for Further Exploration

### Unanswered Questions:
1. How do the different methodological prefixes (sadaf, adz, af, qfv4) differ in calculation methodology and which is most predictive?
2. What is the optimal lookback window for revision momentum - do quarterly revisions matter more than daily aggregates?
3. How does estimate dispersion interact with market volatility - does high analyst disagreement predict future realized volatility?

### Recommended Additional Data:
- Actual realized earnings (for estimate accuracy calculation and surprise measurement)
- Historical analyst-specific accuracy weights (to create weighted consensus)
- Corporate event dates (earnings announcements, guidance) to align revision timing

### Assumptions to Challenge:
- **Analyst rationality**: Do analysts truly update based on information, or is there herding behavior not captured by dispersion metrics?
- **Horizon homogeneity**: Are estimates for the same fiscal period comparable across brokers, or do different forecast horizons mix in the same fields?
- **Flag interpretation**: What do the _flag fields (eps_flag, div_flag) truly indicate - new estimates, revisions, or staleness?

---

## Methodology Notes

**Analysis Approach**: This report was generated by:
1. Deep field deconstruction to understand data essence (distributional nature of estimates, accrual vs cash dimensions)
2. Question-driven feature generation (8 fundamental questions covering stability, change, anomaly, combination, structure, accumulation, relativity, essence)
3. Logical validation of each feature concept against financial theory and data availability
4. Transparent documentation of reasoning and implementation constraints

**Design Principles**:
- Focus on logical meaning over conventional patterns (e.g., "Sustainable Cash Flow" rather than just "CFO")
- Every feature must answer a specific question (the 8-question framework)
- Clear documentation of "why" for each suggestion
- Emphasis on data understanding over prediction (what does dispersion mean?)

---

*Report generated: 2024-01-15*
*Analysis depth: Comprehensive field deconstruction + 8-question framework*
*Next steps: Implement Tier 1 features, validate assumptions, gather additional data as needed*