AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
金融庁 EDINET の有報を毎日構造化した約3,800社の上場企業データベース。財務指標・有報全文・大株主データを無料 API/MCP で提供。学術引用に耐える品質を担保。
Translation pending
Developer toolsTypeScript · ShellGitHub @edinetdbOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
日本株の自律型リサーチAIエージェント|AI agent for deep financial research on Japanese listed companies. Powered by EDINET DB + J-Quants.
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
聞くだけで、勝手に計画を立てて、複数のデータソースを横断して、自分で検証しながらレポートまで仕上げる。 EDINET DB + J-Quants で動く、日本株特化の金融AIエージェント。 virattt/dexter(米国株版)をフォークし、日本市場向けに全面改修。 本プロジェクトは教育・娯楽・情報提供のみを目的としています。実際の取引や投資判断のために使用することは意図していません。 本ソフトウェアを利用することにより、学習・情報提供の目的のみに使用することに同意し、利用に伴う一切のリスクを受け入れたものとします。 新しい環境で、次の 3 段で動きます。Bun が無ければ先に入れてください。 .env の EDINETDB_API_KEY= の右に鍵を書きます。鍵はこちらから無料で取れます(会員登録が要ります)。ほかの行は your-... のままで構いません。env.example に書いてある仮の値のままの行は、起動時に未設定として扱います。 起動したら /model で LLM を選びます。Read the full README ↗
聞くだけで、勝手に計画を立てて、複数のデータソースを横断して、自分で検証しながらレポートまで仕上げる。
EDINET DB + J-Quants で動く、日本株特化の金融AIエージェント。 virattt/dexter(米国株版)をフォークし、日本市場向けに全面改修。
本プロジェクトは教育・娯楽・情報提供のみを目的としています。実際の取引や投資判断のために使用することは意図していません。
本ソフトウェアを利用することにより、学習・情報提供の目的のみに使用することに同意し、利用に伴う一切のリスクを受け入れたものとします。
新しい環境で、次の 3 段で動きます。Bun が無ければ先に入れてください。
git clone https://github.com/edinetdb/dexter-jp.git
cd dexter-jp
DEXTER_SKIP_BROWSER=1 bun install
bun run demo
cp env.example .env
.env の EDINETDB_API_KEY= の右に鍵を書きます。鍵はこちらから無料で取れます(会員登録が要ります)。ほかの行は your-... のままで構いません。env.example に書いてある仮の値のままの行は、起動時に未設定として扱います。
bun run start
起動したら /model で LLM を選びます。
.env や環境に ANTHROPIC_API_KEY があると従量課金の経路になるため、送る前に止まります(その経路で動かすときの設定も後述)。このモードでは /check はまだ使えません(この版に入っていないもの).env の該当行に鍵を書いてから選びますたとえば次のように聞きます。
トヨタの直近5年の財務推移を見せて
起動直後の画面に「このセッションで外に出るもの」が出ます。どこへ何が送られるかは、そことデータがどこへ行くかの表で確かめてください。
EDINET DB は MCP サーバーとしても公開しています。Claude Code には次の 1 行で登録できます。使うには認証が要ります。認証の画面が出たら EDINET DB のアカウントでログインしてください。画面が出ないときは、下の MCP ガイドにある API キーでの設定を使ってください。
claude mcp add edinetdb https://edinetdb.jp/mcp --transport http
Claude.ai・Claude Desktop・ChatGPT・Cursor・Codex CLI での手順は edinet-db-mcp の README と MCP ガイド にあります。つないだ後にそのまま貼れる問いの例はプロンプトテンプレート集にまとめています。
自分の仮説を、その会社の有価証券報告書の段落に 1 本ずつ当てて、「裏付ける」「食い違う」「無関係」を出典つきで返します。会社自身が何と書いたかを並べるだけで、売買の判断はしません。
/check 9983 中国事業は回復していると会社は説明している
仮説を主張に分け(原文と並べて見せます)、有報の対象節を段落に切り、段落ごとに主張を当てます。段落から確かめられなければ「判定不能」で止めます。モデルに埋めさせません。
パネルには、仮説の原文、分けた主張、判定の根拠になった会社自身の段落(doc_id・提出者・書類種別・節つき)、検査した範囲と未検査数が出ます。
DEXTER_SKIP_BROWSER=1 bun install
bun run demo
bun run demo は記録済みの実行を再生します。鍵は要りません。外部への通信もありません。画面に「録画の再生」と出ます。
DEXTER_SKIP_BROWSER=1 は Chromium(130MB 超)のダウンロードを飛ばします。browser ツールを使うときだけ入れ直してください。
| 鍵 | できること | |
|---|---|---|
| 1 | なし | bun run demo(録画の再生) |
| 2 | EDINETDB_API_KEY + TYPESAFE_API_KEY | /check が動く |
EDINET DB の鍵はこちらから無料で取れます(会員登録が要ります)。
/check は TYPESAFE_API_KEY が無いと動きません。 手元の LLM にラベルだけ代行させる構成でも動くようにはしていません。理由は測った結果です。
/check の入口には、売買や株価の水準についての助言を求める入力を判定に進めない検査があります。この検査は「決まった語彙と言い回しの検査」と「判定層の票」の 2 つでできていて、片方だけでは足りません。実装も語彙リストも見せずに別のモデルに書かせた 30 本の助言入力で測ると、こうなりました。
| 検査 | 素通りした数 | 正常な 20 本の誤検知 |
|---|---|---|
| 決まった語彙と言い回しだけ | 12/30 | 0/20 |
| 判定層(Jev)の票だけ | 1/30 | 0/20 |
| 2 つを合わせたもの(実装の形) | 0/30 | 0/20 |
| 決まった語彙 + 手元の LLM の票 | 8/30 | 0/20 |
手元の LLM で代行すると 30 本のうち 8 本が素通りします。素通りさせたまま動かすより、止まる方を選びました。鍵を入れる前に何が返るかは bun run demo で見てください。
/check と /watch は、売買の指示・目標株価・建玉の大きさを出力しません/check の記録は端末内の .dexter/checks/ に残ります。消したいときはこのディレクトリを消してください| 送信先 | 何が送られるか | いつ | 誰の鍵・契約 | 既定 |
|---|---|---|---|---|
| EDINET DB | 銘柄コードと API の要求(有価証券報告書の本文・財務データ・開示イベントの取得) | EDINETDB_API_KEY | あなたの EDINET DB の鍵 | 有効 |
| 選択中の LLM プロバイダ | あなたの仮説の文、有価証券報告書の段落、会話の内容(分解・要約・自由質問) | 選んだプロバイダの鍵(/model で切り替え) | あなたの鍵・契約 | 有効 |
| TypeSafe(Jev、米国) | あなたの仮説から分けた主張と、有価証券報告書の段落(1 段落ずつ) | TYPESAFE_API_KEY | あなたの TypeSafe の鍵 | 無効 |
| 会話履歴の埋め込み(OpenAI → Gemini → Ollama の順で自動選択) | 会話の全文(あなたの入力とエージェントの応答)。選択中の LLM とは独立に決まります — /model で Claude を選んでいても、OPENAI_API_KEY があれば OpenAI に送られます | 既定で有効。OPENAI_API_KEY / GOOGLE_API_KEY / OLLAMA_BASE_URL のいずれか | あなたの鍵 | 有効 |
| LangSmith | LangChain のプロンプトとツールの結果(トレース) | LANGSMITH_TRACING=1 | あなたの LangSmith の鍵 | 無効 |
| J-Quants | 銘柄コードと日付(株価の取得) | JQUANTS_API_KEY | あなたの J-Quants の契約 | 無効 |
| Web 検索プロバイダ(Tavily / Exa / Perplexity / LangSearch) | 検索語(/search で選んだプロバイダにだけ送られます) | 選んだプロバイダの鍵 | あなたの鍵 | 無効 |
| X(旧 Twitter) | 検索語(あなたが入力した、またはエージェントが組み立てた検索の語句) | X_BEARER_TOKEN | あなたの鍵 | 無効 |
| Ollama(既定では手元、設定すれば別のホスト) | 会話の内容・埋め込みの対象テキスト | OLLAMA_BASE_URL / OLLAMA_CLOUD_API_KEY | —(手元で動かす場合は外に出ません) | 無効 |
| OpenRouter | 会話の内容(OpenRouter 経由のモデルを選んだ場合) | OPENROUTER_API_KEY | あなたの鍵 | 無効 |
| Moonshot | 会話の内容(Kimi を選んだ場合) | MOONSHOT_API_KEY | あなたの鍵 | 無効 |
| DeepSeek | 会話の内容(DeepSeek のモデルを選んだ場合) | DEEPSEEK_API_KEY | あなたの鍵 | 無効 |
| メッセージングのゲートウェイ(Slack / Discord / WhatsApp / LINE) | エージェントの応答(ゲートウェイを起動した場合のみ) | それぞれのゲートウェイを起動したとき | あなたのトークン | 無効 |
TypeSafe(Jev)について、「保存しない」とは書きません。同社は入力を学習データに含めない旨を規約で定めていますが、Telemetry の生成・不正対策・法令対応のための処理権を留保しています。各サービスの規約はご自身でご確認ください。
会話履歴の埋め込みは既定で有効で、選択中の LLM とは独立に送信先が決まります。/model で Claude を選んでいても、.env に OPENAI_API_KEY があれば会話は OpenAI に送られます。起動時に、.env に設定された鍵から、そのセッションで外へ出うる先の一覧が出ます(一覧への掲載は実際の送信を意味しません。送信の条件は機能ごとに異なり、会話履歴の埋め込み先は自動で選ばれます)。
bun run demo が再生する段落は、有価証券報告書の本文です。同梱データ(src/data/materials/)の段落と一字一句同じで(テストで照合しています)、そちらの 1 件ずつに書類管理番号・提出者・書類種別・箇所・取得日・出典表記・編集加工の主体を持たせています。
出典:EDINET閲覧(提出)サイト(https://disclosure2.edinet-fsa.go.jp/)、PDL1.0(https://www.digital.go.jp/resources/open_data/public_data_license_v1.0)
このデータは MIT ライセンスの対象外です。 利用条件は LICENSE-DATA に別に書いてあります。提出会社から差し替え・削除の要請があった場合の手順も同ファイルにあります。
このツールの出力を第三者に提供する形(公開のボットなど)で使う場合、あなた自身が金融商品取引法その他の規制を受ける可能性があります。
/check。分解と要約を SDK の単発呼び出しで回せるかを確かめていないので、この版では未対応です/watch は開示の取得と並べ替えまで実装済みですが、コマンドとしての配線は次の版です/check にまだ配線していないので、この版の /check は文章の主張だけを段落に当てます有価証券報告書の全文で回すと、セグメントや地域ごとの増益の段落を、連結の減益と食い違うと読み、判定が割れることがあります。トヨタ自動車の第122期の有報(MD&A・事業等のリスク・経営方針の 103 段落)で「営業利益が減ったのは為替の影響が主因だと会社は説明している」を回すと、3 つの主張とも「判定が割れている」になりました(減益は裏付け 12 / 食い違い 3)。bun run demo の録画は、同じ有報から選んだ 10 段落で回したものです。
よくある金融ツールは「スクリーニングできます」「財務データ見れます」で終わる。Dexter JPは違う。
「ソニーと任天堂のROEと自己資本比率を有報の値で並べて、事業等のリスクの記載も比較して」 と聞くと:
これを1回の質問で、人間が介在せずにやる。ツールを1つ呼ぶだけの「データ取得」ではなく、複数のデータソースを横断した「分析」が自動で走る。
.envに設定するもの:
# === 必須 ===
# LLM(いずれか1つ。複数設定してもOK、CLI上で切替可能)
OPENAI_API_KEY=sk-... # OpenAI(デフォルト)
ANTHROPIC_API_KEY=sk-ant-... # Claude
GOOGLE_API_KEY=... # Gemini
XAI_API_KEY=... # Grok
OPENROUTER_API_KEY=... # OpenRouter(複数モデル利用可)
# 日本株データ
EDINETDB_API_KEY=edb_... # edinetdb.jp で取得(無料枠あり)
# === オプション ===
# 株価データ(設定すると get_stock_price ツールが有効化)
JQUANTS_API_KEY=... # jpx-jquants.com で取得(無料、期限なし)
# Web検索(設定すると web_search ツールが有効化。優先順: Exa → Perplexity → Tavily)
EXASEARCH_API_KEY=...
PERPLEXITY_API_KEY=...
TAVILY_API_KEY=...
# X/Twitter検索
X_BEARER_TOKEN=...
# ローカルLLM
OLLAMA_BASE_URL=http://127.0.0.1:11434
git clone https://github.com/edinetdb/dexter-jp.git
cd dexter-jp
bun install
cp env.example .env # 編集してAPIキーを設定
bun run start
複雑な問いを投げると、Dexterが自分で計画を立て、複数のデータソースを横断し、レポートを仕上げる:
トヨタの競争力を総合分析して。財務データ、有報のリスク要因、最新決算を踏まえてレポートにまとめて
ソニーと任天堂のROE・自己資本比率・営業利益率を有報の値で並べて、事業等のリスクの記載を比較して
ROE15%以上、配当利回り4%以上の企業を証券コード順に3社まで表示して、各社の自己資本比率と有報の事業等のリスクの記載を確かめて
キーエンスの直近5年の売上と営業利益の推移を有報で確かめて、会社が挙げている事業上のリスクを3つ出して
トヨタの直近5年の財務推移を見せて
ROE15%以上、自己資本比率50%以上の企業をスクリーニングして
任天堂の有報のリスク要因を読んで
配当利回り4%以上の高配当銘柄を探して
Analyze Toyota's competitiveness. Cover financials, risk factors from the annual report, and latest earnings.
Compare Sony and Nintendo on ROE and equity ratio using the values in their annual reports, and list the risks each one discloses.
ユーザーの質問
↓
エージェントループ(LangChain)
↓ 計画 → ツール選択 → 実行 → 検証 → 繰り返し
↓
┌─────────────────────────────────────────┐
│ get_financials(メタツール) │
│ → get_financial_statements │
│ → get_company_info │
│ → get_key_ratios │
│ → get_analysis │
│ → get_earnings │
├─────────────────────────────────────────┤
│ read_filings │
│ → text-blocks(有報テキスト) │
│ → shareholders(大量保有報告書) │
├─────────────────────────────────────────┤
│ company_screener(100+ 指標) │
├─────────────────────────────────────────┤
│ get_stock_price(J-Quants V2) │
├─────────────────────────────────────────┤
│ web_search / browser / skills │
└─────────────────────────────────────────┘
↓
構造化されたレポート出力
get_financialsは単なるAPIラッパーではない。内部にLLMを持つルーティングエージェント:
「ソニーとトヨタの利益率を比較して」→ 内部で4つのAPI呼び出しが自動で走る。
複雑な多段階ワークフローはSKILL.mdで定義。DCFバリュエーションスキルを内蔵:
.dexter/RULES.md)自分の投資スタイルや分析方針をMarkdownで定義できる。設定した内容がシステムプロンプトに自動で反映され、Dexterの行動指針になる。
mkdir -p .dexter
cp RULES.md.example .dexter/RULES.md
# 自分のルールに書き換える
CLIで /rules と入力すると現在のルールを確認できる。
設定例:
長時間のリサーチセッションで大量のデータを取得した場合、高速LLMが自動的にデータをサマリに圧縮してコンテキストを節約する。単純なデータ削除ではなく、重要な数値・結論を保持した要約を生成するため、セッションを通じた分析の整合性が保たれる。
セッション間で記憶を保持。投資方針、ポートフォリオ情報、過去の分析結果を覚える。
/modelコマンドでCLI上から切替可能:
@anthropic-ai/claude-agent-sdk 経由で動く実行モード。エージェントのループを SDK に委譲し、認証は SDK が解決する(Dexter は認証フローを実装しない)。
/model で Claude Agent SDK プロバイダを選び、モデル(claude-fable-5 / claude-opus-4-8 / claude-sonnet-4-6)を選ぶだけで使える。API キーの入力は求められない。CLAUDE_CODE_OAUTH_TOKEN、ANTHROPIC_API_KEY のいずれでも動作する。どれが使われるかは SDK が環境から判断する。ANTHROPIC_API_KEY や CLAUDE_CODE_USE_BEDROCK / CLAUDE_CODE_USE_VERTEX など従量課金の資格情報が環境にある場合、起動時に検出結果を表示し、意図しない課金経路で走らないよう停止する(fail-loud)。その経路で実行したい場合は DEXTER_AGENT_SDK_ALLOW_METERED=1 を設定して再実行する。DEXTER_AGENT_SDK_MAX_BUDGET_USD(USD)を設定する。SDK 側の見積りがこの値に達すると停止する。注: 本モードの利用可否・料金は Anthropic 側の仕様変更に依存する。ここでは「無料」「追加課金なし」といった断定はしない。実際にどの資格情報が使われるかは起動時の表示で確認できる。
CLIだけでなく、Slack・Discord経由でも使える。bun run gateway で起動:
| チャネル | 方式 | 公開URL | 環境変数 |
|---|---|---|---|
| Slack | Socket Mode (WebSocket) | 不要 | SLACK_BOT_TOKEN + SLACK_APP_TOKEN |
| Discord | Gateway (WebSocket) | 不要 | DISCORD_BOT_TOKEN |
| LINE | Webhook (HTTP) | 必要 | LINE_CHANNEL_SECRET + LINE_CHANNEL_ACCESS_TOKEN |
| Baileys (WebSocket) | 不要 | QRコードでログイン |
設定された環境変数に応じて、対応するチャネルだけが起動する。複数チャネル同時稼働可能。
xapp-で始まるトークン)chat:write, im:history, im:read, app_mentions:readmessage.im(DM受信), app_mention(メンション受信)xoxb-で始まる)をコピー.env に設定:
SLACK_BOT_TOKEN=xoxb-...
SLACK_APP_TOKEN=xapp-...
サーバー内ではスレッド返信、DMでは直接返信。
botSend Messages, Read Message History, Send Messages in Threads.env に設定:
DISCORD_BOT_TOKEN=MTQ4...
サーバー内では @Bot名 メンションでスレッド返信、DMでは直接返信。
LINEはWebhook方式のため、外部からアクセス可能なURLが必要(Slack/Discordとは異なる)。
https://{your-domain}/webhook/line を設定.env に設定:
LINE_CHANNEL_SECRET=your-channel-secret
LINE_CHANNEL_ACCESS_TOKEN=your-channel-access-token
WEBHOOK_PORT=3000 # デフォルト
公開URL(Webhook)の用意:
ngrok http 3000 → 生成されたURL + /webhook/line をWebhook URLに設定bun run gateway # 設定済みの全チャネルが同時に起動
| ソース | 内容 | 必須? |
|---|---|---|
| EDINET DB | 財務データ、有報テキスト、スクリーニング、AI分析(~3,800社) | 必須 |
| J-Quants | 株価OHLC(東証公式) | オプション |
| Web検索 | Exa / Perplexity / Tavily | オプション |
| Original (US) | JP Version | |
|---|---|---|
| データソース | Financial Datasets API | EDINET DB API |
| 市場 | 米国株 | 日本株(~3,800社) |
| 開示書類 | SEC 10-K/10-Q/8-K | 有価証券報告書 (EDINET) |
| 決算 | 8-K earnings | TDNet 決算短信 |
| 株主情報 | SEC Form 4(インサイダー) | 大量保有報告書(5%超) |
| 株価 | Financial Datasets | J-Quants V2(TSE公式) |
| スクリーニング | GICS分類 | 33業種、100+指標 |
| DCF | 米国金利(~4%) | 日本国債(~1%) |
| 言語 | 英語 | 日本語 + 英語 |
MIT