- この戦略で狙うもの:T-Billsを「保険」ではなく「エンジン」にする
- 前提知識:T-Billsが“相場転換ヘッジ”に向いている理由
- 戦略の全体像:2つのレジームを切り替える
- 相場転換をどう検知するか:初心者でも運用できる3つのシグナル
- 実践の型:そのまま運用できるルールセット(テンプレ)
- 具体例:3つの相場でこのルールがどう動くか(思考実験)
- 「レバレッジ」を混ぜる場合の現実的な考え方
- 初心者がやりがちな失敗と、潰し方
- 検証の考え方:バックテストで見るべき指標は“勝率”ではない
- MQL4での実装例:指数CFDをレジームで切り替えるEA(雛形)
- 実運用のチェックリスト:毎週やることはこれだけ
- まとめ:この戦略は「当てる」ではなく「生き残る」ための設計
この戦略で狙うもの:T-Billsを「保険」ではなく「エンジン」にする
短期国債(米国のT-Bills)は、値動きが小さく、金利水準によってはキャッシュより利回りが期待できる“低ボラ資産”です。多くの個人投資家は「暴落が怖いから現金に逃げる」「株が上がりそうなら全力で突っ込む」という二択になりがちですが、これだと“上昇相場の取り逃し”と“下落相場の被弾”が交互に起きやすい。
本記事のテーマは、T-Billsをポートフォリオの“待機資金”で終わらせず、株指数(S&P500やNASDAQなど)と組み合わせて相場のレジーム(局面)を切り替えながら運用することです。狙いはシンプルで、次の3つを同時に満たす設計です。
- 平常時:T-Billsで土台を作りつつ、株指数にも乗って取りこぼしを減らす
- 転換点:下落の初動で“株のエクスポージャー”を減らし、損失の深掘りを抑える
- 底打ち後:戻りの初動で再び株に戻り、反発局面のリターンを取りに行く
「それって結局タイミング投資では?」と思うかもしれませんが、ポイントは“当てにいく”のではなく、損失が膨らむ局面だけを確率的に避け、利益が出やすい局面は取り逃しを減らすという発想です。外れる前提で、外れても致命傷にならない設計にします。
前提知識:T-Billsが“相場転換ヘッジ”に向いている理由
1) 値動きが小さい:下落局面の心理的損耗を減らす
T-Billsは満期が短い(例:4週、13週、26週など)ため、金利上昇局面でも価格下落が相対的に小さいのが特徴です。株が下がるときに「資産が目減りしている」というストレスが小さく、冷静にルール運用しやすい。これが個人投資家には大きい。
2) “金利がある世界”ではキャッシュより有利になりやすい
金利が高い局面では、T-Billsや短期国債系ETF/ファンドは、現金よりも利回りが得られることがあります。ここで重要なのは、T-Billsを「リスク資産を買うまでの暇つぶし」にせず、保有しているだけでポートフォリオの期待収益を底上げする発想に切り替えることです。
3) 株の下落局面で“資金移動先”として機能しやすい
株が大きく下げる局面では、「株→安全資産」への資金シフトが起きやすい。T-Billsは、その受け皿になりやすく、ポートフォリオのブレを抑えます。ここでの狙いは、暴落を完全に避けることではなく、損失の“深さ”と“回復に必要な時間”を短くすることです。
戦略の全体像:2つのレジームを切り替える
本戦略は、基本的に次の二段階を切り替えます。
レジームA:リスクオン(通常局面)
株指数を保有しつつ、同時にT-Bills(または短期国債相当)も持ちます。株100%ではなく、例えば「株60% + T-Bills40%」のようなバランスを持つ。これにより、上昇相場でそこそこ乗りながら、下落局面のダメージを抑えます。
レジームB:リスクオフ(相場転換疑い)
株比率を落として、T-Bills比率を上げます。例えば「株20% + T-Bills80%」あるいは「株0% + T-Bills100%」にする。ここで重要なのは、“売り”で儲けようとしないことです。初心者ほど下落局面でショートを入れて崩れます。まずは「守り」の切り替えに徹した方が勝率が上がります。
相場転換をどう検知するか:初心者でも運用できる3つのシグナル
相場転換(レジーム変化)を検知するシグナルは無数にありますが、ここでは“実装しやすく、検証しやすい”ものに絞ります。複雑な指標は、結局運用できません。
シグナル1:株指数のトレンド割れ(移動平均)
例としてS&P500(指数やETF/CFD)を想定します。もっとも単純なのは「終値が200日移動平均を下回ったらリスクオフ」です。ただし200日は鈍いので、初心者向けの運用としては、50日と200日の二段階が扱いやすい。
具体例:
- 終値が50日移動平均を下回ったら株比率を60%→30%に減らす(警戒)
- 終値が200日移動平均を下回ったら株比率を30%→0%にする(退避)
- 終値が再び50日移動平均を上回ったら0%→30%に戻す(復帰)
- 終値が200日移動平均を上回ったら30%→60%に戻す(通常)
これなら、暴落の初動で全てを当てに行かず、段階的に守りを固められます。外れても機会損失が限定され、当たったときの損失回避効果が大きい構造です。
シグナル2:株のボラ急上昇(簡易ボラフィルター)
相場転換ではボラティリティが急増します。VIXのような指標を参照できるなら便利ですが、データ接続が面倒な環境も多い。そこで、初心者が扱いやすい代替として「株指数の平均変動率(ATRなど)」を使います。
具体例:
- 指数の14日ATR(平均真の値幅)が、直近1年平均の1.5倍を超えたら株比率を引き下げる
- ATRが平常値に戻るまで“株の買い増し”を禁止する
これだけで、荒れている相場で無駄に往復ビンタを食らう確率が下がります。「損切り貧乏」を減らすための安全装置だと考えてください。
シグナル3:金利ショックの兆候(短期金利・長期金利の変化)
株の大きな調整は、金利ショックや金融環境の急変と同時に起きることが多い。個人投資家がやりがちなミスは「ニュースを見てから動く」ことです。ニュースは既に織り込み済みで、遅れます。そこで、ルールとして使いやすいのは“金利の変化率”です。
ただし注意点があります。あなたの取引環境で2年債利回りや10年債利回りのデータが取れない場合は、金利関連のティッカー(例:米国債利回りのCFD、金利先物、あるいは債券ETFの価格)を代替にします。完全一致は不要で、変化の方向が取れれば十分です。
具体例:
- 10年金利が短期間(例:20営業日)で一定幅以上上昇したら株比率を減らす(引き締めショック警戒)
- 逆に、金利上昇が止まり低下トレンドに入ったら株復帰を早める(金融環境改善)
このシグナルは万能ではありませんが、「株のトレンド割れ」と組み合わせると、下落局面での“居残り”を減らせることがあります。
実践の型:そのまま運用できるルールセット(テンプレ)
ここからは、具体的な運用テンプレを示します。いきなり複雑な最適化はしません。まずは“動く型”を作り、あとから自分の性格に合わせて調整します。
採用する商品(例)
- 株側:S&P500連動ETF、NASDAQ100連動ETF、または株価指数CFD
- T-Bills側:米国短期国債ETF、短期債MMF、あるいは短期国債に近い低ボラ商品
注意:ここでは銘柄名や具体的な商品推奨はしません。あなたの口座で取扱い可能な“同等の役割”を探してください。役割さえ同じなら、実装は可能です。
資金配分(例)
- 通常(リスクオン):株60% / T-Bills40%
- 警戒(中間):株30% / T-Bills70%
- 退避(リスクオフ):株0% / T-Bills100%
これを「毎日」「毎週」のどちらで見直すかが重要です。初心者は毎日チェックすると判断がブレるので、週次(例えば毎週金曜の引け後)の見直しから始めると運用が安定します。
売買ルール(週次判定の例)
- 指数の終値が50日MA以上かつ200日MA以上:通常(株60%)
- 終値が50日MA未満だが200日MA以上:警戒(株30%)
- 終値が200日MA未満:退避(株0%)
- ボラ急上昇(ATRフィルター条件を満たす)なら、上記より1段階“守り側”に寄せる
ポイントは、「シグナルが改善したら即全力復帰」ではなく、段階的に戻すことです。底打ちを当てる必要はありません。最初の反発を少し取り逃しても、次のトレンドで取り返せる設計にします。
具体例:3つの相場でこのルールがどう動くか(思考実験)
ケース1:じわじわ上がる相場(平常)
指数が50日・200日MAの上で推移しているなら、株60%を維持します。T-Bills40%があることで“押し目”で心が折れにくく、ルールを破りにくい。結果として、余計な売買が減り、期待値が上がります。
ケース2:急落の初動(転換)
指数が50日MAを割った時点で株比率を30%へ。さらに200日MAまで割れたら株0%へ。ここで大事なのは、「まだ下がるかもしれない」ではなく「下がってもいいが致命傷を避ける」です。深いドローダウンを避けるほど、回復が早くなります。
ケース3:底打ち後の反発(復帰)
指数が50日MAを回復したら株30%へ戻し、200日MA回復で株60%へ。底から最速で取りにいくならもっと攻めたくなりますが、初心者はここで外してメンタルを崩します。段階復帰に徹した方が、長期の累積利益に繋がります。
「レバレッジ」を混ぜる場合の現実的な考え方
この戦略にもレバレッジは混ぜられますが、やり方を間違えると破綻します。ここでは“破綻しないための制約条件”を先に提示します。
レバレッジは「株側」ではなく「切り替え後」に限定する
平常時に株へレバレッジを掛けると、下落初動で一撃が大きくなり、ルールが機能する前に致命傷になりやすい。初心者向けの現実解は、次のような考え方です。
- 平常時:レバレッジなし(株60%)で淡々と取る
- 退避後:株を0%にしてT-Bills100%に寄せた状態を維持
- 復帰の初動(50日MA回復など)で、株30%を“軽いレバ”で置き換える(例:株15%×2倍)
これなら“最大損失”が構造的に抑えられます。レバレッジは「当てたい局面」ではなく「守りが効いた状態での攻め」にだけ使うのが基本です。
証拠金管理:最大許容ドローダウンから逆算する
「何倍までOKか?」を感覚で決めると終わります。まず、自分が耐えられる最大ドローダウン(例:資産の10%)を決め、その範囲でレバレッジを設計します。指数が1日で何%動き得るか(荒いときは2〜3%も普通)を想定し、連続不利を食らっても強制ロスカットに近づかない余裕を残す。これができないなら、レバレッジは使わない方が良いです。
初心者がやりがちな失敗と、潰し方
失敗1:シグナルが出たのに「今回は違う」と思って無視する
ルール運用で一番多い失敗です。相場の“居心地の良さ”に引っ張られて、リスクオフへの切り替えが遅れます。対策は、週次判定の固定日を作り、その日にだけ機械的に切り替えること。毎日だと自分の感情が入り込む。
失敗2:退避した直後に反発して悔しくなり、即買い戻す
これは典型的な往復ビンタです。退避は「当て」に行く行為ではなく、損失回避です。反発はいつでも起きます。段階復帰のルール(50日→200日の順)を守るだけで、ムダな売買が減ります。
失敗3:ボラが高い局面で細かく売買し、手数料とスリッページで削れる
特に指数CFDや短期売買では、スプレッドやスリッページが無視できません。対策は、見直し頻度を週次に落とし、取引回数を絞ること。勝率を上げるより先に、“負けの質”を改善する方が効きます。
失敗4:T-Bills側を「安全だから」と過信し、全体の目的を忘れる
T-Billsは低ボラですが、金利環境次第で利回りは変わりますし、商品によっては手数料や税制の取り扱いも違います。ここでの目的は「安全資産を買うこと」ではなく、「株の大きな下落局面で生き残ること」です。目的に沿って、株への復帰条件を必ず持つ。
検証の考え方:バックテストで見るべき指標は“勝率”ではない
この種の戦略で重要なのは勝率ではありません。見るべきは次の3つです。
- 最大ドローダウン:回復不能なダメージを避けられているか
- 回復期間:高値回復までの時間が短くなっているか
- 下落局面での相関:株が落ちるときにT-Bills側が機能しているか
勝率は低くても、損失が小さく利益が大きいなら成立します。むしろ、転換点の読みは外れる前提で、外れても小さく済む構造が欲しい。
MQL4での実装例:指数CFDをレジームで切り替えるEA(雛形)
ここではMT4環境を想定し、株指数CFD(例:US500)を売買しつつ、リスクオフ時はポジションを縮小するEA雛形を示します。T-BillsそのものはMT4で取れないことが多いため、EAは「株のエクスポージャー調整」に集中します。現物のT-Bills/短期国債側は別口座や別商品で保有し、EAは株側の比率制御だけを担当する設計が現実的です。
設計ポリシー
- 時間足:日足(D1)を前提に、週次で売買判断(毎週金曜クローズ後に反映)
- シグナル:終値と50MA/200MAでレジーム判定
- 運用:通常ロット / 警戒ロット / 退避ロット(0)を切り替え
//+------------------------------------------------------------------+
//| Regime Hedge EA (template) |
//| Notes: Symbol names depend on your broker. |
//| This EA adjusts ONLY equity-index exposure. |
//+------------------------------------------------------------------+
#property strict
input string TradeSymbol = "US500"; // change to your broker's symbol
input int FastMAPeriod = 50;
input int SlowMAPeriod = 200;
input double LotsRiskOn = 0.60; // conceptual: relative lots
input double LotsCaution = 0.30;
input double LotsRiskOff = 0.00;
input int Slippage = 5;
input int Magic = 501213;
datetime lastBarTime = 0;
bool IsNewDailyBar()
{
datetime t = iTime(TradeSymbol, PERIOD_D1, 0);
if(t != lastBarTime)
{
lastBarTime = t;
return(true);
}
return(false);
}
int CurrentRegime()
{
double close0 = iClose(TradeSymbol, PERIOD_D1, 0);
double maFast = iMA(TradeSymbol, PERIOD_D1, FastMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
double maSlow = iMA(TradeSymbol, PERIOD_D1, SlowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
// 2 = RiskOn, 1 = Caution, 0 = RiskOff
if(close0 >= maSlow && close0 >= maFast) return(2);
if(close0 >= maSlow && close0 < maFast) return(1);
return(0);
}
double TargetLotsByRegime(int regime)
{
if(regime == 2) return(LotsRiskOn);
if(regime == 1) return(LotsCaution);
return(LotsRiskOff);
}
double CurrentNetLots()
{
double lots = 0.0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderMagicNumber()==Magic && OrderSymbol()==TradeSymbol)
{
if(OrderType()==OP_BUY) lots += OrderLots();
if(OrderType()==OP_SELL) lots -= OrderLots();
}
}
}
return(lots);
}
void CloseAllPositions()
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderMagicNumber()==Magic && OrderSymbol()==TradeSymbol)
{
int type = OrderType();
double price = (type==OP_BUY) ? Bid : Ask;
OrderClose(OrderTicket(), OrderLots(), price, Slippage, clrNONE);
}
}
}
}
void EnsureTargetExposure(double targetLots)
{
// This template uses BUY-only exposure for simplicity.
// If targetLots is 0: close all.
// If targetLots > 0: hold exactly that lots long.
double net = CurrentNetLots();
if(targetLots == 0.0)
{
if(MathAbs(net) > 0.00001) CloseAllPositions();
return;
}
// If we have any short, close first (template simplification)
if(net < 0) CloseAllPositions();
net = CurrentNetLots();
double diff = targetLots - net;
if(diff > 0.00001)
{
// add long
OrderSend(TradeSymbol, OP_BUY, diff, Ask, Slippage, 0, 0, "RegimeBuy", Magic, 0, clrNONE);
}
else if(diff < -0.00001)
{
// reduce long (close partial)
double reduce = -diff;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderMagicNumber()==Magic && OrderSymbol()==TradeSymbol && OrderType()==OP_BUY)
{
double closelots = MathMin(reduce, OrderLots());
OrderClose(OrderTicket(), closelots, Bid, Slippage, clrNONE);
reduce -= closelots;
if(reduce <= 0.00001) break;
}
}
}
}
}
void OnTick()
{
// act only on a new daily bar; for weekly, you can also add weekday filters
if(!IsNewDailyBar()) return;
int regime = CurrentRegime();
double target = TargetLotsByRegime(regime);
EnsureTargetExposure(target);
}
//+------------------------------------------------------------------+
雛形なので、実運用では次を必ず調整してください。
- LotsRiskOn等は“相対値”です。あなたの口座残高・証拠金・指数CFDの契約仕様に合わせて、実際のロットへ変換してください。
- 週次で判定したい場合は、OnTickで曜日フィルター(例:金曜の新バーだけ反映)を追加してください。
- 指数CFDはスワップやロール、配当調整が絡むことがあります。ブローカー仕様を確認してください。
実運用のチェックリスト:毎週やることはこれだけ
1) 判定日を固定する
例:毎週金曜の引け後。週次判定にすると、日々のノイズで振り回されにくい。
2) レジーム判定(50MA/200MA)
終値がどこにあるかを確認し、通常/警戒/退避を決める。
3) ボラフィルター(任意)
荒れているなら1段階守り側へ寄せる。これは“保険”です。
4) リバランス実行
株側の比率を調整し、T-Bills側の比率を合わせる。ここで初めて「T-Billsが戦略の中核」になります。株を減らした分が、T-Billsに乗り、ポートフォリオのブレが小さくなる。
まとめ:この戦略は「当てる」ではなく「生き残る」ための設計
短期国債(T-Bills)×株指数の相場転換ヘッジ戦略は、未来予測で勝とうとするものではありません。下落局面での損失を抑え、回復に必要な時間を短くし、結果として“続けられる運用”にするための枠組みです。
初心者が勝ちやすいのは、派手な手法ではなく、破綻しないルールと、淡々と続けられる仕組みです。まずは「週次で、50MA/200MAで切り替える」だけから始めてください。そこに、あなたの取引環境に合わせたボラフィルターや金利シグナルを足していけば、十分に戦える形になります。


コメント