mcpField
S
stockaskill

stockaskill

github.com/axjingデータ・データベース255 回インストール1 日前に更新
リポジトリ

stockaskill について

stockaskillは、投資家やアナリスト向けのローカル優先の銘柄調査スキルです。A株、香港株、米国株、ETFを対象に、キャッシュデータを使った分析、スキャン、ポートフォリオ構築、バックテスト、調査記録を行います。

主な機能

  1. 01銘柄分析と売買・保有診断
  2. 02複数市場のスキャンとモメンタム順位付け
  3. 03ポートフォリオ構築とバックテスト
  4. 04ETFスクリーニングとデータ同期
  5. 05投資テーゼの記録とスコアカード
  6. 06増分更新型のローカルキャッシュ

活用シーン

  1. 01コードや市場を指定した銘柄評価
  2. 02市場別またはモメンタムによる銘柄順位付け
  3. 03ポートフォリオの構築や検証
  4. 04投資テーゼの記録と振り返り

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/axjing/stockaskill --skill stockaskill

インストール後、Claude Code で/stockaskillを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
akshare_api.md
akshare_official_docs.md
deep-diagnosis.md
enhanced-momentum.md
factors.md
market-source-playbook.md
output-style-and-language.md
python-api.md
research-sources.md
risk-and-compliance.md
scorecards.md
sentiment.md
serenity-dialogue-protocol.md
strategies.md
theme-research.md
thesis-memory.md
workflows.md
scripts/
backtest_enhanced.py
cache.py
cli.py
scripts/advisor/
__init__.py
diagnosis.py
scanner.py
scripts/commands/
__init__.py
_common.py
analyze.py
backtest.py
market_regime.py
portfolio.py

詳細

スマート株式セレクター

AKShare と SQLite キャッシュを活用した複数市場の銘柄選定です。A 株、香港株、米国株に対応し、ファンドのワークフローでは ETF を優先します。

主な特長

銘柄コード、市場、または投資テーマを指定すると、スコア付きの実用的なシグナルを返します。 まずローカルキャッシュを使用します。不足または古くなった銘柄プール、履歴、ファンダメンタルズ、指数データのみを取得します。 無差別に市場全体の全期間データを更新するのではなく、タスクの対象範囲に応じてデータをウォームアップします。 このスキルをデータウェアハウスや市場全体の同期プラットフォームとして扱わないでください。

対象範囲

  • このスキルはローカル優先の分析・意思決定エンジンとして扱います。
  • 銘柄、ウォッチリスト、ポートフォリオ、スキャン対象ユニバース、ETF の範囲に絞った同期を優先します。
  • 現時点では、FUND は ETF 優先の動作として扱います。
  • このスキルが、広範な投資信託の調査や市場全体の日次同期のオーケストレーションを提供するかのように扱わないでください。

起動条件

次のいずれかの意図が示された場合に起動します。

キーワード/パターン想定される意図
600519、AAPL、0700.HK、510300 のようなコード個別銘柄の分析または診断
贵州茅台 のような中国語の銘柄名銘柄プールから特定して分析
[市場] の上位銘柄を探す市場スキャン
ランキング、アルファ、モメンタムアルファ・モメンタムスキャン
ポートフォリオ、组合、アロケーションポートフォリオ構築
バックテスト、回测、検証過去データのバックテスト
ETF、场内基金、510300、159915ETF のスクリーニング/ETF データ同期
ワークフロー、ルート、ルーチン、路线图?ワークフローの推奨/マニフェストのルーチン
投資仮説、事後分析、复盘、投資仮説メモリー投資仮説の記録/レビュー/事後分析
テーマ、主题、産業チェーン?テーマ調査
スコアカード、アトリビューション、评分卡?構造化評価/アトリビューション
センチメント、sentiment、情绪市場センチメントの確認
更新、刷新、キャッシュデータ操作

開始する前に

まず Python 環境を確認します。

python --version
uv pip list >/dev/null

python が >=3.10 でない場合、または環境がないために uv pip list が失敗する場合は、uv を使ってローカル環境を構築します。

uv venv --python 3.10 "$SKILL/.venv"
# Linux/macOS の場合:
source "$SKILL/.venv/bin/activate"
# Windows の場合:
# "$SKILL\.venv\Scripts\activate.ps1"
uv pip install akshare efinance baostock pandas numpy scipy

スキルのスクリプトは、スキルのインストールディレクトリ内にあります。ほとんどのシステムでは、~/.agents/skills/stockaskill/(Linux/macOS)または %USERPROFILE%\.agents\skills\stockaskill\(Windows)です。run.py には絶対パスを使用します。

# すべてのコマンドでスキル専用の Python 環境を使用します:
# Linux/macOS の場合:
"$SKILL/.venv/bin/python" "$SKILL/scripts/run.py" fetch pool

# Windows の場合:
"$SKILL\.venv\Scripts\python.exe" "$SKILL\scripts\run.py" fetch pool

以下のコマンドでは、簡潔にするため、$SKILL はスキルのインストールディレクトリを表します。

キャッシュが空の場合、analyze、diagnose、scan、alpha、portfolio、backtest は、スコアリングの前に必要なデータだけをウォームアップします。

パラメーターの推定

ユーザーの意図を CLI パラメーターに対応付けます。

ユーザー入力推定されるコマンド
「分析 600519」analyze 600519 --market A
「テスラを分析」または「TSLA を分析」analyze TSLA --market US
「テンセントを分析」または「0700 を分析」analyze 0700 --market HK
「贵州茅台を分析」銘柄プールから名前→コードを特定してから、analyze <code> --market A
「香港株の上位10銘柄をスキャン」scan HK --top 10
「米国株のモメンタムランキング」alpha US --top <N>
「600519,000858 のポートフォリオ、資金50万」portfolio --codes 600519,000858 --capital 500000 --market A
「バックテスト」(市場の指定なし)backtest --market A(デフォルト)
「米国株をバックテスト」backtest --market US
「ETF スクリーニング」scan FUND --top <N>

ユーザーが値を指定しない場合は、CLI のデフォルト値を使用します。 スキャンは --top 20、アルファは --top 10、ポートフォリオは --capital 1000000、個別銘柄コマンドは --market A です。

ローカルキャッシュとデータ戦略

すべての市場データは、/.cache/quant_cache.db にあるローカルキャッシュデータベースに保存されます(デフォルトは SQLite)。設定で db_engine: "duckdb" を指定すると、列指向ストアの DuckDB ファイル quant_cache.duckdb に切り替わります。テーブルは同じで、インターフェースもそのまま置き換え可能です。切り替える前に、一度 cache migrate を実行してください。キャッシュは、キャッシュ優先+増分同期の戦略に従います。

  1. まずキャッシュから読み込み — データをリクエストするたびに、API を呼び出す前に SQLite を確認します。
  2. 不足している期間のみ取得 — キャッシュに日付 X までのデータがあれば、X から今日までのデータのみを取得します(修正に備えて3日間の重複期間を設けます)。履歴全体を再ダウンロードすることはありません。
  3. 初回起動時に全履歴を取得 — 銘柄の初回実行時は、安全な基準日(A:2000-01-01、HK:1995-01-01、US:1990-01-01)から取得します。以降の読み込みは増分になります。
  4. 複数のデータソースにフォールバック — K 線:baostock → AKShare/EastMoney → efinance(A 株)|AKShare → yfinance(HK/US)。ファンダメンタルズ:THS(A 株)/Analysis indicator(HK)→ Sina → yfinance。繰り返し失敗するデータソースは自動的にバックオフされます。
  5. UPSERT 書き込み — 常に最新のデータが優先され、重複データは上書きされます。

キャッシュには次の内容が含まれます。

テーブル内容
stock_poolA/HK/US/FUND の銘柄リストとメタデータ
daily_priceK 線の履歴(OHLCV)、コードと日付をキーに管理
factor_snapshotファンダメンタルズのスナップショット(PE/PB/ROE など)
computed_factors事前計算済みのファクタースコア
fund_infoETF プールのメタデータ
fund_navETF の NAV 履歴
market_index指数 K 線の履歴
api_usage日次 API 呼び出しの追跡情報
sync_state銘柄ごとの同期ステータスと対象日付
financial_report決算期ごとの財務データ
factor_daily_snapshot事前計算済みの日次ファクタースナップショット(K 線の同期後に作成)
data_quality_logデータ品質チェック/修復の監査履歴
data_quality_backoff修復失敗時のバックオフ(銘柄ごと+データ種別ごと)

キャッシュは、初回のデータ取得または同期時に自動作成されます。安全に削除でき、fetch pool または sync symbol で再度ウォームアップできます。

ワークフロー

1. 個別銘柄の分析

規則に従ってコードを正規化します。6xxxxx/0xxxxx/3xxxxx = A、xxxx.HK = HK、プレーンなティッカー = US。

uv run python "$SKILL/scripts/run.py" analyze <code> --market <A|HK|US>

出力:PE/PB/ROE/配当、総合ファクタースコア、戦略シグナル。

2. 詳細な診断

リスク評価を含む包括的な BUY/SELL/HOLD の診断です。

uv run python "$SKILL/scripts/run.py" diagnose <code> --market <A|HK|US>

JSON 構造:final_decision.signal、adjusted_score、factors、strategy、 technical、sentiment、fundamentals、risks。

結果の提示方法:

  • BUY -> 損切りと利益確定の目安を含めます
  • SELL -> リスク要因を説明します
  • HOLD -> どのような変化が必要かを説明します

詳細なレポートを作成する場合:

uv run python "$SKILL/scripts/run.py" deep-diagnose <code> --market <A|HK|US> --format <json|md|both>

意思決定の要約、根拠、リスク、判断の無効化条件、追加の質問を含むメモ形式の詳細な診断をユーザーが求めている場合は、deep-diagnose を使用してください。

3. ワークフローのルーティングとマニフェスト

ユーザーの目的に合った、範囲を限定したワークフローを提案します。

uv run python "$SKILL/scripts/run.py" route "<user goal description>"

組み込みのワークフローマニフェストを確認します。

uv run python "$SKILL/scripts/run.py" workflow list
uv run python "$SKILL/scripts/run.py" workflow run <workflow-name> --market <A|HK|US>

重要:workflow run はマニフェストを具体的なルーチンに解決するだけです。シェルコマンドやバックグラウンドジョブは実行しません。

4. 市場スキャン
uv run python "$SKILL/scripts/run.py" scan <market> --top <N>
# デフォルトの mode=auto:新しいスナップショットを優先し、なければ範囲を限定したリアルタイムデータにフォールバックします
# そのほか:scan HK --top 10、scan US --top 15、scan FUND --top 20

明示的にモードを指定する場合:

uv run python "$SKILL/scripts/run.py" scan <market> --mode snapshot --top <N>
uv run python "$SKILL/scripts/run.py" scan <market> --mode realtime --top <N>

スキャン結果がすべてゼロの場合は、alpha モードに切り替えます:

uv run python "$SKILL/scripts/run.py" alpha <market> --top <N> --candidates <M>

注:Python のワンライナーをその場で実行したり、スキルのモジュールをインポートしたりする場合は、 依存関係が正しく解決されるよう、スキル専用の Python 環境($SKILL/.venv/bin/python または $SKILL\.venv\Scripts\python.exe)を使用してください。

5. アルファ・モメンタムスキャン

スレッド並列スコアリングによる、多因子の総合ランキングです:

uv run python "$SKILL/scripts/run.py" alpha <market> --top <N> --candidates <M>

結果には、スコア、シグナル、F-Score、BUY のサマリーを含むランキングが表示されます。 上位銘柄のランキングを押し上げた要因(モメンタム+低ボラティリティ+クオリティで約73%)を説明してください。

6. ポートフォリオ構築

portfolio と portfolio-enhanced はどちらも、現在「同期してからキャッシュのみを使用する」方式に従います。 まず対象銘柄の不足している履歴データとファンダメンタルデータを同期し、その後はローカルキャッシュのみを使ってスコアリングします。 これにより、分析中の API データ取得の重複を防ぎます。

標準ポートフォリオ:

uv run python "$SKILL/scripts/run.py" portfolio --codes <code1,code2,...> --capital <amount> --market <A|HK|US>

拡張型コア・サテライト:

uv run python "$SKILL/scripts/run.py" portfolio-enhanced --capital <amount>

ポートフォリオデータを事前に準備する場合(任意):

uv run python "$SKILL/scripts/run.py" sync portfolio --codes <code1,code2,...> --market <A|HK|US>
7. バックテスト

標準バックテスト(Alpha Momentum、2018-2026):

uv run python "$SKILL/scripts/run.py" backtest

拡張バックテスト(コア・サテライト):

uv run python "$SKILL/scripts/run.py" backtest-enhanced

バックテストでは、不足している銘柄の一部と市場指数データをまとめて取得し、データを準備します。 実行のたびに市場全体の過去データを強制的に同期することはありません。

8. ファンド/ETF のスクリーニング
uv run python "$SKILL/scripts/run.py" scan FUND --top <N>

プログラムからより詳細にアクセスする場合:

# まず scripts ディレクトリを sys.path の先頭に追加する必要があります
import sys, os; sys.path.insert(0, os.path.join(os.environ.get("SKILL", "."), "scripts"))
from data_engine import get_etf_pool, get_etf_nav
funds = get_etf_pool()
nav = get_etf_nav("510300", days=365)

現在の FUND の動作は ETF を優先します。幅広い投資信託の NAV 取り込みは、まだ主要な対応ワークフローではありません。

9. リサーチメモリーとテーマ別ワークフロー

投資仮説のメモリー:

uv run python "$SKILL/scripts/run.py" thesis capture <code> --market <A|HK|US>
uv run python "$SKILL/scripts/run.py" thesis list --market <A|HK|US>
uv run python "$SKILL/scripts/run.py" thesis review --code <code> --market <A|HK|US>
uv run python "$SKILL/scripts/run.py" thesis postmortem --code <code> --market <A|HK|US> --outcome <win|loss|neutral>

テーマリサーチ:

uv run python "$SKILL/scripts/run.py" theme-scan <keywords...> --market <A|HK|US> --top <N>

スコアカード:

uv run python "$SKILL/scripts/run.py" scorecard diagnose <code> --market <A|HK|US>
uv run python "$SKILL/scripts/run.py" scorecard thesis --code <code> --market <A|HK|US>
uv run python "$SKILL/scripts/run.py" scorecard theme <keywords...> --market <A|HK|US> --top <N>

ユーザーが一度限りの診断ではなく、保存されたリサーチ記録、レビューの反復プロセス、または体系化されたスコアカードを求めている場合に、これらを使用してください。

10. データ操作
uv run python "$SKILL/scripts/run.py" fetch pool               # プール全体を更新
uv run python "$SKILL/scripts/run.py" fetch kline <code>        # 単一銘柄のK線
uv run python "$SKILL/scripts/run.py" fetch fundamentals <code> # 単一銘柄のファンダメンタルズ

範囲を限定した同期と診断:

uv run python "$SKILL/scripts/run.py" sync symbol <code> --market <A|HK|US>
uv run python "$SKILL/scripts/run.py" sync watchlist --market <A|HK|US>
uv run python "$SKILL/scripts/run.py" sync portfolio --codes <code1,...> --market <A|HK|US>
uv run python "$SKILL/scripts/run.py" sync etf --codes <etf1,etf2,...>
uv run python "$SKILL/scripts/run.py" sync scan-universe --market <A|HK|US> --limit <N>
uv run python "$SKILL/scripts/run.py" sync check --market <A|HK|US> [--codes <c1,...>]
uv run python "$SKILL/scripts/run.py" sync repair --market <A|HK|US> [--codes <c1,...>] [--data-kinds history,fundamentals]
uv run python "$SKILL/scripts/run.py" sync snapshot --market <A|HK|US> [--codes <c1,...>] [--limit <N>]
uv run python "$SKILL/scripts/run.py" status data symbol <code> --market <A|HK|US>
uv run python "$SKILL/scripts/run.py" status data watchlist --market <A|HK|US>
uv run python "$SKILL/scripts/run.py" status data etf --codes <etf1,etf2,...>
uv run python "$SKILL/scripts/run.py" status data pool --market <A|HK|US>
uv run python "$SKILL/scripts/run.py" market-regime --market <A|HK|US>

全市場スナップショットスキャン(全銘柄のローカルスナップショットを新規作成します):

uv run python "$SKILL/scripts/run.py" refresh-scan <market> --top <N>

運用コマンド:

uv run python "$SKILL/scripts/run.py" scheduler --run-now  # ウォッチリスト全体を分析
uv run python "$SKILL/scripts/run.py" cache stats          # キャッシュの統計情報
uv run python "$SKILL/scripts/run.py" cache cleanup --days 30  # 古いエントリーを削除
uv run python "$SKILL/scripts/run.py" cache engine         # アクティブなエンジンを表示
uv run python "$SKILL/scripts/run.py" cache migrate        # SQLite -> DuckDB(一度のみ)

出力ガイドライン

ターミナル出力(自動検出):

スキャンしやすいように指標を使用します:

600519 贵州茅台
スコア 82.3/100 | シグナル: BUY (F=8)
主な要因: 品質(88.7) + モメンタム(76.5)
リスク: 低
参考損切り/利確価格: 1480.50 / 1980.00
詳細診断レポートの形式:
  1. 判断シグナルとスコア
  2. 主な要因トップ3
  3. シグナルを発生させた戦略
  4. 影響が5%を超える場合のセンチメント調整
  5. リスクレベルと主なリスク
  6. 参考損切り価格と利確価格
JSON出力(--format json):

すべてのスクリプトは --format json,md,both,none を受け付けます。プログラムでの利用にはJSON、読みやすいレポートにはMDを使用します。

言語:

ユーザーが英語で書いていない限り、A株の内容には中国語を使用します。米国株/香港株には英語を使用します。

注意事項

症状原因対処方法
ModuleNotFoundError: No module named config作業ディレクトリが正しくありませんプロジェクトのルートから実行し、uv run python "$SKILL/scripts/run.py" ... を呼び出します
スキャン結果が0件キャッシュが空か、候補銘柄の履歴がありませんuv run python "$SKILL/scripts/run.py" fetch pool を一度実行してから、再試行します
1日のAPI制限に達しましたローカルのAPI利用枠に達したか、上流でスロットリングされています待機するか、キャッシュ済みデータを使用します
BUYシグナルがありません市場が低迷しているか、キャッシュが冷えています個別銘柄で diagnose を実行します
import akshare が失敗するインストールされていませんuv pip install akshare efinance baostock
銘柄コードが見つかりませんその市場のプールが取得されていませんuv run python "$SKILL/scripts/run.py" fetch pool
バックテストが失敗するキャッシュが空の状態で欠損している過去データが多すぎます範囲を限定したウォームアップの完了後に再実行するか、先にプールを事前取得します
香港株/米国株の候補が不安定に見える市場間のメタデータが不完全ですランキングを信頼する前に status data のメタデータ概要を確認します
銘柄履歴が古い/データに欠落があるデータ品質の欠落が検出されましたsync check --codes <code> の後に sync repair --codes <code> を実行します。重大な問題がある場合は自動的に間隔を空けて再試行します

主な原則

  1. ローカル優先、キャッシュミス時に取得 — AKShare API を呼び出す前に、quant_cache.db(または有効化されている場合は DuckDB キャッシュ)を確認します。不足している日付範囲のみを段階的に補完します。キャッシュが温まっている場合、全履歴をダウンロードしてはいけません。十分に新しいデータがキャッシュにある場合は、常に再利用します。
  2. マルチファクター、マルチ戦略 — 7 つのファクター次元からなる 6 つの戦略を重み付けして投票します。
  3. タスク単位のウォームアップ — analyze/scan/backtest では、不足している最小限の銘柄群、履歴、ファンダメンタルズ、または指数データのみを取得します。
  4. 市場に応じたキャッシュ — A/HK/US/FUND の銘柄群と TTL メタデータを個別に追跡します。
  5. ETF 優先のファンドの扱い — 現在の FUND は、広範な投資信託のカバレッジではなく、上場 ETF のワークフローを意味します。
  6. メタデータを考慮したクロスマーケット対応 — HK/US の銘柄群には、ソース、ステータス、完全性のシグナルが付与されます。品質の低いメタデータは、ランキングで軽く減点される場合があります。
  7. スクリプト駆動 — uv run python "$SKILL/scripts/run.py" を実行し、ロジックを再実装してはいけません。
  8. 並列スコアリング — アルファスキャンにはスレッドプール(8 ワーカー)を使用します。
  9. リサーチメモリーを考慮 — ユーザーがフォローアップ、レビュー、またはアトリビューションを求めている場合は、テーゼ/テーマ/スコアカードのワークフローを優先します。
  10. グレースフルデグラデーション — API の制限時はキャッシュのみのモードに切り替えます。失敗するよりも部分的な結果を優先します。

参考ファイル

現在のタスクに必要な参考資料のみを読み込んでください。

  • 単一銘柄の分析、診断、またはファクターの説明: references/factors.md、references/strategies.md
  • CLI/Python の使用方法、プログラムによる統合、またはコードレベルの質問: references/python-api.md
  • ETF/コア・サテライトのワークフロー: references/enhanced-momentum.md
  • データソースのカバレッジ、市場の制限、またはキャッシュ/同期の動作: references/market-source-playbook.md、 references/akshare_official_docs.md
  • ワークフローの振り分け、またはマニフェストの処理: references/workflows.md
  • 詳細な診断の長文レポート出力: references/deep-diagnosis.md
  • テーゼメモリー/事後検証: references/thesis-memory.md
  • テーマリサーチ: references/theme-research.md
  • スコアカード/アトリビューション: references/scorecards.md
  • 出力の文言と応答スタイル: references/output-style-and-language.md
  • センチメントに関する作業: references/sentiment.md
  • リサーチの背景情報: references/research-sources.md
  • リスク、免責事項、またはポリシー上慎重な対応が必要な出力: references/risk-and-compliance.md
  • このスキル固有の対話上の制約: references/serenity-dialogue-protocol.md

スキルのバージョン:1.5

出力ファイルの仕様

  1. パス:./reports/
  2. 命名規則:YYYY-MM-DD-HHMM_短いタイトル.json または .md
  3. 形式:階層構造の標準 Markdown

リスクに関する免責事項

投資の参考情報であり、投資助言ではありません。データソースは第三者の公開プラットフォームであり、10~15 分の遅延があります。過去の運用実績は将来のリターンを保証するものではありません。

コメント