RSIに基づく長期定量戦略
概要
本戦略は「Relative Strength Index長期定量戦略」、略してRSI長期戦略と呼びます。この戦略は、一定期間内の価格上昇幅と下落幅の移動平均線を計算し、RSIテクニカル指標を構築し、買われすぎ・売られすぎのラインを設定することで、相場のタイミングを判断します。RSIが設定した売られすぎラインを下回った場合、段階的にポジションを構築し、長期保有に移行します。
戦略の原理
本戦略の核となる指標は相対力指数(RSI)です。RSI指標は、一定期間の平均上昇幅と平均下落幅を比較することで、現在の証券価格が過大評価されているか過小評価されているかを判断します。その計算式は以下の通りです。
RSI = 100 - 100 / (1 + UP / DOWN)
ここで、UPは直近n日間の終値上昇幅の平均、DOWNは直近n日間の終値下落幅の平均です。指標は0~100の範囲で変動し、70を超えると買われすぎ、30を下回ると売られすぎと判断されます。
本戦略はRSIパラメータLength=14を設定し、14日間の終値に基づいてRSIを計算します。また、売られすぎラインRsvalue=40を設定し、RSIが40を下回った場合に売られすぎと判定します。当日のRSIが40未満の場合、買いの窓を開き、段階的にポジションを構築する戦略を採り、売られすぎのゾーンで徐々に買いを入れ、最終決済時間を設定し、決済時間を過ぎたら全て売却します。
優位性分析
本戦略の最大の強みは、RSI指標によって市場のタイミングを判断し、低価格を捉えることができる点です。RSIが40未満の場合は売られすぎ状態であり、前期の下落が大きすぎるため反発の可能性があることを示します。この時に段階的にポジションを構築することで、良好なコストを獲得できます。一方、RSIが70を超えると買われすぎ状態となり、相場が天井に達する可能性があるため、段階的にポジションを減らすことを検討できます。
また、本戦略は段階的なポジション構築方法を採用しているため、一回のエントリーによるリスクを軽減できます。建て玉の窓をポジションの高値とし、最終決済時間をポジションの安値とすることで、長期投資を実現しています。
リスク分析
本戦略は主にRSIというテクニカル指標に依存しており、一定の遅延性があります。特に相場が急変した場合、RSIが反応するのに間に合わない可能性があります。そのような場合にRSI指標に盲目的に従ってポジションを構築すると、利益が限定的になるか、損失が拡大する恐れがあります。
さらに、本戦略は確率的な取引シグナルを提示します。RSIが40未満であっても、100%反発の機会があるとは限りません。ポジション構築後に価格がさらに新安値を付ける可能性もあります。そのため、損切り戦略を設定し、最大損失を管理する必要があります。
最適化の方向性
本戦略は以下の点で最適化が可能です。
-
複数の銘柄を組み合わせ、ポートフォリオ取引を行う。単一銘柄は特定のイベントの影響を受けやすいが、ポートフォリオは個別銘柄のリスクを分散できる。
-
損切り戦略を追加し、リスクをさらに管理する。例えば、トレーリングストップを導入し、価格がさらに下落した場合に損切りしてエグジットする。
-
ポジション構築戦略を最適化する。例えば、売られすぎゾーンで時間加重平均価格を用いて段階的にポジションを構築し、一括でフルポジションを持たないようにする。
-
他の指標(出来高指標、移動平均線など)と組み合わせてシグナルをフィルタリングし、RSIに盲目的に追随するのを避ける。
まとめ
本戦略はRSI指標を構築して買われすぎ・売られすぎゾーンを判断し、売られすぎゾーンで段階的にロングポジションを構築し、最終決済時間を設定することで長期保有を実現します。短期取引と比較して、本戦略は長期定量投資ツールとして適しています。その強みは低価格の捕捉とコスト管理にあり、リスクは指標の遅延性とシグナルの誤誘導にあります。今後はポートフォリオ最適化、損切り戦略、ポジション構築の最適化など、さまざまな方法で改善が可能です。
/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Relative Strength Index", shorttitle="RSI")
len = input(14, minval=1, title="Length")
src = input(close, "Source", type = input.source)- 1

