投資や資産運用をしていると、「毎日チャートをチェックするのが面倒」「なんとなくの感覚で利確・損切りをしてしまう」という悩みにぶつかりませんか?
特に、値動きの激しい半導体関連の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でのプログラミングは、投資の強力な武器になります。まずは気になっている銘柄のティッカーシンボルをコードに入れて、自分だけのチャートを描画するところから始めてみてください!


コメント