トレード戦略の有効性の検証する際に使う指標をまとめておく

前回までのあらすじ

前回の記事

【Python】トレード戦略をバックテストして有効性を検証する

トレード戦略は利益だけがすべてではない

トレード戦略はもちろん利益が出ているかどうかがまず大きな判断指標にはなりますが、他にも考慮するべき点があります。

それはトレードの安定性です。バックテスト期間では大きく利益が出ていたとしても勝率が低かったり、利益の上下が大きい場合は本番の環境で運用した場合、バックテストのようなパフォーマンスを発揮しないことが多いです。

そういったことも鑑みるためにトレード戦略のバックテストにはリターンだけではなく、他の判断指標も存在しています。今日はリターン以外で有名なトレード戦略の判断指標とPythonでの計算方法についてみていきたいと思います。

勝率

勝率=勝ちトレードの回数÷全トレードの数

もちろん勝率が高くてもコツコツドカンだと儲からないので、絶対的な判断基準ではありませんが、安定性は測れるかと思います。

#勝率を計算する関数
def win_lose(returns):
    return_diff=returns.diff()
    data=return_diff.fillna(method='ffill')
    win=[]
    lose=[]
    for i in data:
        if i>0:
            win.append(i)
        if i<0:
            lose.append(i)
    score=len(win)/(len(win)+len(lose))*100
    return score

#勝率を計算する
win_lose(returns)

ドローダウン

ドローダウンとは累計利益の最大値からどれだけ落ちたかを測る指標です。まあ利益が出ていれば問題ないのですが、ドローダウンが大きいと本番で実装したときに大きな損失が発生する確率が高く精神にクルので、一応確認しておきたいです。

#最大ドローダウンの計算
def drowdown(returns):
    dro=[]
    for i in range(2026):
        max=returns[:i].max()
        drop=max-returns[i]
        dro.append(drop)
        dhi=dro[2:]
    sdi=np.array(dhi)
    s=sdi.max()
    score=(1-(max-s)/max)*100
    return score
drowdown(returns)

ペイオフレシオ

勝ちトレードの平均利益額÷負けトレードの平均損失額

ペイオフレシオが1.0より大きくなるほど、負けるときは小さく勝つときは大きいスタイル(損小利大)となり効率の良いトレード戦略ということになります。

#ペイオフレシオの計算
def payoff_ratio(returns):
    return_diff=returns.diff()
    paydata=return_diff.fillna(method='ffill')
    win=[]
    lose=[]
    for i in paydata:
        if i>0:
            win.append(i)
        if i<0:
            lose.append(i)
    lose_mean=np.array(lose).mean()
    win_mean=np.array(win).mean()
    score=win_mean/lose_mean*-1
    return score
payoff_ratio(returns)

他にも「ペイオフレシオ」と「勝率」を算出して、下図の「バルサラの破産確率」と照らし合わせてみるのもトレードの有効性の検証方法の1つです。

バルサラの破産確率とは、ナウザー・バルサラという数学者が考案したもので、資金が底をつく破産確率を表しています。自分のトレード戦略のバックテストをsてみて破産確率が100%でないかを確認するのがまず大事ですね。↓

プロフィットファクター

プロフィットファクターの計算式:純利益÷純損失

#プロフィットファクターの計算する関数
def profit_facter(returns):
    return_diff=returns.diff()
    paydata=return_diff.fillna(method='ffill')
    win=[]
    lose=[]
    for i in paydata:
        if i>0:
            win.append(i)
        if i<0:
            lose.append(i)
    score=sum(win)/sum(lose)*-1
    return score

profit_facter(returns)

まとめ

以上が僕の知る限りのリターン以外のトレード戦略の評価基準です。まあトレード戦略は儲かるか儲からないかがすべてですが、その戦略の特徴を知ることで有利な場面不利な場面を分析することもできますし、より損失を少なく利益を最大化することにつながると思うので知っておいて損はないでしょう。

システムトレードでなくとも勝率、利益率、年間のトレード回数、最大ドローダウン数値など、自分のトレードをしっかりと数値化して意識しておかないと破綻する確率が高くなります。

多くの人々がトレードで成功しない原因は殆どがコレなわけですが、それを管理できる人間というのは、感情やバイアスをすべて捨てたということを意味するので、もはや人間ではないと言えます。

なので個人的にはコンピューターにシステムトレードさせるというのが、時間的な効率や人間らしい生活を送るためにも一番いいんじゃないかなと思います。

Pythonで自動売買Botを作る①~システムトレードの流れを把握する

【Scikit-learn】ビットコインの価格を機械学習で予測してみる

【Python】ビットコイン価格をディープラーニングで予測する方法

ビットコインと主要なアルトコインの価格には相関関係があるのかを検証する

プログラミングの独学はとても難しい


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上でプログラミングはもはや出来て当たり前、出来なれば論外というエクセルレベルの必須スキルになりつつあります。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で



「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」

「エンジニアとして若いうちから高収入を得たい」



という強い気持ちから一念発起して「侍エンジニアのwebサービスコース」に申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解でき、今ではエンジニアとしてそこそこの暮らしができるようになりました。





侍エンジニアでは、とりあえずプログラミングやインターネットの基本を知っておきたい人から、HTML・cssなどでWebサイトやWebアプリを作ってみたい人やPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズに応えた様々なコースが用意されています。



IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習・ディープラーニングまで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけるのがエンジニアへの第一歩になります。ちなみに今侍エンジニアの無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。


自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする

   侍エンジニア塾       
侍エンジニアの無料体験レッスンを予約する -->