iideas18

akshare-stock-analysis

データ分析v1.0.0
作者:iideas18更新日 2026-05-11stock-kline-analysis@clawhub_iideas18/stock-kline-analysis
データ可視化データインサイト指標モニタリング#Stock

AlphaMoatによると、2026-09時点でakshare-stock-analysisのダウンロード数は2,295、スター数は0で、AIスキル全体5,078件中4,235位、データ分析では399件中319位です。

インストール数
160
ダウンロード数
2295
スター数
-
総合順位
#4,235
全体の上位 84% · データ分析の上位 80%
プラットフォームインストール数ダウンロード数スター数コメント
ClawHub ↗531967--
SkillHub ↗1602295-—

プラットフォームごとに集計方法と集計時点が異なります。

このスキルでできること

日足に週足・月足を加え、移動平均、ボリンジャーバンド、MACD、RSI、ATR などを表示します。トレンド、モメンタム、評価の背景、相対強度、イベントリスクを扱います。市場が不明確なら確認し、香港株・米国株の評価は利用できない場合があります。データは遅延・不完全なことがあり、投資助言ではありません。 Python、AkShare、matplotlib 等が必要です。日足が使えない場合は中止し、週足・月足の失敗は省略して明記します。マクロ日程は古く固定項目もあるため日付を確認し、サンプル価格や評価順位を実際の数値として使わないでください。

資料公開日 2026-10-27

できること

  • K 線と指標を分析する
  • 銘柄間の相対的な値動きとリスクを比較する

使う場面

  • データと売買判断を別途確認するとき

プロンプト例

スキルのドキュメントをもとに生成した例であり、実際の実行結果ではありません。

この銘柄を分析し、データ上の制約も明記して。
これらの銘柄を比較し、市場判定が不確かなら候補を示して。

月次の推移

ダウンロード数2295
589150524212026-03 · ダウンロード数 7152026-05 · ダウンロード数 12222026-06 · ダウンロード数 13982026-07 · ダウンロード数 16702026-08 · ダウンロード数 18442026-09 · ダウンロード数 229526-0326-09
スター数-
0112026-03 · スター数 -2026-05 · スター数 -2026-06 · スター数 -2026-07 · スター数 -2026-08 · スター数 -2026-09 · スター数 -26-0326-09

2026-09 から集計方法を変更し、同名スキルを作者ごとに分けて集計し、全スキルを対象にしました。破線は変更前の月で、変更後のデータとは直接比較せず、変更をまたぐ増減も計算していません。

月ダウンロード数前月比スター数
2026-092295—-
2026-081844+10.4%-
2026-071670+19.5%-
2026-061398+14.4%-
2026-051222—-
2026-03715—-

SKILL.md 原文

作者が公開した元のファイルをテキストのまま表示しています。AlphaMoat による編集や審査はしていません。リンクはクリックできません。コマンドは内容を確認してから実行してください。取得日 2026-10-23。

12 KB・ClawHub v1.0.0
---
name: stock-kline-analysis
description: Given a stock name or code, auto-detect its market, fetch 6-month daily K-line, plot candlestick + MA/Bollinger/MACD/RSI/ATR with multi-timeframe confirmation, and deliver structured analysis with trend, momentum, valuation context, portfolio-relative strength, and event-aware risk notes.
---

# Stock K-Line Analysis Skill

Use this skill when the user gives a stock name or code and wants K-line output and/or analysis, e.g.:
- "Analyze 600519"
- "K-line and trend for 贵州茅台"
すべて表示(全 285 行)
- "How is AAPL doing?"
- "Compare 000001 and 600036 by relative strength"

## Defaults (baked-in)

| Parameter | Default |
|---|---|
| Market | Auto-detect; only ask if unresolvable or genuinely ambiguous |
| K-line period | Daily (primary) + Weekly & Monthly for multi-timeframe |
| Time range | Last 6 months (today − 182 days) for daily; auto-extend for weekly/monthly |
| Price adjust | `qfq` for A-share; none for HK/US |
| Indicators | MA5/MA20/MA60, Bollinger Bands (20,2), MACD (12/26/9), RSI-14, ATR-14 |
| Language | Bilingual: Chinese label + English explanation |

User overrides these defaults at any time.

## Market Auto-Detection Rules

| Code pattern | Inferred market |
|---|---|
| 6-digit starting with 6 | A-share Shanghai |
| 6-digit starting with 0 or 3 | A-share Shenzhen |
| 5-digit starting with 0 | HK (prefix `0`) |
| 4–5 chars, letters | US (NYSE/NASDAQ) |
| Name only | Search A-share first, then HK; disambiguate if needed |

If detection confidence is low, list top-2 candidates and ask once.

## AkShare API Reference

| Market | AkShare function |
|---|---|
| A-share daily | `ak.stock_zh_a_hist(symbol, period="daily", start_date, end_date, adjust="qfq")` |
| A-share real-time | `ak.stock_zh_a_spot_em()` (network may fail — wrap in try/except) |
| HK daily | `ak.stock_hk_daily(symbol, adjust="qfq")` |
| US daily | `ak.stock_us_daily(symbol, adjust="qfq")` |
| A-share symbol list | `ak.stock_info_a_code_name()` |
| Financial indicators | `ak.stock_financial_analysis_indicator(symbol, start_year)` — EPS, ROE, margins (use this; `stock_a_lg_indicator` does NOT exist) |
| Latest earnings summary | `ak.stock_yjbb_em(date="YYYYMMDD")` — EPS, revenue, net profit YoY, industry |
| Industry PE | `ak.stock_industry_pe_ratio_cninfo(symbol)` |
| Macro calendar | `ak.news_economic_baidu()` — date column is `datetime.date` objects; data may be stale (up to ~2 months behind current date) |

## Scripts

All implementation code lives in `scripts/` next to this file. You can run a full analysis end-to-end with:

```bash
python .github/skills/stock-kline-analysis/scripts/run_analysis.py 000063
python .github/skills/stock-kline-analysis/scripts/run_analysis.py 贵州茅台
python .github/skills/stock-kline-analysis/scripts/run_analysis.py AAPL --out-dir /tmp/reports
```

| Script | Purpose |
|---|---|
| `scripts/run_analysis.py` | CLI orchestrator — runs all steps end-to-end |
| `scripts/fetch_kline.py` | Step 2 — multi-timeframe K-line fetch with retry/fallback |
| `scripts/indicators.py` | Step 3 — compute MA/BB/MACD/RSI/ATR for all timeframes |
| `scripts/chart.py` | Step 4 — 4-panel matplotlib chart (K线+BB \| Vol \| MACD \| RSI-14) |
| `scripts/valuation.py` | Step 5 — fetch EPS/revenue/ratios and compute PE/PB |
| `scripts/events.py` | Step 7 — macro events with hardcoded fallback calendar |

Each script has a `__main__` smoke-test (e.g. `python fetch_kline.py 000063`).

---

## Workflow

### Step 1 — Resolve Identifier

1. Apply market auto-detection rules to the raw input.
2. If code is numeric and 6-digit, run `ak.stock_info_a_code_name()` to confirm name.
3. If name is given, filter symbol list for closest match.
4. If ambiguous (>1 high-confidence match), show max 3 options and ask.
5. If unresolvable, report clearly and stop.

Completion check: one confirmed `{code, name, market}` tuple before fetching any data.

---

### Step 2 — Fetch K-Line Data

See **`scripts/fetch_kline.py`** — `fetch_all_timeframes(code, adjust="qfq")` returns `(df_daily, df_weekly, df_monthly)`, all normalized.

Key implementation notes (do NOT get wrong):
- `stock_zh_a_hist` returns **12 Chinese-named columns** — always use explicit `rename(col_map)`, never positional assignment.
- Windows: daily = last 182 days, weekly = last 365 days, monthly = last 3 years.

```python
from scripts.fetch_kline import fetch_all_timeframes
df_daily, df_weekly, df_monthly = fetch_all_timeframes(code)
```

Fallback logic:
- On network error, retry once.
- If daily fetch is empty: report (suspended / delisted / wrong symbol / holiday) and stop.
- Weekly/monthly failures: skip that timeframe and note it in output.

Completion check: `len(df_daily) > 20` and all OHLCV columns present and non-null.

---

### Step 3 — Compute Indicators

See **`scripts/indicators.py`** — `add_indicators(df)` and `add_tf_indicators(df_weekly, df_monthly)`.

Critical notes:
- `bb_width` = `(upper − lower) / mid * 100` — result is a **percentage** (e.g. 12.7, not 0.127).
- RSI must use a standalone helper; do **not** chain `.diff()` twice on the same series.
- Support/resistance stored in `df.attrs["support"]` / `df.attrs["resistance"]`.

```python
from scripts.indicators import add_indicators, add_tf_indicators
df_daily = add_indicators(df_daily)
df_weekly, df_monthly = add_tf_indicators(df_weekly, df_monthly)
```

If fewer than 60 bars exist on daily, use all available and note the limitation. Bollinger Bands require minimum 20 bars.

---

### Step 4 — Build K-Line Chart

**Primary path — matplotlib** (4-panel: K线+布林带 | 成交量 | MACD | RSI-14):

See **`scripts/chart.py`** — `plot_kline(df, code, name, out_path, market_label, dpi)` returns the saved path.

> `mplfinance` is **NOT installed** in the base environment. `chart.py` calls `matplotlib.use("Agg")` at module level — always import before pyplot.

```python
from scripts.chart import plot_kline
chart_path = plot_kline(df_daily, code=code, name=name, market_label="A股",
                        out_path=f"{code}_kline.png")
```

Fallback (text table — only if matplotlib is also unavailable), latest 20 bars:
```
date        close   MA20    BB_up   BB_low  RSI14   ATR%
2026-02-10  15.38   14.90   16.20   13.60   58.3    1.4%
...
```

---

### Step 5 — Valuation Context

See **`scripts/valuation.py`** — `fetch_valuation(code)` and `compute_pe_pb(result, last_close)`.

> `ak.stock_a_lg_indicator` and `ak.stock_a_indicator_lg` **do not exist** — use `stock_yjbb_em` + `stock_financial_analysis_indicator` instead (both implemented in `valuation.py`).

```python
from scripts.valuation import fetch_valuation, compute_pe_pb
val = fetch_valuation(code)
val = compute_pe_pb(val, last_close=float(df_daily["close"].iloc[-1]))
# val keys: eps, revenue, revenue_yoy, net_profit, net_profit_yoy,
#           book_value_per_share, roe, gross_margin, industry,
#           report_date, fin_df, pe_ttm, pb
```

For HK/US: skip valuation section or note it as unavailable.

Report:
- Current PE (TTM, computed from EPS), PB.
- ROE and net profit margin.
- Revenue/profit YoY growth from latest report.
- Industry classification.
- Note: historical PE percentile not available without `stock_a_lg_indicator`; skip that sub-bullet and state the reason.

---

### Step 6 — Portfolio / Relative Strength Mode

Activated when user provides multiple symbols (e.g. "compare 600519 and 000858").

1. Fetch 6-month daily data for all symbols (same window as default).
2. Compute normalized 6-month return (base=100 on start date).
3. Compute 20-day rolling volatility and ATR% for each symbol.
4. Rank by: return, Sharpe-proxy (return/vol), RSI, and ATR% (lower = more stable).
5. Produce a comparison table and identify the relative leader.

Single-symbol mode: compare to its own industry index if identifiable.

---

### Step 7 — Event-Aware Risk Overlay

See **`scripts/events.py`** — `fetch_events(lookback_days, lookahead_days, min_importance)` returns a list of formatted strings.

> `news_economic_baidu()` date column is `datetime.date` objects — compare natively. Data **lags 4–8 weeks**; `events.py` always appends a hardcoded China macro calendar (PMI, Two Sessions, earnings windows) regardless of API success.

```python
from scripts.events import fetch_events
event_lines = fetch_events()  # returns list[str] ready to print
```

Overlay on analysis:
- Note any major macro event dates near current price levels.
- Flag the applicable earnings season window relative to today.
- Highlight price behavior around large news days visible in the K-line.

If event API is unavailable, note it and manually annotate the known calendar dates above.

---

### Step 8 — Deliver Structured Output

Return in this exact order:

```
[Symbol Summary]
名称/代码:           e.g. 贵州茅台 (600519) · A-Share Shanghai
分析区间:            2025-09-12 → 2026-03-12 (daily 6M, qfq-adjusted)
多周期确认:          Weekly trend: Uptrend | Monthly trend: Consolidation

[K-Line Snapshot]
最新收盘:           ¥1,580.00
1日涨跌:           +1.2% (+18.80)
MA5 / MA20 / MA60: ¥1,572 / ¥1,540 / ¥1,490   (排列多头 Bullish stack)
布林带 Bollinger:  Upper ¥1,640 | Mid ¥1,540 | Lower ¥1,440  (Width: 12.7%)
ATR-14 (波动幅):   ¥22.4 / day  (1.4% of price — moderate volatility)
20日区间:           ¥1,420 – ¥1,610
成交量 vs 20日均:   +35%  (放量)

[Technical View — 技术面]
趋势 Trend:         Daily Uptrend — MA5 > MA20 > MA60, price above all MAs
                    Weekly confirm: above weekly MA20 ✓
                    Monthly confirm: testing monthly MA20 resistance ⚠
动量 Momentum:     5D: +3.1% | 10D: +5.8% | 20D: +8.2% | Ann.Vol: 18%
MACD:              MACD line above signal, histogram expanding → bullish momentum
RSI-14:            68 — approaching overbought; momentum still intact
布林挤压 BB Squeeze: Width 12.7% — expanding (breakout in progress, not overextended)
支撑 Support:      ¥1,490 (MA60 + BB lower + prior swing low)
阻力 Resistance:   ¥1,640 (BB upper) / ¥1,650 (6M high zone)
ATR止损参考:       Trailing stop = last close − 1.5×ATR = ¥1,580 − ¥33.6 ≈ ¥1,546

[Valuation — 估值]
PE (TTM):          28x — 3-year 40th percentile (moderate)
PB:                8.2x
行业 PE 中位:      25x (white spirits industry) → slight premium to peers

[Relative Strength]  (if multi-symbol mode)
Symbol   6M Return  Vol    Sharpe  RSI   ATR%   Rank
600519   +22%       18%    1.22    68    1.4%   1st ← Leader
000858   +14%       21%    0.67    55    1.7%   2nd

[Event Overlay — 事件]
- 2026-03-15: NPC economic policy announcement (macro risk)
- 2026-04-30: Q1 earnings release window (re-rating trigger)
- No major gap days observed in 6M K-line window.

[Risk & Watchpoints — 风险]
- 多单失效: If price closes below MA20 (¥1,540) on volume → trend weakening
- 布林下轨破位: Price below BB lower (¥1,440) = volatility expansion to downside
- 超买风险: RSI near 70; daily overbought but weekly RSI 58 = room still exists
- ATR止损: Position sizing reference — 1 ATR = ¥22.4; adjust size accordingly
- 突破条件: Break above BB upper (¥1,640) + volume >+50% avg → momentum continuation
```

## Quality Criteria

- Market mapping is stated and auditable.
- All indicator values are computed from actual fetched data, not estimated.
- Valuation section states data source and percentile basis.
- Event overlay explicitly covers ±30 days around analysis date.
- No language implying guaranteed price direction or investment advice.
- If any section fails (e.g. valuation API times out), skip it with an explicit note.

## Example Prompts

- "Use stock-kline-analysis to analyze 600519."
- "Use stock-kline-analysis for 贵州茅台 — show K-line with Bollinger Bands, MACD, RSI, and ATR stop-loss."
- "Use stock-kline-analysis on AAPL — multi-timeframe trend: are daily/weekly/monthly aligned?"
- "Use stock-kline-analysis to compare 600036 and 601318 by relative strength and ATR-based risk."
- "Use stock-kline-analysis for 000858 — show Bollinger squeeze and flag any upcoming earnings event."
- "Use stock-kline-analysis for TSLA — is price near Bollinger upper band? What does ATR say about position sizing?"

データ分析の人気スキル

AdMapixデータ分析

AdMapix のデータ取得層で、広告やアプリの問い合わせを API 呼び出しに変え、生の JSON だけを返します。

↓ 36.6万★ 304fly0pants
Tavily Searchデータ分析

Tavily 経由で公開ウェブを検索し、リンクと抜粋付きの構造化結果を返します。

↓ 12.2万★ 286Xiaoran Li
Data Analysisデータ分析

データベースや表計算、書き出した生データを意思決定に使える結論へ変えるデータ分析スキルです。

↓ 10.1万★ 244Iván
Stock Analysisデータ分析

Yahoo Finance のデータで株式と暗号資産を分析し、ポートフォリオを追跡するスキルです。

↓ 7.5万★ 299udiedrichsen
Stock Watcherデータ分析

ローカルのウォッチリストを管理し、銘柄コードごとに同花順の相場と足元の値動きを要約するスキルです。

↓ 6.5万★ 122Robin797860
全国招标中标查询及分析【知了标讯】データ分析

全网招中标数据查询与分析助手。当用户涉及以下任何场景时,必须使用此SKILL:查询招标/中标公告、搜索标讯、查找临期/即将到期项目、商机预测、推荐潜在投标供应商、分析公司主营业务/历史中标、查询公司上下游合作客户与供应商、分析竞争对手/竞对企业、查询Top采购单位/Top中标单位/Top中标品牌、招中标数据统计分析(按月/季/年/省份/品牌等维度)、查询品牌型号历史中标单价/价格趋势、市场分析/行业分析/采购寻源/渠道拓展等采购与投标相关场景。即使用户没有提到「知了标讯」,只要涉及招投标、采购、中标、供应商、竞争对手等关键词,都应使用本SKILL。

↓ 5.6万★ 13user_98035bfb
Blogwatcherデータ分析

ブログと RSS/Atom フィードの更新をコマンドラインで追跡します。

↓ 5.4万★ 75Peter Steinberger
Model Usageデータ分析

Codex や Claude のモデル別の利用コストを集計するスキルです。

↓ 5万★ 114Peter Steinberger

データ月:2026-09 · ダウンロード数、スター数、インストール数は公開スキルレジストリ(ClawHub、SkillHub)から月単位で集計しています。詳しくはデータの方法論をご覧ください。