2020-06-08

【TradingView】仮想通貨取引ストラテジを作る 3日目「標準化」【Pine】

TVのPineスクリプトを使って仮想通貨トレードストラテジを作る。本日でトータル三日目

Article Image

本日の目標:異なる数値を一つのグラフで表現

BTCの価格は1万ドル付近。対してPremiumはプラスマイナス0.001あたりの数値を取っており同じグラフ上にプロットすると値が違いすぎて全く比較にならない。

統計学ではこのように異なるデータ同士を比較するために「標準化」が行われる。

※「標準化」はIT用語でも規格を定める意味で使われるワードではあるが、統計学のそれとは違うものである。

今回は価格変動とBITMEXのPremium(Funding Rateの計算式の元となる値)に関係がないかを調べていくために両者を「標準化」して見た目でも分かりやすく表現する。

標準化の式

確率変数をX, 平均をμ, 標準偏差σとするときのZ値(標準化得点)は

数式

よくわからんがまぁ動いてるからヨシ!

σは分散の正の平方根(ルート)。そもそも分散がよくわからん場合は...まぁヨシ!高校でたぶん皆一度は習っている。

特に難しい式ではないので気になる人は別サイトに譲りたい。

とにかくこれでヨシなのだ。

標準偏差のPine関数「stdev

Pineには標準偏差を取る関数が用意されているのでこれだけは覚えておきたい。

例えば

stdev(close,200)

こうすると、200日分で計算された終値の標準偏差が出力される。

また、標準偏差は皆がよく知っているボリンジャーバンドで使われているので知らなかった場合は頭の隅に入れておきたい。

BTC価格を標準化してみよう

smaが移動平均線、つまり平均を意味するので

close_sma = sma(close, n)
close_Zscore = ( close - close_sma ) / stdev(close,n) //標準化

こうなる。

いろいろ標準化して並べてみよう

次を標準化して並べてみた。

  • BTCの価格
  • XBTUSDのPremium(BITMEX)
  • ETHUSDのPremium(BITMEX)
  • Volume
  • さらにそれらの平均

コードは

plot(0,color=color.white) //単に0の線をわかりやすくしているだけ

close_sma = sma(close, n)
close_Zscore = ( close - close_sma ) / stdev(close,n) //標準化

xbt_pi_sma = sma(xbt_pi,n)
xbt_pi_Zscore = ( xbt_pi - xbt_pi_sma ) / stdev(xbt_pi,n) //標準化

eth_pi_sma = sma(eth_pi,n)
eth_pi_Zscore = ( eth_pi - eth_pi_sma ) / stdev(eth_pi,n) //標準化

volume_sma = sma(volume, n)
volume_Zscore = ( volume - volume_sma ) / stdev(volume,n) //標準化

average = (xbt_pi_Zscore + eth_pi_Zscore + close_Zscore) / 3

plot(close_Zscore,color=color.orange)
plot(xbt_pi_Zscore,color=color.red)
plot(eth_pi_Zscore,color=color.blue)
plot(volume_Zscore,color=color.gray)
plot(average,color=color.white)

ちなみにBTC終値の価格は全く関係ないByBitを使用している。

image-20200608140051282

グラフをみてもなんだか線が多すぎてよくわからないかもしれないが、もともと全く違う値を持ったグラフが標準化されおおよそ同じ幅に収まっている事がわかる。

これを元にストラテジを作る

単純に価格のZ値を見れば0を下回れば下降トレンド。0を上回れば上昇トレンドと言って良さそうだ。

CloseのZ値だけを見てトレードするとシンプルにトレンドフォローになる。

売買条件

longCondition = close_Zscore > 0
shortCondition = close_Zscore < 0

バックテスト:ByBit:BTCUSD 3時間足

image-20200608140640275

足は適当に見て一番PFが高い物を選択。

確かに勝てているが、これは余り面白みがない。

シャープレシオも低い(0.3強)

本日はここまで

あれ、ここまで?という声が聞こえてきそうではあるが

今回は「標準化」して違うグラフを同じ土俵に持ってくることが目的なのでストラテジはおまけだと考えてもらいたい。

次回はボリュームのZ値を使ってもう少しストラテジに変化をもたせてみたい。



この記事をシェア


謎の技術研究部 (謎技研)