# Gf Dma Health Index

> Use when the user provides a ticker or asks for GF-DMA scoring, valuation/trend health, moving-average support, price-to-DMA divergence, ATR divergence, escape risk, estimate revisions, healthy momentum, or whether a rising/falling stock is fundamentally supported.

- Skill: `liujiayi3703/gf-dma-health-index` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add liujiayi3703/gf-dma-health-index`
- Raw SKILL.md: https://api.skillmd.com/api/skills/liujiayi3703/gf-dma-health-index/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools, Marketing & Growth
- Author: liujiayi3703 (https://skillmd.com/u/liujiayi3703)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/liujiayi3703/gf-dma-health-index

---


# GF-DMA Health Index

## Core Idea

Evaluate whether a stock's current price trend is supported by fundamental speed and moving-average structure.

Use the index to answer:

```text
Is the current price trend supported by revenue growth, profit growth, estimate revisions, and the 20/50/100/200DMA system?
```

Treat results as research analysis, not investment advice. For latest/current scoring, verify data from current sources before calculating.

## Required Inputs

Collect the newest available data before scoring:

- Price/technical data: latest price, 20DMA, 50DMA, 100DMA, 200DMA, ATR20, 5-day price change, and 20/50/100/200-day price changes or historical prices.
- Fundamental data: latest quarterly revenue, EPS, gross margin or gross profit, next-quarter company guidance, consensus revenue/EPS estimates, and 30-day estimate revisions.
- Preferred sources: company IR releases/presentations, earnings calls, Yahoo Finance historical prices/analysis, TradingView technicals/estimates, Barchart technical analysis, Seeking Alpha estimates, Koyfin, FactSet, Bloomberg, TIKR, or Visible Alpha.

For U.S.-listed companies, SEC filings can improve the fundamental side of the score. `edgartools` is an optional helper for retrieving the latest 10-K, 10-Q, 8-K, XBRL financial statements, filing text, insider transactions, and ownership filings.

If the environment does not already have it, install with `pip install edgartools` or `uv pip install edgartools`. The import package is `edgar`, not `edgartools`. SEC access requires an identity; set `EDGAR_IDENTITY="Name email@example.com"` in the environment or call `from edgar import set_identity; set_identity("name@example.com")` before requests.

Minimal usage pattern:

```python
from edgar import Company

company = Company("AAPL")
financials = company.get_financials()
income = financials.income_statement()
filings = company.get_filings(form="8-K")
```

Use SEC data for:

- reported quarterly revenue, gross profit, EPS, cash flow, balance sheet, share count, and historical trend baselines
- management language on demand, backlog, pricing, capacity, inventory, customer concentration, and risks
- 8-K earnings releases or guidance disclosures when they contain the newest company-provided numbers

Do not use SEC data for the technical module or revision module. Price, 20/50/100/200DMA, ATR20, 5-day price slope, consensus estimates, and 30-day estimate revisions still require market-data and estimate sources. When SEC data is used, state the filing form and filing date so the user can judge freshness.

If a required field is unavailable, say which field is missing and use the simplified formula only when appropriate.

## Calculation Workflow

### 1. Fundamental Speed

Calculate:

```text
G_f = 0.35G_Revenue + 0.25G_GrossProfit + 0.30G_EPS + 0.10G_Revision
```

Where:

- `G_Revenue = next-quarter revenue guidance / latest-quarter revenue - 1`
- `G_GrossProfit = next-quarter gross profit / latest-quarter gross profit - 1`
- `G_EPS = next-quarter EPS guidance / latest-quarter EPS - 1`
- `G_Revision = 30-day consensus estimate revision`

Fallbacks:

- If gross profit or EPS is missing: `G_f = 0.5G_Revenue + 0.5G_EPS`
- If only revenue guidance is available: `G_f = G_Revenue`

### 2. DMA Speed

Calculate quarterly annualized-equivalent moving-average speed for each DMA:

```text
G_DMAx = ((SMA_x(t) - SMA_x(t-k)) / SMA_x(t-k)) * (63 / k)
```

Use `k = 5` or `10` trading days by default. If only price-change data is available, approximate:

```text
DailySlope_x ~= (P_t - P_t-x) / x
G_DMAx ~= DailySlope_x * 63 / P_t
```

Compute `G_DMA20`, `G_DMA50`, `G_DMA100`, and `G_DMA200`.

### 3. Fundamental-DMA Match

Calculate:

```text
R_x = G_DMAx / G_f
```

Interpret `R_50` and `R_100` first:

| R_x | Status |
| ---: | --- |
| < 0.5 | Trend clearly below fundamental speed |
| 0.5-0.8 | Under-reflected or cheap versus trend |
| 0.8-1.3 | Healthy match |
| 1.3-2.0 | Hot but potentially explainable |
| > 2.0 | Overheated / FOMO escape risk |

Core DMA emphasis:

| Stock type | Key DMA |
| --- | --- |
| Mega-cap growth leaders like NVDA, AVGO, MSFT | 50DMA |
| Memory/cyclical semis like MU, SNDK | 100DMA |
| High-elasticity optical names like LITE, AAOI | 20DMA + 50DMA |
| Industrial AI/power names like ETN, VRT, TEL | 100DMA + 200DMA |
| Small-cap hard-manufacturing names like SIVE, CPSH | 20DMA + ATR divergence |
| Semiconductor ETFs like SOXX, SMH | 50DMA + 100DMA |

### 4. Price-DMA Divergence

Calculate:

```text
D_x = P_t / SMA_x(t) - 1
Z_x = (P_t - SMA_x) / ATR20
```

Interpretation:

| Signal | Status |
| --- | --- |
| 0%-5% above 20DMA | Healthy close-to-line trend |
| 5%-12% above 20DMA | Strong trend, mild valuation stretch |
| 12%-20% above 20DMA | Hot; divergence score should fall |
| >20% above 20DMA | Short-term escape; divergence score should fall sharply |
| >30% above 50DMA | Medium-term overheat |
| >50% above 100DMA | Major repricing |
| >100% above 200DMA | Extreme long-cycle repricing |
| 0%-5% below 20/50DMA with stable fundamentals | Healthy pullback; divergence score can rise |
| 5%-15% below 50DMA with stable/improving fundamentals | Better valuation entry, but verify trend damage separately |
| Below 100/200DMA with deteriorating fundamentals | Trend damage; do not treat as cheap automatically |

ATR divergence is asymmetric:

| Z_x | Status |
| ---: | --- |
| 0 to 2 | Healthy |
| 2 to 3 | Hot |
| 3 to 4 | Very hot |
| >4 | Escape; reduce divergence score sharply |
| -1 to 0 with stable fundamentals | Mild pullback; can improve valuation-health score |
| -3 to -1 with stable/improving fundamentals | Discounted pullback; score can be high, but check trend parallelism |
| < -3 or below key long DMA with estimate cuts | Possible breakdown; score should fall |

Important: `S_Divergence` is a valuation-health score, not a pure momentum score. Upward price-DMA divergence lowers the score because the stock is more stretched. Downward divergence raises the score only when fundamental speed and revision confirmation are stable or improving; if fundamentals are deteriorating, downward divergence is trend damage rather than an opportunity.

### 5. Trend Parallelism / Escape Ratio

Calculate:

```text
EscapeRatio = 5-day price slope / 50DMA daily slope
```

Interpretation:

| EscapeRatio | Status |
| ---: | --- |
| 0.8-1.2 | Price and 50DMA are parallel; healthy |
| 1.2-1.8 | Short-term acceleration; acceptable |
| 1.8-2.5 | Clearly hot |
| >2.5 | FOMO escape |
| 0-0.5 | Momentum decay |
| <0 | Short-term reversal; trend damage |

### 6. Revision Confirmation

Score estimate revisions:

| Revision state | Score |
| --- | ---: |
| Revenue and EPS estimates rising; company guide above consensus | 85-100 |
| Mild upward revisions; guide slightly above consensus | 70-85 |
| Stable expectations; limited upward revision | 55-70 |
| Revisions starting to fall | 35-55 |
| Guide below consensus; analysts cutting estimates | <35 |

## Divergence Module Scoring

Use asymmetric scoring for `S_Divergence`:

| State | Score |
| --- | ---: |
| Price close to 20/50DMA, above 100/200DMA | 80-95 |
| Stable/improving fundamentals; price below 20DMA but near 50DMA | 85-100 |
| Stable/improving fundamentals; price 5%-15% below 50DMA while long DMAs remain healthy | 75-95 |
| Price 5%-12% above 20DMA | 65-80 |
| Price 12%-20% above 20DMA | 50-70 |
| Price >20% above 20DMA or >30% above 50DMA | 25-55 |
| Price below 50DMA with weakening fundamentals or estimate cuts | 35-60 |
| Price below 100DMA with estimate cuts | 15-45 |
| Price below 200DMA with fundamental deterioration | 0-30 |

When price is below key DMAs, explicitly state whether the lower price is a healthy pullback or a breakdown. The deciding gate is fundamental speed plus revision confirmation.

## Final Scoring

Calculate total score out of 100:

```text
HealthScore = 40S_GrowthMatch + 25S_Divergence + 20S_Parallel + 15S_Revision
```

Module scoring:

| Module | Weight |
| --- | ---: |
| Fundamental speed match | 40% |
| Price-DMA divergence / pullback opportunity | 25% |
| Trend parallelism | 20% |
| Revision confirmation | 15% |

Final interpretation:

| Score | State | Meaning |
| ---: | --- | --- |
| 85-100 | Healthy Momentum | Healthy main uptrend |
| 75-85 | Strong but Watch | Strong trend; continue monitoring |
| 65-75 | Hot but Supported | Hot, but fundamentals can still support it |
| 55-65 | Damaged / Overheated | Trend damage or local overheat |
| 40-55 | High Risk | Risk clearly rising |
| <40 | Broken / Escaping | Broken trend or post-escape pullback |

## Output Format

Use this structure for every ticker:

```text
# TICKER: GF-DMA Health Index 评分

最终评分：XX / 100
状态：Healthy Momentum / Strong but Watch / Hot but Supported / Damaged / High Risk / Broken

一句话判断：
...

1. 基本面速度
- 最新季度营收：
- 下一季度营收指引：
- 营收 QoQ：
- EPS QoQ：
- 毛利润 QoQ：
- Fundamental Speed：

2. 均线速度匹配
| 均线 | 季度化斜率 | 相对基本面速度 | 判断 |
|---|---:|---:|---|
| 20DMA | | | |
| 50DMA | | | |
| 100DMA | | | |
| 200DMA | | | |

3. 股价-均线背离
| 指标 | 当前背离 | 判断 |
|---|---:|---|
| P / 20DMA - 1 | | |
| P / 50DMA - 1 | | |
| P / 100DMA - 1 | | |
| P / 200DMA - 1 | | |

4. 趋势平行度
- Escape Ratio：
- 判断：

5. 预期上修确认
- 公司指引 vs 市场预期：
- 过去 30 天预期变化：
- 判断：

6. 综合评分
| 模块 | 权重 | 分数 |
|---|---:|---:|
| 基本面速度匹配 | 40% | |
| 股价-均线背离 | 25% | |
| 趋势平行度 | 20% | |
| 预期上修确认 | 15% | |

结论：
...
```

## Detailed Reference

Read `references/original-framework.md` when a task needs the full Chinese framework text, examples, source priority list, or scoring tables in their original form.

