AIを活用した株式投資(スイング)—構築システム概要
これまで、構想から運用テストまで、フェーズごとに記事を書いてきた。
一連の記事の締めくくりとして、システムの全体像を改めて整理しておく。
このシステムは、構想から運用テストまで、Claudeとの共同作業で構築した。使ったのは通常のチャット画面だけで、特別な開発ツールは使っていない。
図のとおり、このシステムの最大の特徴は、次の3つを組み合わせたハイブリッド構成にある。
- テクニカル指標に基づく、プログラムによる銘柄の自動選定
- AIによる、相場環境と選定銘柄のファンダメンタル調査・評価
- AIとの壁打ちを踏まえた、人間による最終的な銘柄選定と注文
さらに、銘柄選定プログラムを作ったAIと、毎朝ファンダメンタルチェックを行うAIが同じClaudeなので、日々の壁打ちの中から改善点が見つかると、すぐにプログラムへ反映できる。その意味で、運用しながら成長していくシステムになっている。
実行環境
- Windows 11のパソコンで、Pythonが動くこと
- Excel形式のファイルを扱える表計算ソフト(私はLibreOfficeを使用)
Pythonの導入手順は、仕様書の第10章にまとめてある(仕様書は非公開)。
フォルダ構成
swing_system/ (私はCドライブ直下に置いた) ├─ run.bat … 毎日の実行(ダブルクリック) ├─ settings.bat … 設定画面を開く ├─ backtest.bat … バックテストの実行 ├─ はじめに.txt … 使い方の要約 ├─ main.py … プログラム本体の入口 ├─ settings_ui.py … 設定画面のプログラム ├─ requirements.txt … 必要なライブラリの一覧 ├─ settings.xlsx … 設定シート(初回に自動作成) ├─ trade_log.xlsx … 売買記録(初回に自動作成、Userが記入) ├─ swing/ … プログラムの部品 ├─ master/ … JPXの銘柄一覧・貸借銘柄一覧 ├─ data/ … 取得した株価データ ├─ output/ … 一覧表・バックテスト結果 └─ logs/ … 実行ログ
システムを構成する成果物
(これまでの記事と記述が異なる部分があるが、開発途中で改訂を重ねた結果である。)
(1)ドキュメント
当初A4で12ページだった仕様書は、壁打ちを重ねて21ページになった。目次は以下のとおり。
スイングトレード支援システム 仕様書 目次(A4・21ページ)
- 目的と前提
- 運用ルール
- 役割分担
- 全体の流れ
- データ取得と検品
- 取得
- 対象銘柄
- 検品
- 実行タイミング
- 売買パターン定義
- 共通ルール
- リスク管理と枠
- 株数の計算
- 上限
- 相場異常日
- 冷却期間
- 空売りの制限
- 配当(権利落ち)
- 保有銘柄の管理
- 決済ライン
- 保有期限
- 半分利確
- 警告の種類
- ファイル仕様
- フォルダ構成
- プログラムの部品(swing/)
- 設定シート(settings.xlsx)
- 日付ごとの一覧表(output/list_YYYYMMDD.xlsx)
- 売買記録(trade_log.xlsx)
- 例外処理
- 週末・祝日をはさむ場合
- 実行しない日がある場合(旅行・体調不良・休みたい日)
- 実装の範囲と評価
- バックテスト
- 評価
- 実行環境の作り方(Windows 11)
- 手順1:Pythonをダウンロードする
- 手順2:Pythonをインストールする
- 手順3:インストールできたか確かめる
- 手順4:フォルダを置く
- 手順5:ライブラリをまとめて入れる
- 手順6:試しに動かす
- 手順7:毎日の実行(手動・基本)
- 手順8(任意):平日19時に自動で動かす(タスクスケジューラ)
- よくあるエラーと対処
(2)Pythonプログラム(約20本)
- 銘柄選定用のプログラム群(データ取得・検品・選定・一覧表の出力)
- 設定シートの内容を画面から変更するためのプログラム群
- バックテスト用のプログラム群
(3)メニュー画面
日々の操作は、すべてこのメニュー画面から行う。
- 毎日の作業:「毎日の実行」で株価を取得して一覧表を作り(図の(1))、「最新の一覧表を開く」で推奨銘柄を確認、「売買記録を開く」で約定・決済を記入する(図の(4))
- 設定と検証:運用枠や損切り幅などの設定変更と、バックテストの実行・結果の確認
- その他:出力フォルダや実行ログ、使い方、仕様書を開くボタンと、デスクトップにショートカットを作るボタン
画面の上部には、データの取引日・最後の実行日・最新の一覧表が表示されるので、実行し忘れた日があってもすぐに分かる。
(4)ファイル(書式)
・執行指示用の一覧表(Excel形式)。新規推奨銘柄と保有銘柄に対する指示が日付ごとに出力される。図の(1)で作成。
| 列 | 内容 |
|---|---|
| 推奨 | 推奨の印と順位 |
| 銘柄コード・銘柄名・業種 | 銘柄マスタから |
| パターン | ①〜③(下記「売買パターン」参照) |
| 終値・5日線乖離・25日線乖離・RSI・ATR・出来高倍率 | 判断材料 |
| 想定エントリー価格・損切り価格・株数・建玉金額・逆指値の目安(保有銘柄) | 発注の目安 |
| 警告・注記 | 検品の除外理由、権利日接近など |
| Claude判断・Claude理由 | 空欄。朝のチェックで出たClaudeの判断を貼る |
| User判断 | 空欄。執行または見送りと、一言の理由を書く |
「Claude判断」と「User判断」を並べて残すことで、後から「AIと人間のどちらの判断が正しかったか」を検証できるようにしている。
・売買記録(Excel形式)。図の(4)で記入する。
| 列 | 記入例 | 記入要否 |
|---|---|---|
| 取引ID | 0001(分割決済は0001-1、0001-2) | 必須 |
| 銘柄コード | 5572 | 必須 |
| 銘柄名 | Ridge-i | 任意(見やすさのため。プログラムは銘柄コードで判定する) |
| 売買区分 | 買 / 空売り | 必須 |
| パターン | ② | 必須 |
| シグナル日 | 2026/10/06(どの日の一覧表から出た取引か) | 必須 |
| 状態 | 未約定 / 一部約定 / 保有中 / 決済済み | 必須 |
| エントリー日 | 2026/10/07 | 必須 |
| エントリー価格 | 3,245 | 必須 |
| 株数 | 100 | 必須 |
| 初期損切り価格 | 3,083 | 必須 |
| 決済日 | 保有中は空欄 | 決済時に必須 |
| 決済価格 | 保有中は空欄 | 決済時に必須 |
| 決済理由 | 損切り / トレーリング / 半分利確 / 期限 / 時間切れ / 指示どおり / 裁量 | 決済時に必須 |
| 諸経費 | 手数料・金利・貸株料の合計 | 任意(月末にまとめて記入可) |
| 配当調整額 | 信用買いは受け取りでプラス、空売りは支払いでマイナス | 任意 |
| 損益 | 数式で自動計算 | 記入不要 |
| メモ | 自由記入 | 任意 |
1回の仕込みを1行とし、半分利確などで分割決済した場合は、元の行をコピーして枝番で分ける(0001-1が決済した分、0001-2が保有中の残り)。仕込みと手仕舞いが紐づき、損益も1行ごとに残る。
・設定シート(settings.xlsx)
資金枠、損切り幅、1日の推奨数などの数値は、プログラムを書き換えずにこのシートで変更できる。settings.bat で開く設定画面からも変更可能。
売買パターン
| No. | パターン | 注文方法 |
|---|---|---|
| ① | 高値更新の順張り買い | 前日高値を抜けたら買う逆指値 |
| ② | 上昇トレンド中の押し目買い | 前日終値より少し下の指値 |
| ③ | 下落トレンド中の戻り売り(空売り) | 現在は停止中(第4回のバックテストで、5年間すべての年でマイナスだったため) |
対象は、過去20日の平均売買代金が1億円以上、かつ株価100円以上の銘柄。
リスク管理のルール
このシステムの心臓部。多くは、信用ロボアドや過去の自分の売買の失敗から生まれている。数値は初期値で、設定シートで変更できる。
| 項目 | ルール | ねらい・経緯 |
|---|---|---|
| 損切り | エントリー価格から-5% | 含み損を抱えて耐える売買をしない |
| トレーリング | 保有中の最高値から、ATR(1日の平均的な値幅)の2倍下げたら決済 | 上昇が続く限り利益を伸ばす |
| 半分利確 | 含み益+10%で半分を決済、残りはトレーリング | 利益の一部を確実に確保する |
| 保有期限 | 原則20営業日。10営業日で利益が乗っていなければ手仕舞い。20営業日時点で含み益があり上昇トレンドが続いていれば、トレーリングを締めて最長40営業日まで延長 | 固定日数で降りず、トレンドが続く限り乗る |
| 1トレードのリスク | 損切りした場合の損失が資金の1%以内になるよう株数を計算。全体でも6%まで | 一度の負けで退場しない |
| 建玉の上限 | 合計は運用枠以内、1銘柄200万円まで | 1銘柄への集中を避ける |
| 新規推奨数 | 1日3銘柄まで | 暴落日などに候補が大量に出ても、一度に建てすぎない |
| 同一業種 | 東証33業種で、同時に2銘柄まで | テーマ株の一斉急騰・一斉急落への備え |
| 相場異常日 | 日経平均-3%以下、または値下がり銘柄が8割以上の日は新規見送り | 信用ロボアドで、関税ショックの日に離れた指値が一斉に約定した反省 |
| 指値の置き方 | 押し目買いは前日終値からATRの0.3倍下、ブレイクは逆指値 | 現値から離れすぎた指値を置かない(同上) |
| 冷却期間 | 損切り・時間切れで手仕舞った銘柄は、10営業日候補から外す | 信用ロボアドで何度も食らった往復ビンタの防止 |
| 権利落ち | 権利付最終日の前5営業日は新規見送り | 配当落ちによる値下がりを避ける |
| 空売り | 貸借銘柄のみ(現在は停止中) | 第4回のバックテスト結果による |
| 運用枠 | 1000万円+累計実現損益(テスト運用中は500万円、1銘柄100株) | 勝てば枠が増え、負ければ減る |
例外処理
- 指値が約定しなかった場合、一部だけ約定した場合も、その状態のまま売買記録に記入する
- 株式分割があった場合は、売買記録の株数と単価を分割後の値に手で書き換える(プログラムは分割の疑いを検知して警告を出す)
- データの遅延やトラブルがあった日は、無理をせずスキップする
- 旅行や体調不良などで実行しない日があっても、次に実行した時に溜まった分をまとめて処理できる
公開していないこと
売買パターンの判定式と銘柄選定の係数、プログラムのソースコードは公開しない。信用ロボアドは、推奨銘柄が会員に一斉に配信されたことで寄り付きの板が膨らみ、自ら不利な約定を招いていた(第1回参照)。同じ条件で売買する人が増えれば、同じことが起こりうるためである。
(付言)
とはいえ、元SEとしての矜持もあり、目指したのは「作った本人しか動かせない道具」ではなく、一つのシステムとしての完成である。結果として、このシステム一式をZIPにまとめて配れば、マニュアル(はじめに.txtと仕様書)を読むだけで運用を始められるところまで仕上がっている。
また、AI(Claude)との壁打ちで育っていくシステムなので、使う人の投資スタイルによって、銘柄選定や仕込み・手仕舞いの条件はそれぞれ変わっていくはずだ。おそらく、信用ロボアドのように全員が同じ銘柄を同じ条件で発注する事態にはならないだろう。
つまり、上に書いた公開しない理由は、半分は建前である。
株式投資が自己責任であることは誰もが承知しているとは思う。それでも本音を言えば、他人様の資産運用に何がしかの形で関わることに、私は臆病な性格なのだ。
今後の予定
- 小ロット(1銘柄100株、運用枠500万円)での運用テストを継続する
- データを15年分に延ばし、リーマンショックやコロナ暴落の時期でも通用するかを検証する
- 三役好転など、数値で判定できるチャート格言を一つずつ売買パターンに取り込む
- 運用が定着すれば、有料の株価データサービスへの移行を検討する
連載はここでひとまず区切りとし、今後は大きな変化があった時に記事にする。
(当シリーズ記事は株式投資に関する記事ではありますが、株式投資を勧めるものではありません。また、バックテストの結果は将来の運用成績を保証するものではありません)


