MENU

SOX指数やFXのエグジット戦略をシミュレーション

投資や資産運用をしていると、「毎日チャートをチェックするのが面倒」「なんとなくの感覚で利確・損切りをしてしまう」という悩みにぶつかりませんか?

特に、値動きの激しい半導体関連のSOX指数や、FX(為替)のポジションを持っている場合、データに基づいた冷静な判断が求められます。そこで活躍するのがPythonです。

この記事では、Pythonを使って無料で株価や為替の過去データを取得し、自分なりの投資分析や、FXのエグジット(出口)戦略をシミュレーションする実践的な方法を解説します。プログラミング初心者の方でもコピペで試せるよう、手順を追って説明していきます。

目次

なぜPythonで投資分析をするのか?

証券会社のアプリやブラウザのチャートツールでも分析は可能ですが、Pythonを使うことで以下のような圧倒的なメリットがあります。

  • 自分だけのオリジナル指標を計算できる
  • 過去何十年分ものデータを使ったバックテスト(シミュレーション)が一瞬で終わる
  • 感情を排除した機械的なエグジット戦略を検証できる

今回は、データ取得に便利なライブラリ「yfinance」を使って、実際にデータを触ってみましょう。

準備:Mac環境でのライブラリのインストール

まずは分析に必要なツールを準備します。Macの「ターミナル」を開いて、以下のコマンドを実行し、必要なライブラリをインストールしてください。

pip install yfinance pandas matplotlib
  • yfinance: Yahoo Financeから無料でマーケットデータを取得するライブラリ
  • pandas: 取得したデータを表形式で扱いやすくするライブラリ
  • matplotlib: データをグラフ化(チャート化)するライブラリ

これで準備は完了です。

もし上記でエラーが出る場合には、下記コマンドを実行して見てください。

pip3 install yfinance pandas matplotlib

実践1:SOX指数(半導体株指数)のデータを取得・可視化する

まずは、近年注目を集めているSOX指数(ティッカーシンボル:^SOX、または連動ETFのSOXX)のデータを取得し、トレンドを分析してみましょう。

以下のPythonコードを実行すると、過去1年間のデータと移動平均線(20日、50日)を描画できます。

Python

import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

# SOX指数のデータを過去1年分取得
ticker = '^SOX'
data = yf.download(ticker, period='1y')

# 移動平均線(20日、50日)を計算
data['SMA20'] = data['Close'].rolling(window=20).mean()
data['SMA50'] = data['Close'].rolling(window=50).mean()

# チャートの描画
plt.figure(figsize=(12, 6))
plt.plot(data.index, data['Close'], label='SOX Index', color='blue')
plt.plot(data.index, data['SMA20'], label='20-Day SMA', color='orange')
plt.plot(data.index, data['SMA50'], label='50-Day SMA', color='green')
plt.title('SOX Index - 1 Year Trend with SMA')
plt.legend()
plt.grid()
plt.show()

[ここにPythonで出力されたチャートの像を挿入]

【分析のポイント】 出力されたチャートを見ると、短期の移動平均線(オレンジ)が長期の移動平均線(緑)を下抜け様とする「デッドクロス」を視覚的に確認できます。量子コンピューターやAIの発展で長期的な成長が期待される半導体セクターですが、こうしたテクニカル指標をPythonでサクッと確認できるのは大きな強みです。

実践2:FXのデータ取得とエグジット戦略のシミュレーション

次に為替(FX)です。例えば、FX口座でポジションを持っている場合、「どこで利益を確定させるか」「どこで損切りするか」というエグジット戦略が口座の命運を分けます。

ここでは、米ドル/円(USDJPY=X)の過去データを使って、「買った日から〇〇円上がったら利確、〇〇円下がったら損切り」というシンプルなルールを適用した場合の勝率をシミュレーションする基礎コードを紹介します。

import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

# ドル円のデータを過去2年分取得
fx_data = yf.download('USDJPY=X', period='2y')

# シンプルなシミュレーション用変数
take_profit_pips = 1.0  # 1円上がったら利確
stop_loss_pips = 0.5    # 0.5円下がったら損切り
wins = 0
losses = 0

# ※ここは非常に簡易的なロジックです。実際は日々の高値・安値を考慮します。
close_prices = fx_data['Close'].values

for i in range(len(close_prices) - 20):
    entry_price = close_prices[i]
    
    # エントリー後、最大20日間で利確・損切りラインに到達するかチェック
    for j in range(1, 20):
        future_price = close_prices[i + j]
        if future_price >= entry_price + take_profit_pips:
            wins += 1
            break
        elif future_price <= entry_price - stop_loss_pips:
            losses += 1
            break

print(f"利確回数: {wins}回")
print(f"損切回数: {losses}回")
print(f"勝率: {wins / (wins + losses) * 100:.2f}%" if (wins + losses) > 0 else "データなし")

上記コードはざっくりと、1円上がった場合に利益確定、0.5円下がった場合には損切りを行うシミュレーションをしています。

出力すると下記結果が表示されました。

利確回数: 241回
損切回数: 258回
勝率: 48.30%

【シミュレーションから見えてくること】 このコードを実行すると、設定したルールが過去の相場で通用したのかが数字でバッチリ出ます。 「損小利大」のルールを設定したつもりでも、実際にバックテストをしてみると勝率が著しく悪かったり、逆に意外なほど安定した結果が出たりします。感覚ではなく、データに基づいたエグジット戦略を持つことで、メンタルへの負荷を大きく減らすことができます。

まとめ:資産形成は「データ」を味方につける

今回はPythonを使ってSOX指数や為替データを取得し、分析とシミュレーションを行う第一歩をご紹介しました。

  • yfinanceを使えば、無料で簡単に相場データが手に入る
  • 自分の投資ルール(エグジット戦略など)を、過去データで答え合わせできる
  • 感情に流されない、ロジカルな資産運用が可能になる

Pythonでのプログラミングは、投資の強力な武器になります。まずは気になっている銘柄のティッカーシンボルをコードに入れて、自分だけのチャートを描画するところから始めてみてください!


よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次