フィッシャー・トランスフォーマー バックテスト戦略

作者: リン・ハーンチャオチャン開催日:2023年4月12日 13:43:05
タグ:

img

概要

フィッシャー変換バックテスト戦略は,価格の逆転点を特定し,それに応じて取引信号を生成するために価格のフィッシャー変換を計算する.この戦略は,価格分布のガウス以外の特徴を削除するためにフィッシャー変換式を使用して価格を処理し,ほぼガウス分布を持つ標準化指標を生み出します.この戦略は,フィッシャー変換曲線の折り点に基づいて価格逆転を決定し,長短信号を生成します.

戦略原則

この戦略の核心は,フィッシャー変換式を使用して価格を処理し,天然価格分布の非ガウス特性を排除することです.フィッシャー変換式は:

y=0.5 * ln((1+x) /(1-x))

ここで x は処理された価格で,最も最近の長度期間の最高値と最低値を見つけ,次に次のように正規化することで得られます.

x = (価格 - 最低) / (最大 - 最低) - 0.5

この方法で処理された価格はガウス分布を近似する. x はフィッシャー変換曲線を得るためフィッシャー変換式に置き換えられる.フィッシャー変換曲線の屈曲点は価格信号の逆転である.

フィッシャー変換曲線が正から負に変わると,売り信号が生成され,負から正に変わると,買い信号が生成されます.

利点分析

  1. フィッシャー変換は,価格から非ガウス特性を除去し,よりよく振る舞い,標準化された価格と誤った信号が少なくなります

  2. 価格の逆転点を把握し,上下を追わない

  3. 調整逆感度のための柔軟なパラメータ調整

  4. 調整可能な方向性,様々な市場環境に適応

  5. シンプルな論理 分かりやすく実行できます

リスク分析

  1. 誤ったパラメータ設定は,ターンを見逃すか,誤った信号を生成する可能性があります.

  2. ライブ取引のスライプは,完璧な信号実行を妨げる可能性があります.

  3. 価格が変動しているとき ターンを特定するのは難しい

  4. リアルタイムの取引で実施し難し,逆転を確認する必要がある

解決策:

  1. 長さを調整してパラメータを最適化

  2. 埋め込みを保証するために,適切な入口基準を緩和

  3. 他の指標を組み合わせた偽信号をフィルターする

  4. 規則を厳格に遵守し リスクを管理する

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

  1. 最適な組み合わせを見つけるために長さパラメータを最適化

  2. 偽信号を避けるためにフィルターを追加します.例えば移動平均値,変動指標など.

  3. ストップ・ロスを取引ごとにコントロール・ロストに組み込む

  4. 継続する傾向を追跡するための再入国メカニズムを追加

結論

フィッシャー変換バックテスト戦略は,ガウス以外の価格特性を除去することによって価格逆転点を特定する.これは容易に実装できる平均逆転戦略である.その利点はターン捕捉のための柔軟なパラメータにあるが,主な弱点は,厳格なエントリールールが必要とのライブ実装の困難である.この戦略を実践的な適用性のために最適化するためにさまざまな方法を使用することができる.


/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version = 2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v2.0 22/12/2016
// 	Market prices do not have a Gaussian probability density function
// 	as many traders think. Their probability curve is not bell-shaped.
// 	But trader can create a nearly Gaussian PDF for prices by normalizing
// 	them or creating a normalized indicator such as the relative strength
// 	index and applying the Fisher transform. Such a transformed output 
// 	creates the peak swings as relatively rare events.
// 	Fisher transform formula is: y = 0.5 * ln ((1+x)/(1-x))
// 	The sharp turning points of these peak swings clearly and unambiguously
// 	identify price reversals in a timely manner. 
//
//  For signal used zero. 
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Fisher Transform Indicator by Ehlers Backtest", shorttitle="Fisher Transform Indicator by Ehlers")
Length = input(10, minval=1)
reverse = input(false, title="Trade reverse")
hline(0, color=blue)
xHL2 = hl2
xMaxH = highest(xHL2, Length)
xMinL = lowest(xHL2,Length)
nValue1 = 0.33 * 2 * ((xHL2 - xMinL) / (xMaxH - xMinL) - 0.5) + 0.67 * nz(nValue1[1])
nValue2 =   iff(nValue1 > .99,  .999,
	         iff(nValue1 < -.99, -.999, nValue1))
nFish = 0.5 * log((1 + nValue2) / (1 - nValue2)) + 0.5 * nz(nFish[1])
pos = iff(nFish > 0, 1,
	   iff(nFish < 0, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nFish, color=green, title="Fisher")
plot(nz(nFish[1]), color=red, title="Trigger")

もっと