季節性逆転 期間間取引戦略

作者: リン・ハーンチャオチャン開催日:2024年01月25日 (火) 14:07:35
タグ:

img

概要

この戦略は季節効果に基づく逆転取引戦略です. 季節効果による価格逆転を把握するために,特定のエントリー月にポジションを設定し,終了月にポジションを閉じます.

戦略原則

利点分析

さらに,この戦略は非常にシンプルで,理解し実行しやすいので,定量取引の初心者にも適しています.これは2つのパラメータのみに依存し,戦略最適化の困難を大幅に軽減します.

リスク分析

リスク を 軽減 する ため に は,エントリー と アクジット の タイミング を 最適 に 選べる こと,市場 の 状況 を 判断 する ため に より 多く の 分析 を 組み合わせ,リスク を 制御 する ため に ストップ を 設定 する こと が 考え られ ます.もちろん,どの 取引 戦略 も 市場 の リスク を 完全に 避け られ ませ ん.それゆえ,トレーダー は 慎重 に 扱わ れる 必要 が あり ます.

オプティマイゼーションの方向性

この戦略の最適化にはまだ多くの余地がある.第一に,合理的なストップ損失範囲を設定するためにストップ損失ロジックを導入することができる.第二に,最適なパラメータを見つけるために,より多くの異なるエントリーと出口の組み合わせをテストすることができる.また,より多くの要因を考慮して市場の状況を判断し,不利な環境での取引を避けることができます.最後に,指数的な重量アルゴリズムを導入してポジションサイズを調整し,利益を得るときのポジションサイズを増やし,負けたときのポジションサイズを減らす.

上記の最適化によって,戦略の安定性がさらに向上し,戦略の追跡能力が向上することができる.もちろん,過度に最適化しないために,あらゆる最適化は厳格にバックテストする必要がある.

概要

概して,この季節性逆転間時間間の取引戦略は非常に実用的です.適切なエントリーと出口月を選択することで,利益を得るために季節的な効果によって引き起こされる価格逆転を効果的に把握できます.同時に,この戦略は非常にシンプルで理解し,実行しやすく,定量取引の初心者にも適しています.もちろん,トレーダーは特定の市場リスクに意識し,市場の状況の変化に合わせて戦略を継続的に最適化する必要があります.


/*backtest
start: 2023-01-24 00:00:00
end: 2024-01-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © EmpiricalFX

//@version=4
strategy("Seasonality Benchmark ","Season",overlay=false,default_qty_type=strategy.percent_of_equity,
     default_qty_value=25,initial_capital=100000,currency="USD",
     commission_type=strategy.commission.percent,commission_value=0.5)
input_entry_direction = input("Long","Position Type",options=["Long","Short"])
input_entry_month = input("Oct","Entry Month",options=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"])
input_exit_month = input("Jan","Entry Month",options=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"])

//Convert three character month string to integer
month_str_to_int(m)=>
    ret = m == "Jan" ? 1 :
          m == "Feb" ? 2 :
          m == "Mar" ? 3 :
          m == "Apr" ? 4 :
          m == "May" ? 5 :
          m == "Jun" ? 6 :
          m == "Jul" ? 7 :
          m == "Aug" ? 8 :
          m == "Sep" ? 9 :
          m == "Oct" ? 10 :
          m == "Nov" ? 11 :
          m == "Dec" ? 12 : -1
          
is_long = input_entry_direction == "Long" ? true : false
entry = month_str_to_int(input_entry_month)
exit = month_str_to_int(input_exit_month)
var balance = strategy.equity

//Entering a position is conditional on:
    //1. No currently active trades
    //2. Input entry month matches current month
if(strategy.opentrades == 0 and entry == month)
    strategy.entry("Swing",is_long)

//Exiting a position is conditional on:
    //1. Must have open trade
    //2. Input exit month matches current month
if(strategy.opentrades > 0 and exit == month)
    strategy.close("Swing")
    
//Update the balance every time a trade is exited
if(change(strategy.closedtrades)>0)
    balance := strategy.equity
    
plot(strategy.equity,"Equity",color.orange)
plot(balance,"Balance",color.red)

    

もっと