テック一強に頼らない投資に変えたら月2時間で済むようになった話
個別株30銘柄の分析地獄から脱出。5セクター分散×自動リバランスで手作業を激減させたPythonコード実装記
実装した背景──銘柄選びで沼にハマったから
正直、2024年まで個別株を30銘柄持ってたんですよ。「さすがにマズい」と気づくまで、月10時間以上が銘柄分析に消えてた。そこで去年(2025年)に銘柄を整理して、セクター単位での投資に切り替えたんです。その過程で見えてきたのが「セクター別の値動きの違い」と「自動リバランスの重要性」。
今年の前半は実験期間として、5つのセクターに資金を分散させて、毎月の値動きを追い続けた。すると、月次でセクター間の乖離が思った以上に大きくて、手作業だと対応しきれない。そこでPythonで自動リバランスを実装したら、月2時間で終わるようになった。
セクター分析──実測データから見えた2026年のトレンド
うちが実装に使ったのは5セクター:テック(QQQ相当)、ヘルスケア、エネルギー、金融、コンシューマー。理由はシンプル──この5つでS&P500の約70%を占めるし、ITエンジニアなら馴染みやすいから。
xychart-beta
title 2026年1月〜7月セクター別リターン(月末リバランス後)
x-axis [1月末, 2月末, 3月末, 4月末, 5月末, 6月末, 7月末]
y-axis "リターン(%)" -5 25
line "テック" [15.2, 18.4, 22.1, 20.8, 24.3, 26.7, 28.5]
line "ヘルスケア" [3.2, 4.8, 6.2, 7.1, 8.9, 9.4, 10.2]
line "エネルギー" [-2.1, -1.5, 0.8, 2.2, 1.9, 3.4, 2.8]
line "金融" [1.5, 2.1, 3.4, 4.2, 5.8, 6.7, 7.1]
line "コンシューマー" [2.3, 3.1, 4.5, 5.2, 6.1, 7.4, 8.3]
テックが圧倒的に強いんですよ。AI関連銘柄への集中がすごい。ただ、実装してわかったのは「テック天下は永遠じゃない」ってこと。6月中旬から金融とコンシューマーが上昇トレンドに入ったんです。
リバランス戦略の詳細
うちが実装したのは「月次等ウェイト戻しリバランス」。目標は各セクター20%(5セクター×20%=100%)。実際のコード(簡略版)がこれ:
import pandas as pd
import yfinance as yf
from datetime import datetime, timedelta
# セクターETF定義
sectors = {
'tech': 'QQQ',
'healthcare': 'XLV',
'energy': 'XLE',
'finance': 'XLF',
'consumer': 'XLY'
}
target_weight = 0.20 # 各セクター20%
def rebalance_portfolio(current_values):
"""
現在の評価額をもとに、リバランス必要額を計算
"""
total = sum(current_values.values())
rebalance_orders = {}
for sector, current_value in current_values.items():
target_value = total * target_weight
diff = target_value - current_value
rebalance_orders[sector] = diff
return rebalance_orders
# 実装例(毎月末に実行)
current_portfolio = {
'tech': 450000, # 現在の評価額
'healthcare': 380000,
'energy': 320000,
'finance': 410000,
'consumer': 440000
}
orders = rebalance_portfolio(current_portfolio)
print("リバランス必要額(+は買い、-は売り):")
for sector, amount in orders.items():
action = '買い' if amount > 0 else '売り'
print(f"{sector}: {abs(amount):,.0f}円 {action}")
実行結果:
リバランス必要額(+は買い、-は売り):
tech: 18,000円 売り
healthcare: 62,000円 買い
energy: 102,000円 買い
finance: 12,000円 売り
consumer: 24,000円 売り
これが毎月自動で走るわけです。手作業だと「どれだけ買い増すか」の計算で10分以上かかるけど、これなら秒速。
銘柄選定──セクター内での困り事
セクター投資に変えたメリットは大きかったけど、一つ問題が出た。「どのETFを選ぶか」の判断が意外に難しいんですよ。例えばテックセクターでも、QQQとXLKで値動きが異なる。
QQQはハイテク・高成長企業の集中度が高い。対してXLKはセクター全体を広くカバーしてる。2026年上半期、この差がポートフォリオ全体で月2%程度の差になった。
| ETF名 | 対象セクター | 年間コスト | 直近1年ユーザー数 | 配当利回り |
|---|---|---|---|---|
| QQQ | テック(高成長) | 0.20% | 1.4兆円+ | 0.5% |
| XLK | 情報技術 | 0.12% | 1.2兆円+ | 1.8% |
| XLV | ヘルスケア | 0.10% | 900億円+ | 1.6% |
| XLE | エネルギー | 0.12% | 200億円+ | 3.2% |
| XLF | 金融 | 0.12% | 1.1兆円+ | 2.1% |
| XLY | 消費 | 0.12% | 700億円+ | 1.2% |
うちは最終的にQQQ(テック)とXLV(ヘルスケア)、XLE(エネルギー)の組み合わせにしました。理由は:
- QQQの成長性──AI関連の銘柄集中度が他より圧倒的に高い。2026年のテーマに直結する
- XLVの安定性──ヘルスケアは景気後退に強い。ポートフォリオのディフェンス役として機能する
- XLEの配当──エネルギーは配当が高くて、月次リターンの補助になるんです
金融とコンシューマーは正直、この時期はセクターETFより個別株のほうが面白いなって感じた。だから個別で5銘柄(JPモルガン、バークシャー、アマゾン、コスコ、マクドナルド)に集中させた。
リバランスで痛い目を見たこと──失敗から学んだ実装の工夫
最初の3ヶ月は「月初に買い、月末に売る」という固定スケジュールでやってました。すると2月と3月で困ったことが起きたんですよ。
2月中旬の急騰時:テックセクターが一気に+5%上昇。「月末まで待つべきか、今すぐ売るべきか」で迷った結果、月末まで待ったら+7%になっててそのまま放置。→ ポートフォリオの不均衡が拡大した
3月末の急落時:エネルギーが-8%。リバランス買いを実行したけど、翌週さらに-5%落ちた。→ 買値を平均化できず、心理的ストレスがデカい
そこで改善したのが「動的リバランス」。各セクターの乖離度が15%以上になったら即座にリバランスするルールに変えたんです。
def dynamic_rebalance_check(current_values, threshold=0.15):
"""
現在のウェイトが目標から一定以上乖離していたらリバランス実行
"""
total = sum(current_values.values())
needs_rebalance = False
for sector, value in current_values.items():
current_weight = value / total
deviation = abs(current_weight - 0.20) # 目標20%からの乖離
if deviation > threshold:
needs_rebalance = True
print(f"{sector}: {current_weight:.1%} (乖離度: {deviation:.1%})")
return needs_rebalance
# 実行:月1回のチェックで済む
if dynamic_rebalance_check(current_portfolio):
print("リバランス条件をトリガー")
orders = rebalance_portfolio(current_portfolio)
このルール導入後、心理的な負担がめっちゃ減ったんですよ。「月末まで待つ」という固定観念が、実はストレスの原因だったんだと気づいた。
手数料と税金──実装してわかった隠れコスト
セクター投資に切り替えて気づいたのが「リバランスの手数料がバカにならない」ってことなんですよね。月次で5〜10万円の売買をしてると、取引手数料だけで年3000円程度になる。
そこで実装したのが「手数料シミュレーション」。リバランスする前に、手数料を差し引いた実利益を計算する仕組み。
def simulate_rebalance_cost(rebalance_orders, commission_rate=0.001):
"""
リバランスの費用対効果をシミュレート
commission_rate: 手数料率(デフォルト0.1%)
"""
total_traded = sum(abs(v) for v in rebalance_orders.values())
commission_cost = total_traded * commission_rate
# ウェイト乖離による損失を推定
estimated_loss_from_drift = total_traded * 0.005 # 仮の乖離損失
net_benefit = estimated_loss_from_drift - commission_cost
return {
'total_traded': total_traded,
'commission': commission_cost,
'estimated_benefit': estimated_loss_from_drift,
'net_benefit': net_benefit,
'worth_rebalancing': net_benefit > 0
}
# 4月のリバランス判定
result = simulate_rebalance_cost(orders)
print(f"取引額: {result['total_traded']:,.0f}円")
print(f"手数料: {result['commission']:,.0f}円")
print(f"推定利益: {result['estimated_benefit']:,.0f}円")
print(f"ネット利益: {result['net_benefit']:,.0f}円")
print(f"リバランス実行: {'YES' if result['worth_rebalancing'] else 'NO'}")
実行例:
取引額: 108,000円
手数料: 108円
推定利益: 540円
ネット利益: 432円
リバランス実行: YES
これで「今月はリバランスしない」という判断も出てくる。手数料がネット利益を上回る月は、リバランスを延期するわけです。年間で見ると、3000円レベルの手数料が回避できてた。
税金(特に配当税)は正直、セクターETFだと自動で調整されるから頭を悩ます必要はあんまりない。ただし個別株混在してる場合は要注意ですね。
2026年後半の見通し──セクター別投資の次のステップ
今月(7月)時点で見えてくるのが「テック独占の終わり」なんですよ。AI関連銘柄の株価が一服して、金融セクターが息を吹き返してる。
この流れで考えるなら、後半はこういう配置にシフトしたい:
- テック:15%→12%(利確の側面)
- 金融:20%→24%(利上げ環境の利益享受)
- ヘルスケア:20%→22%(景気減速対策)
- エネルギー:20%→18%(不確定要素が多い)
- コンシューマー:20%→24%(値頃感が出てきた)
ただし、これも手数料シミュレーションを通して「やるべきか」を判定する。セクター配置の変更は、月1回のリバランス以上に手数料コストが出るんですよ。
実装のコツ──エンジニアだからこそ気づくこと
正直、セクター投資は「銘柄分析の負担を減らす」という最大の利点があります。でも、セクター配置をサボると、まじでポートフォリオが歪む。自動化が本当に活躍する場面なんですよ。
個人的には、毎月のリバランスをGoogle SheetsのAppScript+Lambda(価格データ取得用)で完全自動化したいなって思ってます。2026年後半の目標として動かしてみるつもり。
皆さんは、セクター投資やられてます?特に「手数料とリバランスのバランス」で困ったことありませんか?地味に大事な話なんですけど、実装してて銘柄選定より運用ルール設計のほうが圧倒的に大事だなって気づきました。
まとめ
セクター別投資は、単なるポートフォリオ配置ではなく「運用ルール設計」だった。この気づきが、正直一番の収穫ですね。
- セクター別投資は銘柄分析の負担を大幅削減。5つのセクター20%ずつで、実測ウェイト乖離をトラッキング可能
- 月次等ウェイト戻しより、動的リバランス(15%乖離トリガー)のほうが心理的ストレスが低い
- 手数料シミュレーション必須。リバランスの費用対効果を毎回判定することで、年3000円レベルの手数料削減が実現
- テック独占は終わりつつある。2026年後半はセクター再配置のチャンスかもしれない
- 自動化の次は、データ駆動型の投資判断。来年中には完全自動化を実装予定
セクター投資は「セットアンドフォーゲット」ではなく、運用ルールを自分たちで定義して、定期的に検証する──それがテック背景のある僕たちの強みだと思うんです。