株(為替)は長く保有すればするほどリスクが増える?【ボラティリティと期間】

096469

当たり前のことを長ったらしく書いたタイトルですが、スイングトレードや長期投資はデイトレードに比べて、実際どのくらいリスクが高いのでしょうか?

【答え】
保有した期間の平方根倍リスクが増える。
つまり9日間保有すると、一日だけ保有するのに比べて3倍リスクが高まる。

えっ、まじ?
今日はそれを検証してみたいと思います。

あっ、最初に言っておきますが「デイトレードは危険だから、優良銘柄を長期投資した方が健全で安全だよ」というようなお話ではありませんのであしからず。

仮にソニーを買った場合。
一日だけ保有するのと10年間保有するのでは、10年間保有した方がリスク≒損失が大きくなる可能性は高いでしょ、ということです。

ソニーの明日の株価は、せいぜいプラスマイナス数%といったところでしょう。
でも、10年後の株価は予想もつきませんよね。
数倍になってるかもしれないし、数十分の一になってるかもしれない…

リスク(ボラティリティ)は期間の平方根に比例する

冒頭で述べたように、金融の教科書なんかにはリスク(ボラティリティ)は期間の平方根に比例すると書かれています。
これがどういうことかをできるだけ噛み砕いて説明したいと思います。

まずリスクとは何か?
ここでは、損失の可能性をリスクと呼ぶようにします。

ちなみに金融の世界では、確率・統計で予測できるものをリスク。
何が起こるのかすら予想できないものを不確実性と呼び分けていたりします。

厳密にはマーケットで起こるほとんどの出来事は不確実性なものだと思いますが、ここでは数学的観点からリスクを求めてみます。

 icon-check-square-o ボラティリティとは?

では次に、ボラティリティとは?
よくボラティリティが高いと危険だと言われます。

ここでは価格の変化率の標準偏差をボラティリティとします。
以下に簡単に説明します。

201410312

B列がドル円の日足データ(終値)です。
C列が変化率=当日終値÷前日終値-1です。

そしてD列が日次変化率(20日間)の標準偏差です。
ここではSTDVEP関数を使って求めました。

これがどういうことかというと、ドル円の一日の変化率は約70%(正確には68%)の確率で、±1σ(±0.35%)の範囲に収まるでしょう。
つまり、ドルの下落率が▼0.35%を超えるのは、およそ15%くらいだということです。

±2σ(±0.70%)の範囲には、95%の確率で収まります。
±3σの範囲には99.7%の確率で収まるので、▼3σを超えるような暴落は稀といえるでしょう。

そして、ボラティリティが高ければ高いほど、変動率も大きくなるので、当然リスクも高くなります。

では、どのくらい高くなるの?
しつこいようですが、ボラティリティは期間の平方根に比例します。

2日保有したら1.41421356倍。
4日保有したら2倍、9日保有したら3倍。

一年保有したら、250の平方根(√250)倍リスクが増えます。
※一年の営業日を250日とする

その証拠がこちらです。

20141031

先ほどのドル円の日足データ(4年分、1056営業日)を使った求めたものです。

一日の変化率の標準偏差は0.56%
9日の変化率の標準偏差は1.65%

2.96≒3倍と見事に理論値通りになりました。

以上、数学上のお話です。
実際のマーケットがこうならないことは読者の方は百も承知だと思いますが、リスクの許容範囲などを決める際には覚えておいて損はないと思います。

勘に頼った数字よりは、数学的な根拠があった方が心の拠り所にはなります。

だからといって、今日の負けが納得いくわけではありません。

後場に何があったんだよ <黒田バズーカ―
マーケットでは、3σを超えるような出来事なんて普通だよ…

Excelでの対数グラフの描き方【日経平均】

すごく大雑把に解説しますw

時系列データはHYPER SBIから取りました。
信用口座持っていれば、ツール代は無料なはずです。

SBI時系列データ

期間を設定して、検索 ⇒ CSV出力
指定した保存先にTimeChartっていうCSV形式ファイルが保存されます。

名前は好きなように変更してください。
ファイルを開くとこんな感じです。

SBI時系列データ 日経平均

日付、始値、高値、安値、終値、あとは移動平均線と出来高…
えっ?出来高?

日経平均の出来高って何ですか?
たぶん、売買代金のことを言ってるんでしょうね。

対数目盛1

どうせ日付と終値しか使わないので、他は削除してキレイにします。

あと日付が8桁の文字列になっているので、これをシリアル値⇒日付に変換します。

対数目盛2

8桁の文字列を日付に変換する方法は、色々あると思いますが、僕の知ってるやり方を紹介します。

=TEXT(文字列,(“0000!/00!/00”))*1
シリアル値を出したら、セルの書式設定 ⇒ 日付

あっ、何で×1をしているかというと、そうしないと文字列になっちゃうからです。
うん、やっぱりすごく雑な解説w

対数目盛3

変換した日付をA列に張り付けて、データを昇順に並び替えましょう。
選択範囲は拡張して、終値も一緒に並び替えますよ。

対数目盛4

んで、データをキレイに並び替えたら、セルA1とB1を選択した状態で Crtl + Shift + ↓

対数目盛5

データが入っている最後の行まで選択します。
エクセルのショートカットキーは覚えておくと飛躍的に作業速度が上がります。
だから、俺もちゃんと覚えようね!!

対数目盛6

そしたら、リボンのとこから挿入 ⇒ 折れ線 ⇒ 2―D折れ線を選択

対数目盛7

これで日経平均の価格推移が描けました。
こう見ると、リーマンショックがたいしたことなく見えちゃう…

対数目盛8

タイトルとかラベルとか、いらないものは削除してキレイにしましょう。
そこの場所にマウスカーソルを合わせて右クリックです。

対数目盛9

スッキリしました。
さて、本題でこれを対数グラフにします。

対数目盛10

左の縦軸の数値、15000とか20000にマウスカーソルを合わせて右クリック ⇒ 軸の書式設定

対数目盛11

すると、軸のオプションが開かれるので。
対数目盛を表示するにチェックを入れます。

対数目盛12

はい、できあがり!
なんですが、コメントで頂いた質問のように範囲を狭くしてみましょう。

対数目盛13

先ほどと同じように、左縦軸の数字のところで右クリック、軸のオプションを開いたら、最小値と最大値の値を変えます。

自動にチェックがついてますが、固定にチェックをつけて、最小値を5000、最大値を50000にしてみます。

対数目盛14

すると、こんな感じになります。
初めに描いた日経平均の終値の価格推移と、ほとんど同じ形状ですね。

以上、超大雑把な解説終わりですw

はぁ、ニジマス釣りたい…
今日は(も)ナイター行ったんだけど、釣果は1匹だけ。

管理釣り場なんだから入れ食いじゃなきゃ面白くないよ!!

価格変化率はなぜ対数でなければならないのか?

以前にも疑問に思って、挫折した問題。
もう一度チャレンジしてみます。

084162

価格の絶対値と変化率

バーゲンセールでお買い物に行ったところ

1)定価1000円の洋服が500円だった
2)定価10000円の洋服が9500円だった

両方とも500円の割引。
でもお得感を感じるのは、間違いなく1)の方でしょう。

500円という金額の絶対値ではなく、それぞれの変化率(割引率)を計算してみます。

1)500/1000-1=▼50%
2)9500/10000-1=▼5%

わざわざ計算するまでもなかったかもしれませんが、1)は半額の50%OFF、2)は5%OFFです。

なので、同じ500円の割引でも価値が違う、というのはOKですね。

株価の場合も同じで、1000円の株が500円下がったら「ぎゃぁあ!!」だけど、10000円の株が500円下がっても「あいたたた…」くらいでしょ。

だから株価の上昇/下落は、普通は価格差でなく変化率で表します。

価格変化率=当日終値÷前日終値-1

これがいわゆる騰落率というヤツでしょう。
ニュースとかでも、「今日の日経平均は〇%の上昇でした」っていう場合は、上記の式を使ってるはずです。

でもでもでもね、オプションとかFXの分析をするときに、対数変化率を使えって書いてることが多いんですよ。

今回はその謎を解明したいと思います。

上昇と下落を対称にする

1000円の株が50%下落した、翌日は50%上昇した、その翌日は50%下落した、その翌翌日は50%上昇(ry
これを繰り返していくと

1日目 1000*50%=500
2日目 500*150%=750
3日目 750*50%=375
4日目 375*150%=562.5


対数1

こんな感じで株価は下がっていってしまいます。
50%下落したら100%上昇しないと、株価は元の価格に戻りません。

そんなの当たり前じゃん!って思うかもしれませんが、上昇と下落を対称にするためには対数を使うようです。

対数には常用対数自然対数があって、何が違うかというとが違います。

常用対数は底が10
自然対数は底がe(ネイピア数、2.71828182845904・・・)です。

底ってなんだい?っていうのは、のちほど説明します。

とりあえず株やオプション、FXなどの分析では自然対数(Ln)が使われてるみたいです。
が、ここでは説明しやすいので常用対数(Log)を使います。

っていうか、そもそも対数ってなんぞや?
というところから、まずは解説してみますね。

対数とは?

対数2

環境依存文字(小さい文字)は、端末によっては上手く表示されない?ので、上記は次のように表記します。

2^3=8
LOG(2)8=3

まずは、2^3=8の方は大丈夫ですよね?
2を3乗したら8になる、2×2×2=8っていう意味です。

で、先に言っちゃうと、3が指数であり対数です。
2は底です。

2^3=8のときの3、右肩にある小さい文字のときは指数ですが
LOG(2)8=3のときの3は対数です、説明むずい…

つまり、2を3乗すると8になりますよ、っていうのは指数
じゃあ、8は2を何乗したの? ⇒ 3乗です、っていうのが対数

説明合ってるかな…
間違ってたらコメント欄に指摘お願いします。

では、問題です。
625は5の何乗ですか?

【答え】
5^x=625 ⇒ x=LOG(5)625
ってなるんですけど、Excelの関数で求めちゃいましょう。

・対数を求める関数
=LOG(数値、底) ※底は省略可、その場合は底は10

対数3

こんな説明で、対数とは何か?わかってくれた人が一人でもいれば幸いです…

日経平均の対数変化率のヒストグラム

疲れたので、結果を書きますね…
まずは、日経平均20年分のグラフです。

日経平均20年分

左軸、青線が価格推移。
右軸、赤線が対数目盛です。

次に、
価格差=(当日終値―前日終値)
騰落率=(当日終値÷前日終値―1)
対数変化率=LOG(当日終値÷前日終値)
この3つの分布図を描いてみました。

対数4
※クリックすると拡大します

あれ?価格差も正規分布っぽくなってるぞ…
やっぱり騰落率と対数変化率に、差がほとんど見られないし、もうわけわかめ…

暫定結論

僕の数学能力が欠けてるので、まったく意味のない検証になってしまいましたが…
計算ミスもあるかもしれないなあ。

たぶん、日経平均の日次変動率くらいだと、普通の騰落率と対数変化率はほとんど変わらない。
10倍とか100倍とか変動するものだと、違ってくるんじゃないですかね。

実際に僕も価格の変動率に対数は使ってないし。
数倍とかに変動する可能性のある変数にだけ、いちおう対数を使っています。

トレンドフォロー型ペアトレード【検証結果】

金曜日のようなミスをもう二度としないように…
3連休はシステムの完全自動化にあてました。

まあ一応できたことはできたんだけど、エラー処理が不安で実践では使いたくないなあ。
想定外のエラーが出たときのために、やっぱり目視はしておきたいです。

‘実行時エラー442’とかね、どう対処していいのかわかんないもん。
とりあえずOn Error Resume Nextですっ飛ばして、発注が上手くできなかったときは諦める、って感じかなあ。

どっちにしろ、パソコンの電源やネット回線が落ちたら、どうにもならないんだけど…

ってことで、まったりできる寄り引けシステムを構築中。

お風呂の中でパッとアイデアを思い付いだんで、約一年半ぶりにシュート練習しましたよ!!

シュート練習1

おぉ、思いつきの割には素晴らしいw
タイトルにあるようにトレンドフォロー型のペアトレード検証。

弱い銘柄を買って強い銘柄を売る、鞘の収斂を狙うのではなく、鞘の拡大を狙う戦略。
完全寄り引けです、これならオーダーミスの心配ナッシング。

一発目のシュート練習でこれくらいの結果が出ると、ちょっと研究意欲が湧いてきたぞ。

夕凪さんの過去エントリは、ほとんど読ませて頂きました。
ヒントはたくさんもらったので、それを参考に検証したいと思います。

試行回数がこなせないと思って、イベント戦略はあまり研究してこなかったんだけど。
小さなものを含めれば、毎日何かしらのイベントはありますからね。

やはりモメンタム戦略に、触媒(イベント)は必須だと思うので。
テクニカル的な分析だけでは、難しいと思います。

トレンドフォロー戦略について、ヒントが落ちてないか色々ググってみたんだけど、ほとんどが情報商材かアフィリエイト目的のFXサイトばっかり。

こんなんまったく参考にならねーよ。
って、10年トレードやってるから判断できるけど、トレードを始めたばかりの人は見抜けないだろうなあ。

俺も、たくさん騙されてきたもん。
まあ、ネットに落ちてる情報の99%がゴミ。でも、残りの1%にヒントが落ちてたりもするんだよなあ。

だからネットサーフィンするんだけど、さっきも書いた通り、トレードのことだったらある程度判断できる。

でも、アフィリエイトに関してはまったく判断できません!
アフィリエイターをカモにするアフィリエイターのネギにされそうで怖いです。

アフィリエイトは金銭的なドローダウンはないけど、だからといってストレスがないわけじゃない。
リスクが少ない、敷居が低い分、リターンを得るのも難しく感じてます。

と、アフィリエイトから逃げる口実を必死に探していますw

結局、俺はトレーダーなのかな…

時間になったらブックを開いてマクロを実行【寝坊対策】

タイトルから、僕の今日のサボりの原因がバレてしまいそうですが(笑
指定した時刻になったら、ファイルを開いて実行するマクロを作ります。

ボタン一発押すだけなんだし、寝坊しなきゃいいだけの話なんだけど。
今日みたいな思いは絶対にしたくないもん。
ストラテジーが増えたら、どっちにしろ必須になるだろうし。

OnTimeメソッド

onTimeメソッドの使い方は簡単です。
あまり使ったことはないけど(笑

Application.OnTime EarliestTime:= _
TimeValue(“8:50“), Procedure:=”実行するマクロ

基本的な構文はこんな感じ。
太文字の時刻と実行したいマクロ(プロシージャ名)を代えればOK。

 icon-check-square-o サンプルマクロ

Sub Auto_Open()
    Application.OnTime EarliestTime:= _
    TimeValue("8:50"), Procedure:="実行するマクロ"
End Sub


Sub 実行するマクロ()
    MsgBox ("まだ寝てるの!?" & vbCrLf & "ダウが大幅安よ。")
End Sub

簡単にコードを解説します。

標準モジュールにAuto_Openという名のプロシージャ名をつけることで、Excelのファイルを開いたときにマクロを自動的に実行してくれます。
標準モジュールではなく、ThisWorkbookにWorkbook_Openというプロシージャを記述する方法もあります。

Excelのファイルを開いてから、マクロを実行しないでもOK。
Excelファイルを開きっぱなしのまま寝ればいい。
これで安心して寝坊できます。

えっ?パソコンつけっぱなしだと電気代がもったいない?
朝、自動でパソコンも立ち上げたい?

BIOSっていう設定で、割と簡単にできるけど…
それくらいは自分でしなさい!

まあ、スマホから遠隔でパソコンの電源を立ち上げられたら、すごく便利そうなのだけれども。
これは有線LANだと、かなりハードルが高くて挫折しました。

無線LANだと簡単っぽいんですけどね。
まあ、簡単に遠隔で操作できるようだとセキュリティー面でも心配か…

あと、vbCrLfはMsgBox内で改行するコードです。
知らない人も多いと思います、それはあまり使わないから(笑

Workbooks.Open

話しが少しそれてしまいましたので、次に進みます。

指定時刻になったらマクロを実行するファイルと、売買サインやら発注をするファイルを別にしたいときがありますよね。
そんなときは、Workbooks.Openメソッドを使って、指定したブックを開きます。

Workbooks.Open “場所:ブック名.xlsm”

場所はドライブ名など。あとはブック名と拡張子を指定します。
ちなみにExcelの場合、ファイル=ブックと覚えておいて大丈夫っぽいです。

Excelファイルの上にマウスカーソルを合わせて右クリック ⇒ プロパティで場所とブック名の確認はできます。

 icon-check-square-o サンプルマクロ
Sub Auto_Open()
Application.OnTime EarliestTime:= _
TimeValue(“0:38″), Procedure:=”実行するマクロ”
End Sub

Sub 実行するマクロ()
Workbooks.Open “C:\Users\PCUser\Desktop\test.xlsm”

Workbooks(“test.xlsm”).Activate
End Sub