
はじめに
株式市場では、IPOや決算発表、配当権利落日など、様々な「イベント」が株価に大きな変動をもたらします。これらのイベントを捉えて売買シグナルを自動通知できれば、投資機会を逃さずにアクションを取れるようになります。本記事では、Mac環境でPythonスクリプトとcron、Slack Incoming Webhookを組み合わせ、イベント投資のシグナルを自動化して通知する仕組みをステップ・バイ・ステップで解説します。
この記事で学べること
- イベント投資の基本概念と自動通知のメリット
- 必要な環境とライブラリの準備方法
- Pythonスクリプトのサンプルコード解説
- cronによる定期実行設定手順
- Slackを介したプッシュ通知の設定方法
- 取引日判定(祝日・土日スキップ)の実装方法
- 今後の拡張アイデアと応用例
1. イベント投資とは?
「イベント投資」とは、特定の企業や市場イベント(IPO、決算発表、株主優待、立会外分売、アノマリーなど)が発生したタイミングで株価変動の大きな銘柄を狙う投資手法です。これらのタイミングは、情報拡散のタイムラグや需給バランスの変化によって価格が急伸・急落しやすく、短期的に効率的なリターンを得られる可能性があります。
2. なぜ自動通知が必要なのか?
イベント発生のタイミングは瞬時に過ぎ去るため、手動監視だけではシグナルを取りこぼすリスクがあります。自動通知システムを構築すれば、夜間や仕事中でもリアルタイムで変動をキャッチし、機会を逃しません。また、ヒューマンエラーの排除や分析ルーチンの標準化にも寄与します。
3. 構築に必要なツールと環境
- Mac本体
Pythonが動作する環境を用意します。※環境はMacに限定されるものではありません。 - Python3(推奨3.9以上)
スクリプト実行用。Homebrewやpyenvでインストール可能。 - pip3
依存ライブラリのインストールツール。 - Slack WorkspaceとIncoming Webhook URL
Slackで通知を受け取るチャンネルにWebhookを設定します。 - cron
macOSのターミナルから定期実行設定を行います。 - ライブラリ
yfinance
、requests
、jpholiday
(祝日判定用)を利用します。
4. Pythonスクリプトの全体像
本節では、指定銘柄の直近2営業日の終値を取得し、前日比が閾値を超えた場合にSlackへ通知するPythonスクリプトの全体像を示します。
通知するための判定は例ですので、実際にはイベント投資に判定プログラムをプログラムする必要があります。
#!/usr/bin/env python3 import requests import yfinance as yf import jpholiday from datetime import datetime, timedelta # —————— 設定 —————— SLACK_WEBHOOK_URL = 'https://hooks.slack.com/services/XXXX/XXXX/XXXXXXXX' # Webhook URLを設定 TICKERS = ['7203.T', '6758.T'] # 監視したい銘柄リスト THRESHOLD = 0.01 # 前日比1%以上で通知 # —————— 取引日判定 —————— def is_business_day(date): return date.weekday() < 5 and not jpholiday.is_holiday(date) def last_trading_day(from_date): d = from_date while not is_business_day(d): d -= timedelta(days=1) return d # —————— 終値取得 —————— def fetch_close(ticker, date): df = yf.download( ticker, start=date, end=date + timedelta(days=1), progress=False ) if df.empty or 'Close' not in df: return None return float(df['Close'].iloc[0]) # —————— 通知関数 —————— def send_slack(msg): resp = requests.post( SLACK_WEBHOOK_URL, json={'text': msg} ) return resp.status_code == 200 # —————— メイン処理 —————— def main(): today = datetime.now().date() last_day = last_trading_day(today) prev_day = last_trading_day(last_day - timedelta(days=1)) for ticker in TICKERS: close_prev = fetch_close(ticker, prev_day) close_last = fetch_close(ticker, last_day) if close_prev is None or close_last is None: print(f"{ticker}: 価格取得失敗 ({prev_day}, {last_day})") continue change = (close_last / close_prev) - 1 msg = ( f"{ticker} {last_day} vs {prev_day}:" f"前日比 {change*100:.2f}% (¥{close_prev:.0f}→¥{close_last:.0f})" ) print(msg) if change >= THRESHOLD: send_slack(f"🚀 Signal: {msg}") if __name__ == '__main__': main()
条件を満たす(前日より1%以上株価が上昇している)と、次のような通知がSlackに届きます。
4.1 コード解説
以下では、主要なコード部分ごとに説明します。
- 設定セクション
SlackのWebhook URL、監視銘柄リスト、閾値を定義します。 - 取引日判定関数
「土日・祝日を除外」するロジック。jpholiday.is_holiday()
を用いて日本の祝日を判定します。 - 終値取得関数
yfinance
で指定日から翌日の間に取得した終値を返し、Series型からfloat型へキャストします。 - 通知関数
Slack Incoming WebhookへのPOSTリクエストでメッセージを送信します。ステータスコード200で成功判定。 - メイン処理
直近2営業日の終値を比較し、変化率が閾値以上なら通知。ループで複数銘柄に対応しています。
5. ライブラリインストール
ライブラリインストール
- ターミナルを開き、Homebrewでpip3を準備
- 必要ライブラリを一括インストール
pip3 install yfinance requests jpholiday
- スクリプトに実行権限を付与
chmod +x stock_signal.py
6. cronによる定期実行設定
crontab -e
で編集画面を開く- 以下を追加(毎営業日16:30実行例)
30 16 * * 1-5 /usr/bin/env python3 /Users/あなた/stock_signal.py >> /Users/あなた/stock_signal.log 2>&1
- 保存して終了。cronが自動登録される
7. 応用と拡張アイデア
- 移動平均クロスやボラティリティ指標を組み込み、高度なシグナル生成
- kabustationAPIで高速・高精度な株価データを取得
- メールやTelegram、Pushoverなど複数チャネルへの同報機能追加
- 分析結果をCSV/JSONで蓄積し、ダッシュボードを作成
おわりに
本記事では、Mac環境でPythonスクリプトを使い、cronとSlack Incoming Webhookを組み合わせて株価変動シグナルを自動通知する方法を解説しました。イベント投資における機会損失を防ぎ、効率的に投資判断を行うための一助としてお役立てください。
Pythonを学ぶなら「Udemy」で効率的に
独学でPythonを学ぶ場合、公式リファレンスだけでは挫折しがちです。
そんな時に心強いのが、動画で体系的に学べるUdemyの講座。
- Python初心者向け講座から、投資データ分析に特化した実践講座まで多数
- 買い切り型で、一度買えばいつでも復習可能
- セール時は90%オフなど、非常にお得
投資家にとっての“自己投資”として、Udemyは非常にコスパの高い選択肢です。
【裏ワザ】Udemyの講座は“ある方法”でさらにお得に買える
実は、Udemyの講座はポイントサイトを経由することで、さらにお得に購入できることをご存知ですか?
おすすめは「ハピタス」というポイントサイト。
ハピタスを経由してUdemyで講座を購入すると、購入金額の数15%がポイントとして還元されます(2025年4月調査時点)。
手順は3ステップ
- ハピタスに無料登録
- 「Udemy」と検索して表示されたリンクをクリック
- 講座を通常通り購入するだけ
講座はPythonの基本から株価分析、AI株価予測まで、いろいろそろっています。
学びながらポイントも貯まり、一石二鳥です。