あらゆるAI投資アプリはあなたのデータを欲しがる――信用できなかったので、オフラインで自分のものを作った

Dev.to / 2026/4/22

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical Usage

要点

  • 著者は、多くのAI投資アプリが実質的にクラウド上のUIラッパーで、ポートフォリオのような機微なデータを第三者サーバーに貼り付けさせることが主目的だと主張しています。
  • データ共有を避けるために、著者は完全ローカルでプライバシーを重視したAI駆動のマーケットアシスタントを自分のノートPC上で構築し、ウォッチリストや取引ロジックをクラウドへ送らない仕組みにしました。
  • このアシスタントは、ターミナル風のCLIとWebダッシュボードを組み合わせ、ライブ市場データの取得、ニュースに基づくローカルLLMによるセンチメント分析、そして売買(買い/保留)判断の生成を行います。
  • ユーザーが行動の閾値に達したとシステムが判断した場合、TelegramとWhatsAppで通知します。
  • ワークフローは効率化のためのローカルキャッシュ(SQLite)と、市場データ取得にAlpha VantageやFinnhubのような無料APIを利用し、有料のLLM APIサブスクリプションなしで回す設計です。

作ったもの

今すぐAIの金融ツールをいろいろ見て回ると、すぐに気づくことがあります。半分くらいは、見た目がピカピカなUIラッパーで、やることは1つだけ——あなたのポートフォリオデータをクラウドサーバーに貼り付けさせて、黙ってお願いするような代物です。

私の考えでは、個人の金融ウォッチリストを、どこにでもあるようなスタートアップのブラックボックスに渡すという発想は、どうしてもしっくりきませんでした。そこで私はSaaS製品は無視して、ゼロから自分で環境を作ることにしました。

結果としてできたのは、完全ローカルで動く、AI搭載の市場アシスタントです。これはハイブリッド型の怪物で、レトロな端末CLIの要素と、きれいなWebダッシュボードの要素を併せ持っています。バックグラウンドでライブの株価を静かに追跡し、市場ニュースには深いセンチメント分析を行い、そして「そろそろ持つべき」または「買うべき」だと判断した瞬間に、TelegramとWhatsAppで私に積極的に通知します。

この一連の仕組みの根幹は、絶対的で妥協のないプライバシーにあります。「この作業の“脳”」はすべて私のラップトップ上で直接動いています。私のデータも、ウォッチリストも、取引ロジックも、いかなる形でも私のマシンの外へ出ません。OpenAIやAnthropicへの高額な月額APIサブスクリプションも不要ですし、クラウドサーバーが私の取引を解析することもありません。単に、バックグラウンドでローカルのパイプラインが計算しているだけで、正直なところ、その種の自律性を手に入れられるのはかなりクールだと感じます。

端末で生活している方のために、ウォッチリストを渡して動かしたときのCLI出力がこちらです:

$ openclaw scan --watchlist AAPL,TSLA,NVDA

[09:31:02] Fetching live data...
[09:31:04] Running analysis (local)...
[09:31:07] Scanning 3 tickers...

  NVDA  │ BUY   │ Score: 87/100 │ Volume spike +23%
  AAPL  │ HOLD  │ Score: 54/100 │ Consolidation phase
  TSLA  │ HOLD  │ Score: 41/100 │ Mixed signals

✅ Notifications sent → Telegram + WhatsApp

仕組み

私は、このパイプラインには「効率一辺倒」な厳しさを持たせつつ、誰かに実際に説明できるくらい分かりやすくしておきたかったのです。これは5つの明確なフェーズに分解できます:

  • データ収集: まず最初に必要なのは数字です。ライブの価格、出来高(ボリューム)指標、移動平均を、Alpha VantageやFinnhubのような無料の金融APIから取得します。処理を速く保ち、ブロックされないようにするために、すべてをローカルのSQLiteデータベースへそのままキャッシュします。
  • センチメント分析: 数字だけでは物語の半分にしかなりません。システムは手を伸ばして、ウォッチリスト上の各ティッカーについて直近のニュース見出しを取得します。それらのテキストをまとめて、基本的にはローカルLLMに渡し、その日の市場の「空気感」やムードを読むようにします。
  • 相関: ここは本当に面白い部分だと思っています。システムは能動的に、柔らかくて曖昧なセンチメントデータ(ニュースがどう聞こえるか)を、硬くて否定できないテクニカルデータ(実際の値動きと出来高のスパイク)と相関させるようLLMに強制します。
  • 意思決定: この相関に基づいて、LLMは要約を書くことは許されません。厳格で、遠慮のない断定結果を出す必要があります: BUYHOLD、またはSELL。それに加えて、0〜100の確信度(自信スコア)も出力します。
  • レポーティング: もし、そのシグナルが事前に設定した確信度の閾値を超えるならアラートをトリガーします。整形されたメッセージがTelegramとWhatsAppのボットを通じて直接スマホに送られます。一方でWebダッシュボードは、後で確認できるように履歴を静かにログに残します。

私の体験

ここは完全に正直に言います。私はトレーダーではありません。ほど遠いです。そもそも私は、本物の市場がどのように動いているのかについてほとんど何も知らない状態で、このプロジェクトに入りました。

意外にも、それが最大の強みになりました。学び直すべき悪い取引習慣はなく、AIを何かの既成の取引戦略に無理やりはめ込もうともしていませんでした。

コーディングの部分は最高に楽しかったのですが、実際の学習の立ち上がりは、なかなか骨が折れるものでした。すぐに気づいたのは、「この株は良いか教えて」とプロンプトに打ち込むだけではダメだということです。移動平均が実際に何を表すのかを調べて理解し、さらに出来高がなぜ重要なのかを理解しないと、意味のあるプロンプトをAIに作れないことがわかりました。

私が直面した最大の問題は、はっきり言って幻覚(ハルシネーション)でした。作り始めの頃、ローカルLLMが「大きな出来高スパイク」があったからだと言って、ある特定の銘柄を買うよう自信満々に指示してきました。私は興奮して生データを自分で確認したところ、スパイクなど存在しませんでした。AIは権威があるように見せ、確信しているように聞こえるためだけに、その数字を完全に捏造していたのです。

これは大きな現実確認でした。私は、通知がスマホに届く前に、AIの推論を実際の計算に対してダブルチェックできるよう、まったく別のPythonによる検証レイヤーを一から作り直さなければなりませんでした。熱狂的だけど、少しだけ妄想癖のあるロボットに対してガードレールを作るような感覚でした。

私は、データパイプラインを極めたかったからこれを作りましたが、主に「株が動いているだけのシンプルな通知を得るために、自分の個人の金融データを取引(渡す)する必要などないはずだ」と本気で信じていたから作りました。

OpenClawで使った機能

最初は純粋なPythonだけでこの仕組みを作ろうとしましたが、コードはすぐにスパゲッティ状態になりました。OpenClawは、この混沌としたパイプライン全体をまとめ上げてくれた“絶対的な接着剤”でした。具体的にどう使ったかというと:

  • マルチエージェント・パイプライン: 1つの巨大なスクリプトではなく、OpenClawを使ってロジックを、それぞれ役割に集中した別のエージェントに分けました。数字を集めるだけの「Data Fetcher」エージェント、計算を担当する「Quant Analyzer」エージェント、通知を担当する「Notifier」エージェントがあります。OpenClawが、それらの受け渡しとコミュニケーションをスムーズに管理してくれます。
  • ローカルLLM(Ollama): Ollamaでローカルモデルを動かしています。ストリーミング、タイムアウト、プロンプトルーティングを扱うための独自の定型コードを何日も書く代わりに、OpenClawのネイティブ統合をそのまま使いました。ローカルモデルを指定するだけで、あとは動きます。
  • 構造化された意思決定システム: LLMはおしゃべりが大好きです。段落で推論を説明したがります。私は厳密なデータが必要でした。そこでOpenClawの構造化出力の制約を使い、AIに“正確なJSON形式”を返させるようにしました ({"signal": "BUY", "confidence": 85})。LLMが口数多くしようとすると、OpenClawはレスポンスをきっぱり拒否し、やり直しを強制します。

自分でも試してみる

趣味として、自分だけの完全プライベートなローカル量的デスクを動かしてみたいなら、コードは完全にオープンソースです。念のため言っておくと、ところどころ少しガタついているかもしれません——でも、これが「公開しながら作る」ことの良さです。

リポジトリを確認し、セットアップガイドを読み、ここで自分のマシンで動かしてみてください:
GitHubのOpenClaw Finance Assistant