【第2話】【環境構築完全版】AIと作る日本株自動売買ツール~Pythonからクラウド連携まで全手順

前回の記事では、このブログを始めた理由と自動売買を選んだ経緯をお伝えしました。

今回はいよいよ実践編です。自動売買システムを動かすための「環境構築」を、実際にやった手順をそのまま全部公開します。

正直に言うと、つまずいた場面も何度かありました。「エラーが出た」「うまくいかなかった」という部分も隠さず書いています。同じところでハマっている方の参考になれば嬉しいです。

プログラミング初心者の方でも再現できるよう、できるだけ丁寧に書きました。

今回セットアップするものと全体像

今回セットアップするものは以下の6つです。

・Cursor(AIと一緒にコードを書くエディター)
・Python仮想環境(ライブラリを管理する専用の箱)
・必要なライブラリ(データ処理・API通信など)
・.envファイル(APIキーを安全に管理するファイル)
・GitHub(コードのバックアップ・バージョン管理)
・J-Quants API(日本株データの取得)
・Claude API(ニュースの感情分析に使う)
・EDINET API(有価証券報告書・財務データの取得)
・三菱UFJeスマート証券(自動注文を出す証券口座)

一見多く見えますが、一つずつ順番に進めれば難しくありません。今回の記事でここまで全部終わらせます。

なぜCursorを使うのか——VSCodeではダメなのか

「Pythonを書くならVSCodeでいいんじゃ?」と思う方もいるかもしれません。

確かにVSCodeでも開発はできます。ただ、私がCursorを選んだ理由は一つです。「AIと会話しながらコードを書ける」からです。

Cursorはエディターの中にAIチャットが内蔵されています。「この関数は何をしているの?」「エラーを直して」「〇〇する処理を追加して」と日本語で話しかけるだけで、AIがコードを書いてくれたり修正してくれたりします。

プログラミング初心者がゼロからシステムを作るには、これが一番効率的だと判断しました。

Cursorのインストール手順

https://cursor.com にアクセスして「Download」をクリックします。

ダウンロードするファイルはPCの種類によって変わります。

・通常のWindows PC → Windows (x64) (User)
・ARM64チップのPC(Surface Proの新しいもの等) → Windows (ARM64) (User)

自分のPCがどちらか分からない場合は、「設定」→「システム」→「バージョン情報」の「システムの種類」で確認できます。

ダウンロードしたファイルをダブルクリックするとインストールが始まります。特別な設定は不要で、指示に従って進めるだけです。1〜2分で完了し、自動的にCursorが起動します。

起動直後に「Install ‘cursor’」というポップアップが右下に出ます。これをクリックしておくと、後でターミナルからcursorコマンドが使えるようになるので、クリックしておきましょう。

プロジェクトフォルダの作成

Cursorが起動したら、まずプロジェクト専用のフォルダを作ります。

Windowsのエクスプローラーを開いて、好きな場所に「kabu-algo」というフォルダを作成します。私はデスクトップに作りました。

作成したら、CursorのOpen projectからそのフォルダを選択して開きます。

次にCursorのターミナルを開きます。画面上部のメニューから「View」→「Terminal」か、ショートカットキー Ctrl + J で開けます。

黒い画面(ターミナル)が画面下部に表示されたら、以下のコマンドを入力してフォルダ構成を作ります。

PowerShellの場合はmkdirを一度に複数指定できないので、セミコロンで区切って入力します。

mkdir data; mkdir logs; mkdir config; mkdir src; mkdir tests

これで以下の5つのフォルダが作成されます。

・data:J-QuantsやEDINETから取得したデータを保存する場所
・logs:システムの動作記録(ログ)を保存する場所
・config:設定ファイルを保存する場所
・src:自動売買システムのメインコードを置く場所
・tests:動作確認用のテストコードを置く場所

最初からフォルダ構成を整えておくと、後でファイルが増えてきたときに管理しやすくなります。

Python仮想環境とは何か——なぜ必要なのか

次に「仮想環境」を作ります。

仮想環境とは、このプロジェクト専用のPython環境を作る仕組みです。

なぜ必要かというと、Pythonのライブラリはバージョンによって動作が変わることがあります。複数のプロジェクトで同じPythonを使っていると、あるプロジェクトでライブラリを更新したら別のプロジェクトが動かなくなった、ということが起きます。

仮想環境を使えば、プロジェクトごとに独立したPython環境を持てるので、この問題を避けられます。

以下のコマンドで仮想環境を作成します。

python -m venv venv

少し時間がかかりますが、完了したら仮想環境を有効化します。

venv\Scripts\Activate.ps1

ここでエラーが出る場合があります。「スクリプトの実行が無効になっている」というメッセージが出たら、以下のコマンドを先に実行してください。これはWindowsのセキュリティ設定を変更するコマンドです。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

実行後、もう一度 venv\Scripts\Activate.ps1 を実行します。

プロンプトの先頭に「(venv)」と表示されれば成功です。これ以降の作業は、必ずこの(venv)が表示された状態で行います。

必要なライブラリのインストール

仮想環境が有効化された状態で、必要なライブラリをまとめてインストールします。

pip install requests pandas numpy python-dotenv schedule

各ライブラリが何をするものかを説明します。

・requests:インターネット上のAPIと通信するためのライブラリ。J-QuantsやClaude APIにデータを取りに行くときに使います。
・pandas:表形式のデータを扱うためのライブラリ。株価データをExcelのような形で処理できます。自動売買システムの中で最もよく使うライブラリです。
・numpy:数値計算を高速に行うためのライブラリ。移動平均などのテクニカル指標を計算するときに使います。
・python-dotenv:後述する.envファイルからAPIキーを読み込むためのライブラリ。セキュリティ管理に必須です。
・schedule:Pythonのコードを決まった時間に自動実行するためのライブラリ。毎朝9時に株価データを取得する、といった定時処理に使います。

インストールが完了すると「Successfully installed…」と表示されます。

APIキーを安全に管理する——.envファイルの作成

自動売買システムでは複数のAPIキーを使います。これをコードに直接書いてしまうと、GitHubにコードを上げたときに全世界に公開されてしまいます。

これを防ぐために「.env」というファイルにAPIキーをまとめて保存し、コードからはそのファイルを読み込む形にします。

以下のコマンドで.envファイルを作成します。

New-Item .env

作成した.envファイルをCursorで開いて(左側のファイル一覧からクリック)、以下を入力します。

#J-Quants API
JQUANTS_API_KEY=
#EDINET API
EDINET_API_KEY=
#Claude API
CLAUDE_API_KEY=
#kabu STATION API
KABU_API_PASSWORD=

各APIキーは後で取得してから「=」の後ろに貼り付けます。今は空欄のままでOKです。

.gitignoreの設定——APIキーを誤公開しない仕組み

.envファイルをGitHubに誤ってアップロードしないよう、「.gitignore」というファイルを作ります。

.gitignoreに書いたファイルやフォルダは、Gitの管理対象から除外されます。つまりGitHubには絶対に上がらなくなります。

New-Item .gitignore

以下の内容を入力して保存します。

#仮想環境
venv/
#APIキー(絶対にGitHubに上げない)
.env

#Pythonキャッシュ
pycache/
*.pyc

#ログファイル
logs/

#データファイル
data/

#OS系
.DS_Store
Thumbs.db

これでAPIキーが外部に漏れるリスクを防げます。

GitHubと連携する——コードのバックアップと管理

GitHubはコードを保存・管理するためのサービスです。

使う理由は主に3つあります。

1つ目はバックアップです。PCが壊れてもGitHubにコードが残っていれば復元できます。

2つ目はバージョン管理です。「昨日まで動いていたのに今日壊れた」という場合に、以前の動いていた状態に戻せます。

3つ目は記事のネタになります。「GitHubでコードを管理する方法」も読者に役立つコンテンツになります。

まず https://github.com でアカウントを作成します。

次にCursorのターミナルで名前とメールアドレスを設定します。

git config –global user.name “あなたのニックネーム”
git config –global user.email “あなたのメールアドレス”

Gitを初期化します。

git init

GitHubのサイトで新しいリポジトリを作ります。

・Repository name:kabu-algo
・Privateを選択(コードを非公開にする)
・「Add a README file」はチェックしない

作成後に表示されるURLを使って以下を順番に実行します。

git remote add origin https://github.com/ユーザー名/kabu-algo.git
git branch -M main
git add .
git commit -m “initial commit: 環境構築完了”
git push -u origin main

途中でブラウザが開いてGitHubのサインインを求められます。ログインして「Authorize git-ecosystem」をクリックすれば連携完了です。

GitHubのリポジトリページを開いて.gitignoreファイルが表示されていれば成功です。

J-Quants APIの登録と接続テスト

J-Quants APIは、JPX(日本取引所グループ)が提供する日本株データのAPIです。株価の四本値(始値・高値・安値・終値)、財務情報、投資部門別売買動向など、自動売買に必要なデータを取得できます。

まず https://jpx-jquants.com でアカウントを登録します。

重要なポイントがあります。アカウントを作成しただけではAPIは使えません。必ず「Subscription」からサブスクリプションプランを選択する必要があります。無料のFreeプランでOKです。この手順を忘れると403エラーが返ってきます。

プランの登録が完了したら、ダッシュボードの「API Keys」からAPIキーを発行します。発行したAPIキーをコピーして.envファイルに貼り付けます。

JQUANTS_API_KEY=発行したAPIキー

接続テストは以下のコードで行います。

import requests
import os
from dotenv import load_dotenv

load_dotenv()
api_key = os.getenv(‘JQUANTS_API_KEY’)
headers = {‘x-api-key’: api_key}
res = requests.get(
‘https://api.jquants.com/v2/equities/bars/daily’,
headers=headers,
params={‘code’: ‘86970’, ‘date’: ‘20240104’}
)
print(res.status_code)

「200」が返ってきたら接続成功です。

ちなみに私は最初に「401」「400」「403」と3回エラーを出しました。原因は以下の3つです。

・401:ヘッダーの書き方が古いV1形式だった(Authorization: Bearer → x-api-key に変更)
・400:同じくV1のエンドポイントを使っていた
・403:Freeプランへの登録を忘れていた

J-Quants APIは2025年12月にV2にアップデートされました。ネット上の古い記事はV1の書き方で書かれているので注意が必要です。

Claude APIの登録と接続テスト

Claude APIは、Anthropicが提供するAIのAPIです。このシステムでは日本語のニュース記事を読み込んで、その内容が株価にとってポジティブかネガティブかを判断する感情分析に使います。

https://console.anthropic.com でアカウントを登録します。

ログイン後、「API Keys」から「Create Key」でAPIキーを発行します。キー名は「kabu-algo」にしました。

重要な注意点があります。APIキーは発行時に一度しか表示されません。必ずその場でコピーして.envファイルに貼り付けてください。

CLAUDE_API_KEY=発行したAPIキー

Claude APIは有料です。利用するには「Plans & Billing」からクレジットをチャージする必要があります。最低5ドルからチャージできます。

感情分析1回あたりのコストは約0.001ドル以下なので、5ドルあれば数ヶ月は持ちます。月間の運用コストとしては非常に小さい金額です。

EDINET APIの登録

EDINET APIは、金融庁が提供する有価証券報告書などの開示情報を取得できるAPIです。決算情報や財務データの自動取得に使います。

登録方法:
① https://disclosure2.edinet-fsa.go.jp にアクセス
② 「APIキー登録」から申請
③ 登録したメールアドレスにAPIキーが届く
④ .envファイルに貼り付ける

EDINET_API_KEY=発行したAPIキー

私は登録申請済みですが、メール到着待ちの状態です。届き次第、接続テストの結果を追記します。

三菱UFJeスマート証券の口座開設——なぜここを選んだか

自動売買システムで実際に注文を出すには、証券会社のAPIが必要です。

日本の証券会社の中でPythonによる自動売買に対応しているのは限られています。主な選択肢を比較してみました。

・三菱UFJeスマート証券(旧auカブコム証券):kabu STATION APIを提供。Python対応が充実。ドキュメントが日本語で丁寧。個人投資家の利用実績が多い。
・楽天証券:MarketSpeed II RSS。ExcelマクロやVBA向けで、Python連携には不向き。
・SBI証券:SBI APIがあるが、機能が限定的で使いづらい。
・マネックス証券:TradeAPIがあるが、機能が少ない。

この比較から、kabu STATION APIを提供している三菱UFJeスマート証券を選びました。

ちなみに社名について補足です。もともと「auカブコム証券」という名前でしたが、2024年に「三菱UFJeスマート証券」に社名変更しています。ネット上では旧社名で書かれている記事も多いですが、同じ会社です。kabu STATION APIもそのまま継続して使えます。

口座開設の申し込みは https://kabu.com から行いました。

必要なものは以下の通りです。

・マイナンバーカード(または通知カード)
・本人確認書類(運転免許証など)
・メールアドレス
・銀行口座情報

口座の種類は「特定口座(源泉徴収あり)」を選択しました。自動売買で頻繁に売買すると確定申告が大変になるので、源泉徴収ありにしておくと税務処理を証券会社が代わりにやってくれます。

申し込みは完了しましたが、審査に最短2営業日かかるとのこと。口座が開設されたらkabu STATION APIの設定に進みます。

今回のまとめ

今回セットアップしたものは以下の通りです。

・✅ Cursor インストール完了
・✅ プロジェクトフォルダ作成完了
・✅ Python仮想環境の作成・有効化完了
・✅ 必要なライブラリのインストール完了
・✅ .envファイル作成完了
・✅ .gitignoreファイル作成完了
・✅ GitHub連携完了
・✅ J-Quants API 接続成功(200)
・✅ Claude API 登録完了(クレジットチャージ済み)
・🔄 EDINET APIの登録(メール到着待ち)
・🔄 三菱UFJeスマート証券 口座開設申し込み済み(審査待ち)

次回は口座開設が完了したらkabu STATION APIの設定をして、いよいよ株価データの取得コードを書いていきます。実際にどんなデータが取れるのか、出力結果も全部公開する予定です。

ほろ酔いカバ🦛

免責事項

本記事は筆者個人の体験・記録を目的としたものであり、特定の銘柄・
金融商品への投資を推奨するものではありません。投資はご自身の判断と
責任のもとで行ってください。過去の運用実績は将来の成果を保証する
ものではありません。

コメント

タイトルとURLをコピーしました