短期国債(T-Bills)+株指数で作る「相場転換ヘッジ」戦略:暴落耐性と上昇取りを両立する設計図

投資戦略

この戦略は一言でいえば「資金の大半を短期国債(T-Bills)に置きつつ、株指数を“上乗せ”して、相場が崩れたら自動的に守りに切り替える」設計です。
株だけを買って祈る運用でも、現金100%で機会損失を抱える運用でもありません。“安全運用+攻め”のハイブリッドを、ルールベースで再現します。

スポンサーリンク
【DMM FX】入金
  1. なぜ短期国債(T-Bills)を土台にするのか
    1. 1)価格変動が小さい(“値動きの薄い”資産)
    2. 2)“待機資金”に利回りが付く
    3. 3)攻めるタイミングで弾薬になる
  2. この戦略のコア構造(結論:レジーム切替)
  3. 初心者がつまずくポイント:商品選び(具体例つき)
    1. パターンA:証券口座(ETFで再現)
    2. パターンB:CFD/先物/FX口座(指数を売買して再現)
  4. レジーム判定の考え方:チャートだけで作る(ここが実用)
    1. 指標セット(最低限)
    2. レジーム定義(例)
  5. 戦略の具体ルール(テンプレとして使える)
    1. 資産配分の基本形(現物ETF想定)
    2. ヘッジを入れる場合(CFD/指数先物想定)
  6. 数値で腹落ちさせる:3つのシナリオ例
    1. シナリオ1:ゆるやかな上昇相場(リスクオンが続く)
    2. シナリオ2:急落(-25%)→回復
    3. シナリオ3:レンジ相場(上下に振れる)
  7. 運用で勝敗を分ける“3つの設計”
    1. 設計1:切替頻度を抑える(週1チェックで十分)
    2. 設計2:最大ドローダウンに上限を作る(損失の天井)
    3. 設計3:資金の一部だけを“攻め口座”にする
  8. よくある失敗パターンと回避策
    1. 失敗1:危機時にヘッジを外す(怖くて反射で外す)
    2. 失敗2:レバレッジを上げてしまう(退場最短ルート)
    3. 失敗3:T-Billsを“安全”と誤解して集中する
  9. 検証のやり方:初心者でもできるバックテスト手順
  10. 実装例:MT4で指数を使って“部分ヘッジ”するMQL4 EA
  11. 最後に:この戦略が向いている人・向かない人
    1. 向いている人
    2. 向かない人

なぜ短期国債(T-Bills)を土台にするのか

投資で一番キツいのは「含み損のストレス」と「戻るまでの時間」です。株の長期投資は期待値は高い一方、暴落局面でのドローダウン(最大下落)と回復期間が長くなりがちです。
ここで短期国債(T-Bills)を土台にすると、次の3つが一気に改善します。

1)価格変動が小さい(“値動きの薄い”資産)

T-Billsは満期が短い国債です。価格は金利で動きますが、短期ほどデュレーションが短く、金利変動の影響が小さいため、長期債より価格ブレが小さくなります。
「資産が減らない」というより、正確には「減りにくい」土台ができます。

2)“待機資金”に利回りが付く

現金で寝かせるのではなく、短期国債で運用することで利回りが得られます。相場が荒れている時ほど、現金同等物を持っているだけで精神的に強くなります。

3)攻めるタイミングで弾薬になる

暴落時に一番強いのは、実は「余力が残っている人」です。短期国債は“弾薬庫”になり、株指数の買い増しやヘッジの入れ替えを機械的に行えます。

この戦略のコア構造(結論:レジーム切替)

やることはシンプルです。

  • 平常時(リスクオン):T-Billsを土台にしつつ、株指数を一定比率で保有して上昇を取りに行く
  • 警戒時(移行局面):株指数の比率を落とし、ヘッジ(ショート or プット相当)を部分的に入れる
  • 危機時(リスクオフ):株指数をさらに軽くし、ヘッジ比率を上げてドローダウンを抑える

要するに、「株を持つか/持たないか」ではなく「株の“リスク量”を調整する」戦略です。ここがオリジナリティの中核です。

初心者がつまずくポイント:商品選び(具体例つき)

実装方法は大きく2通りあります。あなたの口座(日本株/米国株/FX/CFD)に合わせて選びます。

パターンA:証券口座(ETFで再現)

イメージしやすいのはETFです。

  • T-Bills側:米国短期国債ETF(例:満期が短いタイプ)
  • 株指数側:S&P500やNASDAQなどの指数ETF
  • ヘッジ:インバースETF、または“株指数の比率を落とす”だけでも一定の効果

初心者が一番やりやすいのは、まず「ヘッジ商品を使わず、株比率を落とすだけ」で始めることです。ヘッジは慣れてからでいいです。

パターンB:CFD/先物/FX口座(指数を売買して再現)

より機械化しやすいのはCFDです。株指数をロング/ショートできるので、ヘッジが設計しやすい。
ただし、レバレッジが効く分だけ破壊力も増えるので、後述する「レバを小さく固定する」設計が必須です。

レジーム判定の考え方:チャートだけで作る(ここが実用)

本来は金利指標、クレジットスプレッド、VIXなどを組み合わせるのが理想です。ですが、データ取得が面倒で初心者にはハードルが高い。
そこでこの記事では、MT4/TradingViewでも再現しやすい“価格情報だけ”でレジームを推定します。

指標セット(最低限)

  • トレンド:移動平均(例:短期MAと長期MA)
  • 荒れ具合:ATR(平均真の値幅)
  • 急落検知:直近高値からの下落率(ドローダウントリガー)

レジーム定義(例)

ここでは「株指数(例:S&P500相当)」の足だけで決めます。

  • リスクオン:価格が長期MAの上、かつ短期MA>長期MA、かつATRが平常
  • 移行:短期MAが長期MAを割り込み、ATRが上向き
  • リスクオフ:価格が長期MAの下、かつドローダウンが一定以上(例:-6%)

重要なのは“当てにいく”ことではなく、損失局面でリスクを減らすことです。レジーム判定は100%当たらなくていい。外しても致命傷にならないように設計します。

戦略の具体ルール(テンプレとして使える)

以下は、初心者でも運用できるように「数字」を固定したルール例です。あなたの資金規模に合わせて比率だけ変えれば機能します。

資産配分の基本形(現物ETF想定)

  • 平常時:T-Bills 80% / 株指数 20%
  • 移行時:T-Bills 90% / 株指数 10%
  • 危機時:T-Bills 95% / 株指数 5%(または0%)

ポイントは「株比率を20%までに抑える」ことです。これだけで暴落の痛みは激減します。
そして、上昇相場では20%でもそれなりに利益に寄与します。リターンを最大化する戦略ではなく、“生き残りながら増やす”戦略です。

ヘッジを入れる場合(CFD/指数先物想定)

ヘッジは“株をゼロにする”のではなく、株の下落分を相殺する方向で設計します。

  • 平常時:株指数ロング(小さめ)/ヘッジなし
  • 移行時:株指数ロングを半分にし、同時に小さくショートを建ててネットを軽くする(部分ヘッジ)
  • 危機時:ロングを極小、ショートを増やしてネットをマイナス(守り優先)

ここで大事なのが「レバレッジの固定」です。最大でも口座資金の0.2〜0.5倍程度の指数エクスポージャーに抑えると、誤判定でも破綻しにくくなります。

数値で腹落ちさせる:3つのシナリオ例

シナリオ1:ゆるやかな上昇相場(リスクオンが続く)

資金100万円。平常時配分:T-Bills 80万円、株指数20万円。
株指数が1年で+20%だと、株部分は+4万円。T-Bills部分は利回りが仮に年+4%なら+3.2万円。合計+7.2万円。
株100%の+20万円には負けますが、“下げに強い設計”でこのリターンなら実用的です。

シナリオ2:急落(-25%)→回復

株100%なら一時的に-25万円の含み損です。メンタルが折れて売ったら終わり。
この戦略なら株20万円が-25%で-5万円。T-Billsは値動きが小さく、利回りで耐える。合計の落ち込みは限定的です。
しかも危機判定に入れば株比率を落とすので、“途中からさらに下げにくくなる”のが強みです。

シナリオ3:レンジ相場(上下に振れる)

レンジはこの戦略の苦手局面になりやすいです。トレンド判定が往復ビンタを食らい、細かく切り替えて損が出る。
対策はシンプルで、「切替にクールダウン期間を入れる」こと。例えば、移行/危機に入ったら最低でも5営業日は同じレジームを維持する。これだけでノイズが減ります。

運用で勝敗を分ける“3つの設計”

設計1:切替頻度を抑える(週1チェックで十分)

初心者ほど毎日触って壊します。レジーム判定は日足や4時間足で行い、週1回(例:金曜引け後)に見直すだけでも成立します。
頻繁な売買は手数料・スリッページ・判断ミスを増やします。

設計2:最大ドローダウンに上限を作る(損失の天井)

最初に決めるべきは利益目標ではなく「ここまで落ちたら守りに入る」という上限です。
例:口座全体で-8%になったら、株指数のネットエクスポージャーを0にする(=株を売る、またはロングとショートで相殺)。
こういう“天井”を作ると、一発退場の確率が激減します。

設計3:資金の一部だけを“攻め口座”にする

どうしてもリターンを上げたいなら、全額でレバをかけない。
資金100万円のうち、90万円はT-Bills土台(守り)として運用し、10万円だけを指数の短期売買に回す。
この分離は強力です。リスクの上限が物理的に限定されます。

よくある失敗パターンと回避策

失敗1:危機時にヘッジを外す(怖くて反射で外す)

危機時は値動きが大きいので、ショートが利益になっても怖くて手仕舞いしがちです。
回避策は「ヘッジの出口条件を先に決める」。例:価格が長期MAを回復し、ATRが平常化するまでヘッジを維持。

失敗2:レバレッジを上げてしまう(退場最短ルート)

この戦略は“低レバ前提”です。上昇局面で物足りなくなり、レバを上げると、危機判定が遅れた瞬間に終わります。
回避策は「最大ロットを固定」すること。口座資金が増えても、ロットを増やさない期間を作ると事故が減ります。

失敗3:T-Billsを“安全”と誤解して集中する

短期国債でもリスクはゼロではありません(流動性、制度、通貨、金利環境など)。
ただし、株と比べれば値動きは小さい。だからこそ「土台」として機能します。過信せず、分散の一部として使うのが現実的です。

検証のやり方:初心者でもできるバックテスト手順

高度な統計は不要です。次の手順で“機械的に”確かめられます。

  1. 株指数(例:S&P500相当)のチャートを日足で用意する
  2. 長期MA(例:200日)と短期MA(例:50日)を表示する
  3. ATR(例:14)を表示する
  4. 過去の大きな下落局面(例:急落があった年)を3つ選ぶ
  5. ルール通りに「平常→移行→危機」の切替が起きたか目視で確認する
  6. 危機局面で株比率を落とした場合、最大下落がどれくらい減ったかを計算する

この戦略の合格基準は「利益が最大」ではなく、最大下落と回復期間が短くなるかです。ここが改善するなら採用価値があります。

実装例:MT4で指数を使って“部分ヘッジ”するMQL4 EA

以下は、CFDなどで指数を売買できる人向けのサンプルEAです。
やることは「レジーム判定(MA+ATR+ドローダウン)に応じて、ロング/ショートのネット比率を切り替える」です。
※シンボル名はブローカーで異なるため入力で変更してください。

//+------------------------------------------------------------------+
//| Regime Hedge EA (T-Bills + Equity Index concept)                  |
//|   - Trades equity index symbol with regime-based net exposure     |
//|   - Designed for low leverage, partial hedge                      |
//|   - Author: ChatGPT                                               |
//+------------------------------------------------------------------+
#property strict

input string InpIndexSymbol   = "US500";     // Equity index CFD symbol
input int    InpFastMAPeriod  = 50;
input int    InpSlowMAPeriod  = 200;
input int    InpATRPeriod     = 14;
input double InpATRHighMult   = 1.35;        // ATR spike threshold vs ATR MA
input int    InpATRMAPeriod   = 50;          // ATR moving average period
input double InpDDTriggerPct  = 6.0;         // Drawdown trigger (%) from recent high
input int    InpDDLookback    = 60;          // Lookback bars to find recent high
input int    InpCooldownBars  = 5;           // Minimum bars to keep regime
input double InpBaseLots      = 0.10;        // Base lots (fixed)
input double InpHedgeLots     = 0.10;        // Hedge lots (fixed)
input int    InpSlippage      = 5;
input int    InpMagic         = 225001;

enum Regime { RISK_ON=0, TRANSITION=1, RISK_OFF=2 };

datetime g_lastRegimeChange = 0;
Regime   g_regime = RISK_ON;

//--- helpers
double iMA_S(string sym, int tf, int per, int shift){
   return iMA(sym, tf, per, 0, MODE_SMA, PRICE_CLOSE, shift);
}
double iATR_S(string sym, int tf, int per, int shift){
   return iATR(sym, tf, per, shift);
}
double ATR_MA(string sym, int tf, int atrPer, int maPer, int shift){
   // simple MA of ATR values
   double sum = 0;
   for(int i=shift; i high) high = h;
   }
   return high;
}

int CountPositions(string sym){
   int c=0;
   for(int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
         if(OrderMagicNumber()==InpMagic && OrderSymbol()==sym) c++;
      }
   }
   return c;
}

double NetLots(string sym){
   double net=0;
   for(int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
         if(OrderMagicNumber()==InpMagic && OrderSymbol()==sym){
            if(OrderType()==OP_BUY)  net += OrderLots();
            if(OrderType()==OP_SELL) net -= OrderLots();
         }
      }
   }
   return net;
}

void CloseAll(string sym){
   for(int i=OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
         if(OrderMagicNumber()==InpMagic && OrderSymbol()==sym){
            bool ok=false;
            if(OrderType()==OP_BUY){
               ok = OrderClose(OrderTicket(), OrderLots(), Bid, InpSlippage, clrNONE);
            }else if(OrderType()==OP_SELL){
               ok = OrderClose(OrderTicket(), OrderLots(), Ask, InpSlippage, clrNONE);
            }
         }
      }
   }
}

bool OpenBuy(string sym, double lots){
   RefreshRates();
   double price = MarketInfo(sym, MODE_ASK);
   return OrderSend(sym, OP_BUY, lots, price, InpSlippage, 0, 0, "RegimeBuy", InpMagic, 0, clrNONE) > 0;
}
bool OpenSell(string sym, double lots){
   RefreshRates();
   double price = MarketInfo(sym, MODE_BID);
   return OrderSend(sym, OP_SELL, lots, price, InpSlippage, 0, 0, "RegimeSell", InpMagic, 0, clrNONE) > 0;
}

Regime CalcRegime(){
   string s = InpIndexSymbol;
   int tf = PERIOD_D1;

   double fast0 = iMA_S(s, tf, InpFastMAPeriod, 0);
   double slow0 = iMA_S(s, tf, InpSlowMAPeriod, 0);
   double fast1 = iMA_S(s, tf, InpFastMAPeriod, 1);
   double slow1 = iMA_S(s, tf, InpSlowMAPeriod, 1);

   double atr0  = iATR_S(s, tf, InpATRPeriod, 0);
   double atrMA = ATR_MA(s, tf, InpATRPeriod, InpATRMAPeriod, 0);

   double recentHigh = RecentHigh(s, tf, InpDDLookback, 0);
   double close0 = iClose(s, tf, 0);
   double ddPct = 0;
   if(recentHigh > 0) ddPct = (recentHigh - close0) / recentHigh * 100.0;

   bool trendUp   = (close0 > slow0) && (fast0 > slow0);
   bool trendDown = (close0 < slow0) && (fast0 < slow0);

   bool atrSpike  = (atrMA > 0 && atr0 > atrMA * InpATRHighMult);

   if(trendDown && (ddPct >= InpDDTriggerPct)) return RISK_OFF;
   if(!trendUp && (fast1>=slow1 && fast0 0) OpenBuy(s, targetNet);
   if(targetNet < 0) OpenSell(s, MathAbs(targetNet));
}

int OnInit(){
   g_lastRegimeChange = 0;
   g_regime = RISK_ON;
   return(INIT_SUCCEEDED);
}

void OnTick(){
   string s = InpIndexSymbol;
   if(MarketInfo(s, MODE_TRADEALLOWED)==false) return;

   // Run only once per new D1 bar
   static datetime lastBarTime = 0;
   datetime bt = iTime(s, PERIOD_D1, 0);
   if(bt == lastBarTime) return;
   lastBarTime = bt;

   Regime newR = CalcRegime();

   // cooldown
   if(g_lastRegimeChange != 0){
      int barsSince = iBarShift(s, PERIOD_D1, g_lastRegimeChange, true);
      if(barsSince >= 0 && barsSince < InpCooldownBars){
         newR = g_regime;
      }
   }

   if(newR != g_regime){
      g_regime = newR;
      g_lastRegimeChange = bt;
   }

   AdjustPositions(g_regime);
}
//+------------------------------------------------------------------+

使い方の要点:このEAは「資金の大半はT-Bills相当(口座外でも可)」で置き、指数側だけを小ロットで回す前提です。
ロット(InpBaseLots / InpHedgeLots)を小さく固定し、判定が外れても致命傷にならないようにしてください。

最後に:この戦略が向いている人・向かない人

向いている人

・暴落のストレスを減らしながら、株の上昇もある程度取りたい人
・手動の裁量判断が苦手で、ルールを固定したい人
・“退場しない設計”を最優先したい人

向かない人

・短期で爆益を狙いたい人(この戦略はそれを目的にしていません)
・レバレッジを上げてリターンを最大化したい人(破綻確率が上がります)

勝ちやすい運用は、派手な戦略ではなく「大負けしない設計」です。
短期国債を土台に置き、株指数のリスク量をレジームで切り替えるだけで、運用の“形”が変わります。まずは小さく、ルール通りに回して検証してください。

投資には価格変動リスクがあります。最終判断はご自身の責任で行ってください。

コメント

タイトルとURLをコピーしました