Communitygithub.com

ALAGENT-HKU/x2strategy

金融研究インプット(PDF論文、Markdownドラフト、DOCXレポート、テキストメモ、キーワード検索)→ 構造化戦略仕様 → 実行可能なBacktraderコード → バックテスト → 診断レポート。

x2strategy とは?

X2Strategyは、あらゆる金融関連の入力から戦略仕様を抽出し、実行可能なバックテストコードを生成して検証・診断までを一貫して行うAIエージェントスキルです。主に2つのコア機能「paper2spec」と「spec2code」から構成されます。paper2specは、PDF、Markdown、DOCX、テキスト形式の文書を読み込み、5層のLLM抽出を用いて複数の戦略仕様を構造化します。spec2codeは、抽出された仕様に基づいて検証済みのBacktraderコードを生成し、バックテストを実行し、論文の指標と比較した診断レポートを作成します。このスキルは、Claude Code、Copilot、Cline、Codex、Cursorといった主要なAI開発プラットフォームで利用でき、ユーザーが戦略の実装、論文の分析、バックテストの実行を求める際に自動的にトリガーされます。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add ALAGENT-HKU/x2strategy

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

x2strategy は何をしますか?

あらゆる金融関連インプット → 戦略仕様 → 実行可能コード → バックテスト → 診断。

機能

機能説明詳細
paper2specあらゆる文書(PDF/MD/DOCX/TXT)→ 構造化戦略仕様references/paper2spec.md
spec2code戦略仕様 → Backtraderコード → 検証 → バックテスト → 診断references/spec2code.md

入力形式は拡張子から自動検出されます:

形式拡張子備考
PDF(論文).pdfPyMuPDF → モードA(直接)またはモードB(FAISS)
Markdown(ドラフト).md, .markdownテキスト直接読み取り
DOCX(レポート).docxpython-docx(要 uv sync --extra docx)
プレーンテキスト.txt直接読み取り

対話の原則

あなたは実行者です。ユーザーは依頼者です。

  • ツールは静かに実行し、結果と洞察は自然言語で提示してください。
  • ユーザーが尋ねない限り、CLIコマンド(uv run python scripts/...)を決して表示しないでください。
  • 次のアクションを会話形式で提案してください:「2つ目の戦略も実装しましょうか?」

結果を報告する際は、何を見つけたかに焦点を当て、どのように実行したかには注目しないでください:

❌ 悪い例:「`uv run python scripts/analyze.py paper.pdf` を実行し、3つの戦略を取得しました。」
✅ 良い例:「この論文には3つの独立した戦略が含まれています:[1] 最小距離法、[2] ADF定常性、[3] Johansen共和分。どれを実装しましょうか?」

インタラクティブツールを積極的に使用してください。 プラットフォームがインタラクティブな質問ツール(VS Code Copilotの vscode_askQuestions、Claude Codeの AskUserQuestion、または同等のもの)を提供している場合は、ユーザー向けの選択すべてにそれらを使用してください。インタラクティブツールはクリック可能なオプションを提示するため、ユーザーに入力を求めるよりも速く、エラーが発生しにくくなります。

インタラクティブツールを適用する場面:

  • 初回セットアップ時の選択(ワークスペースパス、APIプロバイダー、キー入力)
  • 入力確認(続行 / 明確化追加 / 設定調整)
  • レビューチェックポイントと実装承認
  • 抽出または修復後の needs_human_review 解決
  • 検索結果の選択(番号付きリストから論文を選択)
  • ユーザーがオプションから選択するあらゆるシナリオ

インタラクティブツールが利用できない場合は、番号付きテキストメニューにフォールバックしてください。

進捗マーカープロトコル

ツールは静かに実行しますが、長いパイプラインは追跡可能にしてください。8ステップのワークフローを進める際、ステータス行には3つの構造化マーカーのいずれかを接頭辞として付け、ユーザー(および外部パーサー)が生のコマンド出力を読まなくてもフェーズの進捗を追跡できるようにします。マーカーは規律をもたらします。周囲の散文は自然言語のままです。

マーカー発行タイミング形式
[PROGRESS]ワークフローステップの開始または終了時[PROGRESS] <ステップ> — <1行のステータス>
[ARTIFACT]具体的なファイルが書き込まれた時[ARTIFACT] <ワークスペース相対パス> — <説明>
[ERROR]ステップが失敗した、またはチェックに合格しなかった時[ERROR] <ステップ> — <失敗内容> — <次のアクション>

ルール:

  • 1行に1つのマーカーを行頭に配置し、その後は平易な言葉で記述します。
  • すべての [ARTIFACT] は、実際に書き込まれた具体的なワークスペース相対パスを指定する必要があります(これにより、後述の出力パス契約を満たします)。
  • [ERROR] の後には、次に何を行うかを必ず記述してください(1回再試行する、停止して報告する、ユーザーに尋ねる)— 単なる失敗報告ではいけません。
  • マーカーは自然言語での報告を補足するものであり、代替するものではありません。何を見つけたかを説明し続けてください。どのように実行したかではありません。CLIコマンドは決して表示しないでください。

例:

[PROGRESS] paper2spec/extract — content.jsonから戦略仕様を抽出中
[ARTIFACT] library/upsa/spec.json — 1戦略、4指標、3論理ステップ
[PROGRESS] HITLレビュー — 1つのneeds_human_review項目が未解決です。解決を依頼中

イテレーションと再試行の規律

生成と修復には上限を設ける必要があります。バックエンドのハードターンゲート(--max-turns)をエージェントの規律に変換します:

  • 1回生成し、最大で1回のスモークテスト修復ラウンドを行います。 コードを書き、検証し、実行します。失敗した場合は、1回の対象を絞った修正ラウンドを適用し(references/spec2code.mdのトリアージフローを参照)、再実行します。
  • その1回の修復ラウンド後も失敗する場合は、停止して報告します。 [ERROR]行を発行し、何が失敗したか、最も可能性の高い根本原因を要約し、ユーザーにどう進めるか尋ねます。インクリメンタルなパッチを続けてはいけません。
  • 1つのランタイムエラーカテゴリに対して、最大3回の修正試行を行います。 同じエラークラスが続く場合、戦略ロジック自体に根本的に異なるアプローチが必要である可能性が高いため、それ以上調整するのではなく、その旨を伝えます。
  • 決して静かにループさせてはいけません。各再試行は [PROGRESS] または [ERROR] マーカーで可視化し、ユーザーがゲートの動作を確認できるようにします。

初回応答契約

paper2code、研究-to-コード、または「このスキルを使用する」リクエストの場合、最初の応答ですぐに実装を約束してはいけません。まず、可視化された入力を特定し、インタラクティブなダイアログを使用してセットアップ状況、入力ファイル、追加の指示/明確化、および意図されたワークフロースコープを確認します。その確認が完了してから作業を進めてください。


初回セットアップ

初回使用時は、3つのステップを実行します。ステップがすでに設定されている場合は、検出された値を報告し、ユーザーに確認または変更を求めます。抽出または実装の前に、常にタスクスコープを確認してください。すべての選択内容は .env(gitignore対象)に保存し、セッション間で安定させます。

ステップ1 — ワークスペースの場所

インタラクティブツールで選択肢を提示:

  • ./library/(デフォルト、推奨)
  • カスタムパス

PAPER2SPEC_LIBRARY_PATH=/absolute/path を .env に書き込みます。 以前の分析を検出するために、ディレクトリ内の既存の metadata.json をスキャンします。

ステップ2 — LLM APIキー

環境変数 DEEPSEEK_API_KEY、OPENROUTER_API_KEY、OPENAI_API_KEY、または ANTHROPIC_API_KEY を確認します。 見つからない場合は、インタラクティブツールで以下を提示:

戦略抽出とコード生成にはLLM APIキーが必要です。推奨オプション:
  1. DeepSeek(コストパフォーマンス最良、論文あたり約0.7人民元)→ https://platform.deepseek.com
  2. OpenRouter(1つのキーで複数モデルにアクセス)→ https://openrouter.ai/keys
APIキーと、それがどのプロバイダーに属するかをお知らせください。

受信後、キーと対応するモデルを .env に書き込み、次を実行して確認します: uv run python -c "from paper2spec.llm import chat; print(chat('Say OK'))"。

プロバイダーごとの .env 形式の例については、references/skill-internals.md を参照してください。

ステップ3 — Python環境

cd <skill-path>
uv sync --all-extras    # 推奨:すべてをインストール

uv が利用できない場合:pip install -e ".[codegen,agent,dev]"。 スクリプトの実行には常に uv run を使用してください(正しいvenvを自動的にアクティブ化します)。

選択的なインストールオプションとuv以外の代替手段については、references/skill-internals.md を参照してください。

完了

設定後、例を用いて自然に確認します:

✅ セットアップ完了。次のようなタスクを直接依頼できます。

  • 「この論文を分析して」 + PDFファイルを添付
  • 「モメンタムトレーディングに関する論文を検索して」
  • 「この論文に基づいて戦略を実装して」 + ファイルパスを提供
  • 「Markdownで戦略ドラフトを作成しました。仕様を抽出してコードを生成してください」
  • 「これら2つの論文の戦略の違いを比較してください」

やりたいことを教えてください。残りは私が処理します。

シングルワークフロー

すべてのタスクに1つのワークフローを使用します。競合するルーターを選択しないでください。

  1. セットアップ — .env、ライブラリパス、必要に応じてAPIキー、Python環境、ユーザーが選択したスコープを確認します。
  2. 入力確認 — 論文/仕様/データ/指示ファイルまたは検索結果を特定し、明確化、制約、選択されたプランの好み、既知の落とし穴、参照ファイルを追加するかどうかを尋ねます。
  3. paper2spec: PDF/テキストをコンテンツに — 選択された文書を解析し、根拠のあるコンテンツアーティファクトにします。
  4. paper2spec: 抽出 — コンテンツとユーザー指示から候補となる戦略仕様/プランを抽出します。
  5. paper2spec: 修復/レビュー — references/extraction_quality.md を読み、高リスクの数式が存在する場合に関連するオペレーターの落とし穴を取得し、選択されたプラン/仕様のみを根拠のある証拠に基づいて修復します。
  6. HITLレビュー — 修復後、常に needs_human_review を検査します。項目が存在する場合は、インタラクティブダイアログで提示し、回答されるか明示的に受け入れられるまで続行しません。項目がない場合でも、レビューで未解決項目が見つからなかったことを報告し、実装の承認を求めます。
  7. spec2code — HITL承認後、実装ターゲットを確認し、そのターゲットのコードを生成します。
  8. 検証/バックテスト/診断 — 生成されたコードを検証し、利用可能なチェック/バックテストを実行し、期待される出力または参照出力と比較し、不一致を要約して、次に何をするか尋ねます。

迂回禁止:抽出→修復→実装を静かにチェーンしてはいけません。ユーザー提供の論文、指示、データファイル、既存の仕様、参照出力は証拠であり、レビューやHITLをスキップする許可ではありません。

以前のCopilot、VS Code、またはエージェントのログが言及された場合、それらを使用する前に、参照されたパスが存在し、必要なファイルが含まれていることを確認してください。パスがない、空、または不完全な場合は、ログの要約に頼るのではなく、元の論文/指示/データから必要なアーティファクトを再生成してください。

出力パス

デフォルトの生成アーティファクトは PAPER2SPEC_LIBRARY_PATH/<slug>/ の下に配置されます。 はユーザーと確認した論文またはタスクのスラッグです。カスタム出力パスが要求された場合は、ファイルを書き込む前に確認します。

期待されるアーティファクトパス:

  • content.json および content.md(paper2specの解析結果)
  • spec.json および spec.md(抽出と修復の結果)
  • operator_pitfall_context.md(落とし穴取得が使用された場合)
  • strategy.py、strategy_1.py、またはspec2codeからユーザーが確認した実装ファイル名
  • data/(生成された戦略コードで使用されるデータ用)
  • results/backtest_output.txt、results/metrics.json、results/diagnosis_report.md(検証/バックテスト/診断の結果)
  • results/portfolio_vs_assets.csv および results/portfolio_vs_assets.png:1つの画像で戦略ポートフォリオ価値を、使用されたすべての株式/ETF/資産の同一資本バイアンドホールド曲線と比較します。資産曲線は識別可能な色とシンボルラベル/凡例エントリを使用し、SPYとポートフォリオは太字にする必要があります(1つの画像で0%、0.01%、0.05%の手数料での同一パラメータポートフォリオ曲線を比較)
  • results/key_pred/:戦略で使用される主要な観測可能因子ごとに1つのCSVと1つのPNG

ファイル生成後の各ステータス更新では、書き込まれた具体的なワークスペース相対パスを指定する必要があります。

Spec2Codeメトリクス

実行可能なすべての戦略について、spec2codeは少なくとも以下を計算して報告する必要があります:シャープレシオ、最大ドローダウン、総収益率、収益額/最終ポートフォリオ価値。戦略がブローカー接続戦略として実行できない場合は、その理由を報告し、確認された研究/バックテスト契約にとって意味のあるメトリクスを計算します。

Spec2Codeで生成されたコードは、すべてのネットワークデータをローカルにキャッシュし、ヘッドレスセーフな視覚的診断を保存し、使用されたすべての資産価格を一緒にプロットし、戦略アカウント価値を同一資本のバイアンドホールド曲線と比較し、トレーディング戦略には0% / 0.01% / 0.05%の手数料のエクイティカーブ比較を含め、3つの手数料ポートフォリオ曲線すべてがすべての資産バイアンドホールド曲線とともにプロットされた複合ポートフォリオ対資産チャートを含める必要があります。

米国株式戦略の場合、SPYを含め、資産およびポートフォリオ対資産プロットで市場ベースラインとして強調表示する必要があります。必要なデータキャッシュおよび可視化契約については、references/spec2code.md および references/data_sources.md を参照してください。


エージェントパイプラインフロー

1. セットアップ:環境、ライブラリパス、必要に応じてキー、タスクスコープを確認
2. 入力確認:論文/仕様/データ/指示/検索結果 + 明確化
3. paper2spec:PDF/テキスト/docをコンテンツアーティファクトに解析
4. paper2spec:候補仕様/プランを抽出
5. paper2spec:ターゲットプラン/仕様を選択し、extraction_quality + 一致した落とし穴で修復
6. HITL:needs_human_reviewを検査し、インタラクティブダイアログで解決
7. spec2code:出力契約を確認し、コードを生成、検証、チェック/バックテストを実行
8. 結果を診断し、次のアクションを尋ねる

コード生成パターンについて:references/spec2code.md Backtraderパターンについて:references/backtrader_patterns.md


内部ツールチェーン

エージェント専用。静かに実行し、結果は自然言語で提示します。

# 文書 → 仕様
uv run python scripts/analyze.py <file> -o library/<slug>/

# ステップバイステップのpaper2spec
uv run python scripts/parse.py <file> -o content.json
uv run python scripts/extract.py content.json -o spec.json

# 修復/レビューのための一致したオペレーター落とし穴コンテキスト
uv run python scripts/operator_pitfalls.py spec.json -o operator_pitfall_context.md

# 生成されたコードの検証
uv run python scripts/validate_strategy.py library/<slug>/strategy_1.py

# バックテストの実行
uv run python library/<slug>/strategy_1.py

# 論文の検索
uv run python scripts/search.py "<クエリ>" -n 5

すべてのフラグ、出力形式、ライブラリ管理について: references/skill-internals.md


設定

変数デフォルト目的
PAPER2SPEC_LIBRARY_PATH./library出力ルート
PAPER2SPEC_MODELopenai/gpt-4o-miniデフォルトLLM(litellm対応)
DEEPSEEK_API_KEY—DeepSeek(推奨)
OPENROUTER_API_KEY—OpenRouter(マルチモデル)
OPENAI_API_KEY—OpenAI直接
PAPER2SPEC_ARXIV_MIN_INTERVAL3.0arXivリクエスト間の秒数
PAPER2SPEC_SEARCH_MAX_RETRIES3HTTP 429/5xxでの再試行回数

litellm対応モデル はすべて動作します。 任意のスクリプトの --model フラグは PAPER2SPEC_MODEL をオーバーライドします。

関連スキル