順張りと逆張りの是非 (2017/06/23)

順張りは正しいが、逆張りは間違っている、といった主張をよく見かける。私はこのような主張に同意しない。そこで、順張り、逆張りについての私なりの考えをまとめてみる。

理屈っぽいので、興味のない人はお帰り下さい。

順張りと逆張り

私は順張り、逆張りを以下のように解釈している。

  • 順張りとは価格が上昇すれば継続して上昇すると予測して買い、下落すれば継続して下落すると予測して売ることである。
  • 逆張りとは価格が下落すれば反転して上昇すると予測して買い、上昇すれば反転して下落すると予測して売ることである。

逆張りに対する批判と反論

順張り派は反転の保証がないと批判する。例えば、価格が下落したからといって、そこで買って反転しなかったら痛い目に遭う、というのである。

だが、保証がないのは継続の場合も同じである。例えば、価格が上昇したからといって、そこで買って継続しなかったら痛い目に遭うだろう

逆張りは自己矛盾であるという批判もある。例えば、価格が下落したので逆張りで買ったものの、さらに下落したので損切りをして売ったとする。この場合、価格は下落したのに売ったことになり、これは順張りになるから自己矛盾だ、というのである。

だが、自己矛盾は順張りにもある。例えば、価格が上昇したので順張りで買ったところ、さらに上昇したので利食いをして売ったとする。この場合、価格は上昇したのに売ったことになり、これは逆張りになるから、これも自己矛盾である。

相場には継続も反転もある

現実の相場では永遠に上昇したり、下落したりすることはない。上昇してもいずれは下落に転じ、下落してもいずれは上昇に転じるものである。

現実の相場では永遠に反転を繰り返すということはない。上昇した後もしばらく上昇を続けたり、下落した後もしばらく下落を続けることがあるものである。

継続か反転かの判断が重要

重要なのは継続か反転かの判断によって順張りと逆張りを使い分けることである。継続しかないと考えたら順張りで利食いはできないし、逆張りではポジションを取ることすらできない。また、反転しかないと考えたら逆張りで損切りはできないし、順張りではポジションを取ることすらできなくなる。

現実の相場には継続も反転もある。したがって、順張りもあれば、逆張りもあり、利食いもあれば、損切りもなければならない。

順張りの利食い

順張りで利食いするのは継続から反転に判断が変わった場合だ。順張りでポジションを取ったのは価格の方向が継続すると判断したからである。その後、利食いしたのは、もはや継続しない、反転すると判断したからである。

逆張りの損切り

逆張りで損切りするのは反転から継続に判断が変わった場合だ。逆張りでポジションを取ったのは価格の方向が反転すると判断したからである。その後、損切りしたのは、もはや反転しない、継続すると判断したからである。

利食い・損切りと損益の大きさ

利益がある程度に達したら利食いし、損失がある程度に達したら損切りするという手法はよく行われていると思う。だが、私はこのような手法には疑問を感じている。

利益が出ていて、しかも相場が継続すると考えるなら利食いすべきではない。損失が出ていて、しかも相場が反転すると考えるなら損切りすべきではない。ポジションの損益にはとらわれず、現時点でどのように行動すれば利益を最大化できるかということが重要ではないかと私は考えている。

願望・恐怖と判断を履き違えない

ただし、以上の議論はあくまでも判断は概ね正しく、決して願望や恐怖と履き違えたりしないというのが前提である。

利益が出ている→利益が増えてほしい→相場が継続してほしい→継続するだろう→利食わない、というのはよくない。損失が出ている→損失が減ってほしい→相場が反転してほしい→反転するだろう→損切らない、というのもよくないのである。

また、利益が出ている→利益が縮小しそうで怖い→相場が反転する気がする→反転するだろう→利食う、というのはよくない。損失が出ている→損失が拡大しそうで怖い→相場が継続する気がする→継続するだろう→損切る、というのもよくないのである。

願望や恐怖といった感情にとらわれては正しく判断することはできなくなる。もちろん、冷静に判断したとしても、それが正しいという保証はないし、難しいことだ。だが、感情にとらわれてはなおさら正しい判断から遠ざかるだろう。

勝てない戦略の活用 (2017/05/19)

勝てない戦略でも他の戦略と組み合わせると役に立つ場合がある。複数の戦略を組み合わせる場合、勝てる戦略同士を組み合わせなければならないと思い込んでいる人もいるだろう。だが、かならずしもそうでないことを説明する。

期待利益、リスク、シャープレシオ

本題に入る前に、期待利益、リスク、シャープレシオについて簡単に説明しておく。

ここに1年当たり100トレード、1トレード当たりの期待利益が0.1%、リスクが1.0%の戦略Aがあるとする。リスクフリーレートを考慮せずにシャープレシオを求めると、

\[ 戦略Aの1年当たりの期待利益 = 0.1 \times 100 = 10.0 \] \[ 戦略Aの1年当たりのリスク = 1.0 \times \sqrt{100} = 10.0 \] \[ 戦略Aの1年当たりのシャープレシオ = 10.0 \div 10.0 = 1.0 \]

となる。

一方、1年当たり100トレード、1トレード当たりの期待利益が0.2%、リスクが4.0%の戦略Bがあるとする。同様に考えると、

\[ 戦略Bの1年当たりの期待利益 = 0.2 \times 100 = 20.0 \] \[ 戦略Bの1年当たりのリスク = 4.0 \times \sqrt{100} = 40.0 \] \[ 戦略Bの1年当たりのシャープレシオ = 20.0 \div 40.0 = 0.5 \]

となる。

戦略Bの期待利益は戦略Aの2倍である。では戦略Bのほうが優れているかといえばそういうわけではない。1年後の予想利益はリスクも考慮すると、

\[ 戦略Aの1年後の予想利益 = 10.0 \pm 10.0 \] \[ 戦略Bの1年後の予想利益 = 20.0 \pm 40.0 \]

となる。

都合よく考えると、利益は最大で戦略Aは20%、戦略Bは60%の利益だから戦略Bのほうが良さそうに見える。だが、逆に都合悪く考えると、戦略Aは0%、戦略Bは-20%となり、戦略Aは単に利益が出ないだけだが、戦略Bは-20%の損失である。

都合よく考えるのも都合悪く考えるのも正しくない。リスクを等しくして比較する必要がある。

もし戦略Aで戦略Bと同じ4.0%のリスクを覚悟できるなら、投資額を4倍にすればいい。すると、期待利益も4倍になり、

\[ 戦略Aの1年当たりの期待利益 = 0.4 \times 100 = 40.0 \] \[ 戦略Aの1年当たりのリスク = 4.0 \times \sqrt{100} = 40.0 \] \[ 戦略Aの1年後の予想利益 = 40.0 \pm 40.0 \]

となる。つまり、都合よく考えれば80%の利益、都合悪く考えても0%の利益で、いずれの場合も戦略Aは戦略Bより優れている。

勝てない戦略は役に立たないか

では本題に入る。

ここに勝つ場合は+1、負ける場合は-1で一定で、1年当たり12回勝ち、8回負けるという戦略Cがあるとする。Pythonで計算してみると、

import numpy as np

c = np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1,
              -1])
mean_c = np.mean(c)
print('mean_c = ', mean_c)
std_c = np.std(c)
print('std_c = ', std_c)
sharpe_c = mean_c / std_c * np.sqrt(20)
print('sharpe_c = ', sharpe_c)


mean_c =  0.2
std_c =  0.979795897113
sharpe_c =  0.912870929175

で、期待利益は0.2、リスクは0.98、シャープレシオは0.91となる。

一方、勝つ場合は+0.5、負ける場合は-0.5で一定で、戦略Cが勝てば必ず負け、負ければ必ず勝つという戦略Dがあるとする。計算すると

d = np.array([-0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5,
            -0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5])
mean_d = np.mean(d)
print('mean_d = ', mean_d)
std_d = np.std(d)
print('std_d = ', std_d)
sharpe_d = mean_d / std_d * np.sqrt(20)
print('sharpe_d = ', sharpe_d)


mean_d =  -0.1
std_d =  0.489897948557
sharpe_d =  -0.912870929175

で、期待利益は-0.1、リスクは0.49、シャープレシオは-0.91となる。

戦略Cと戦略Dの相関係数を求めると、

cor_cd = np.corrcoef(c, d)[0][1]
print('cor_cd = ', cor_cd)


cor_cd =  -1.0

で、-1.0となる。勝敗が正反対なのであるから当然である。

ここで戦略Cと戦略Dを合わせた戦略Eを考えてみる。計算すると、

e = c + d
mean_e = np.mean(e)
print('mean_e = ', mean_e)
std_e = np.std(e)
print('std_e = ', std_e)
sharpe_e = mean_e / std_e * np.sqrt(20)
print('sharpe_e = ', sharpe_e)


mean_e =  0.1
std_e =  0.489897948557
sharpe_e =  0.912870929175

で、期待利益は0.1、リスクは0.49、シャープレシオは0.91となる。戦略Cと比べると、期待利益は半減したが、リスクも半減したのでシャープレシオは変わらない。

したがって、戦略Eはシャープレシオにおいて戦略Cと同等である。戦略Eが投資額を倍にして戦略Cと同じリスクを負うなら、期待利益も同じになる。資金の使い方として非効率である点はここでは無視する。

ところで、戦略Dの負けを1つだけ勝ちだったことにしてみる。再計算すると、

d[0] = 0.5
mean_d = np.mean(d)
print('mean_d = ', mean_d)
std_d = np.std(d)
print('std_d = ', std_d)
sharpe_d = mean_d / std_d * np.sqrt(20)
print('sharpe_d = ', sharpe_d)


mean_d =  -0.05
std_d =  0.497493718553
sharpe_d =  -0.449466574975

で、期待利益は-0.05、リスクは0.49、シャープレシオは-0.45となる。元の戦略と比べると、期待利益は増加したが、リスクはそのままなので、シャープレシオも増加している。

戦略Cと新しい戦略Dの相関係数を求めると、

cor_cd = np.corrcoef(c, d)[0][1]
print('cor_cd = ', cor_cd)


cor_cd =  -0.902670933848

で、-0.90となる。勝敗が完全には反対でないので、これも当然である。

そして、戦略Cにこの新しい戦略Dを合わせて新しい戦略Eを考えてみる。再計算すると、

e = c + d
mean_e = np.mean(e)
print('mean_e = ', mean_e)
std_e = np.std(e)
print('std_e = ', std_e)
sharpe_e = mean_e / std_e * np.sqrt(20)
print('sharpe_e = ', sharpe_e)


mean_e =  0.15
std_e =  0.572276157113
sharpe_e =  1.17219699775

で、期待利益は0.15、リスクは0.57、シャープレシオは1.17となる。戦略Cと比べると、期待利益は減少しているが、リスクはそれ以上に減少しているので、シャープレシオは大きくなっている。

新しい戦略Dの期待利益は-0.05であり、マイナスである。にもかかわらず、戦略Cのパフォーマンスを改善していることが分かる。つまり、勝てない戦略でも役に立つことがあるのである。

理屈はそうだが...

長々と説明したが、理屈はそうでも、いざ実行するとなると心理的にかなり抵抗がある。かく言う私も勝てない戦略を活用してみたいとは思うが(在庫はたくさんあるので)、実際にはやっていない(笑)。

トレード戦略の種類

基本的なトレード戦略の種類について述べる。下のSlideShareによると、5つの基本的なクオンツ戦略があるという。

http://www.slideshare.net/JessStauth/d-30965323(p4)

これによると、戦略は

  1. 平均回帰戦略:上がるものは下がる。

  2. モメンタム戦略:トレンドは友である。

  3. バリュー戦略:安く買って高く売る。

  4. センチメント戦略:噂で買って事実で売る。

  5. 季節性戦略:5月に売る。

の5種類に分類される。

ここでは私の独断と偏見による解釈を用いて、各戦略について簡単に説明する。

平均回帰戦略(上がるものは下がる)

上がるものも永遠に上がり続けることはない。いつかは必ず下がるものである。下がるものも永遠に下がり続けることはない。いつかは必ず上がるものである。

上がったものは下がり、下がったものは上がって、いずれ平均に戻ってくる。そこで、平均より下がれば買い、上がれば売る。これが平均回帰戦略であり、つまりは逆張りである。

ところで、平均回帰戦略について、平均の下で買い、上で売れば必ず勝てるのではないか、と勘違いする初心者が時々いる。だが、実際にはそうはいかない。平均自体も動くからである。

例えば、平均の下で買っても平均が下がり続けることがある。そして、価格が平均に戻ったときには平均は買った価格より下になっていることもあるのである。

また、平均の上で売っても平均が上がり続けることがある。そして、価格が平均に戻ったときには平均は売った価格より上になっていることもあるのである。

平均回帰戦略で勝つためには平均自体の動きが水平に近くなるタイミングを測る必要がある。

モメンタム戦略(トレンドは友である)

トレンドは友、というのはtrendとfriendをかけた洒落である。米国の投資家ジョージ・ソロスの言葉らしい。トレンドとは仲良くしろ、逆らうな、従え、ということのようだ。つまりはトレンドフォロー、順張りである。

平均回帰戦略の逆で、上がれば、その勢い、つまりモメンタムに付いて行って買い、下がれば、そのモメンタムに付いて行って売るのである。では、順張りと逆張り、どちらの戦略が正しいのだろうか。

順張りは正しいが、逆張りは間違っている、というような意見をよく見かける。だが、それは違うと私は考えている。値動きというのは時には平均回帰的であり、時にはモメンタム的であるものだ。したがって状況に合った戦略を採用しなければならない。とはいえ、言うは易く行うは難し、ではある。

バリュー戦略(安く買って高く売る)

「安く買って高く売る」を「下がったら買って上がったら売る」と解してはいけないのだろう。それだと平均回帰戦略と変わらない。「価格が本来の価値より安ければ買い、高ければ売る」と解すべきなのだろう。

本来の価値を知るためには価格以外の指標が必要である。この辺が過去の価格さえ分かればよい平均回帰戦略との違いである。FXの場合、各国の経済指標などを見ることになるのだろうか。

経済指標は少なくとも短期トレードでは使いにくい。取引する通貨ペア以外の通貨ペアの価格を用い、取引する通貨ペアのあるべき価格を算出するというのはどうか。私はそれより高いか安いかで売買するという手法をバリュー戦略としてもいいのではないかと考えている。

センチメント戦略(噂で買って事実で売る)

「噂で買って事実で売る」とは、例えば米国の利上げ観測が持ち上がったらドルが高くなるだろうと予測して買う。そして、実際に利上げが決まったらもはやこれ以上は高くならないだろうと予測して売るのである。

だが、センチメントをどのように測るかというのは簡単ではない。テキストなどを用いた定性分析も必要になるだろう。

季節性戦略(5月に売る)

「5月に売る」というのは株価は5月以降に下がる傾向があるので、5月になったら売るということである。実際に5月以降に下がる傾向があるのかは怪しい。だが、年、四半期、月、週、日などを通した周期性があると考えて、それに基づいた売買を行うのが季節性戦略である。

単に時期によって上がりやすい、下がりやすいということだけが季節性ではない。平均回帰的である、モメンタム的である、というのも季節性である。

商品市場では農作物やエネルギーなど、季節によって需要や供給が大きく変化するものがあるだろう。そのような場合、季節性を期待できる。

FXにおける季節性は商慣習に基づくものが多いのではないだろうか。日本の仲値やロンドンフィキシングなどである。しかし、商慣習も一定不変というわけではないことには注意が必要である。

(2017/03/09更新)