この記事では伝説のトレーダー集団タートルズがリスク管理に使っていたユニットの計算方法、使い方。また、ユニットを自動計算するTrading Viewのインジケーターを紹介しています。
伝説のトレーダー集団「タートルズ」とは?
プロトレーダーの指導によって素人でもトレーダーになれるのか?
といった集団実験の被験者であり、その実験によって生まれたトレーダー集団です。
彼らは指導者リチャード・デニスに資金を与えられエントリー、エグジット、リスク管理などのトレードルールを教わり、のちに驚異的なパフォーマンスを発揮しました。
中でもタートルズの用いたリスク管理方法は、異なる金融商品でもリスクを常に一定に保てる画期的な方法でした。
全ての金融商品は「ユニット」でリスク管理する
いちばん気をつけなければならないリスクは破産である。しっかり見張ってないと、それは夜盗のように忍び寄りひとつ残らず持ち去ってしまう。
トレーディングで何より大事な目標は、ゲームに生き残ることだ。
引用元:伝説の投資集団 タートルズ流投資の魔術 P.135,143
タートルズはトレーダーと投資家の違いを明確に定義している。
投資家とは価値を生む見込みで”もの”を長期保有する人、対してトレーダーはリスクを売買する人。
タートルズについて書かれた「伝説の投資家集団 タートルズ流投資の魔術」はタートルズがトレーダーにもかかわらず、投資家集団とうたっているのはやや違和感があるが。。
タートルズはトレーダーであり、破産を回避するため、トレードというゲームに生き残るために、あるリスク管理を用いてそれを徹底している。
トレーダーにおいて金融商品は何であれリスクを徹底的に管理することが重要であり、それを怠ればすぐに市場から退場してしまうという考えだ。
リッチとビルが用いたのは、常時、市場が1日に上下する金額にもとづいて、各市場のポジション・サイズを決定する革新的手法だ。彼らは、各市場における取引枚数を上下動の幅の金額がほぼ同額になるように定めた。
引用元:伝説の投資集団 タートルズ流投資の魔術 P.145
タートルズのメンバーであるリッチとビルは、異なる金融商品でもリスクを常に一定にするため後述するユニットでリスク管理を徹底しました。
わたしたちは自分たちのポジションをユニットと呼ばれる塊で取る。各ユニットの大きさは、取引枚数が 1‐ATRの価格変動で口座残高の 1パーセントになるよう設定されていた。100万ドルの取引口座なら 1万ドルだ。そこで、特定の市場で値幅 1‐ATRが示す金額を見て、1万ドルをそれで割れば、リッチがわたしたちに割り当ててくれた取引資金 100万ドルごとに取引できる枚数が出る。この数字を、わたしたちはユニット・サイズと呼ぶ。不安定な市場、もしくは高額の契約の市場は、低額の契約の市場、もしくは安定度の高い市場より、ユニットは小さくなる。
引用元:伝説の投資集団 タートルズ流投資の魔術 P.146
タートルズのリスク管理は、ATRから口座残高の1%となるユニットを計算する。市場の価格、ボラティリティに応じてユニットの大きさは変動し、口座残高に対するリスクが常に一定になる画期的なリスク管理方法だ。
ATRを使ってユニットを計算する
では、タートルズがリスク管理でつかっていたユニットを実際に計算してみよう。
通貨単位が「円」の場合の計算方法
以下条件の場合を計算します。
①投資資金が100万円
②1ユニット当たりのリスクを1%
③ドル/円のATRが0.2
④取引単位が10,000通貨
ユニットの計算式は以下になります。
$$ユニット=\frac{①投資資金×②1ユニット当たりのリスク}{③ATR×④取引単位}=\frac{100万円×0.01}{0.2×10,000}=5.0$$
計算すると1ユニットの取引単位は5万通貨ということになります。
通貨単位が「ドル」の場合の計算方法
次はユーロ/ドルのように外貨同士の通貨ペアで通貨単位が円ではなくドルの場合を計算してみます。この場合は一度ATRを円に換算して計算しますが難しい計算ではありません。具体的な計算例を見てみましょう。
以下条件の場合を計算します。
①投資資金が100万円
②1ユニット当たりのリスクを1%
③ユーロ/ドルのATRが0.007
④取引単位が10,000通貨
⑤為替レート1ドル105円
$$ユニット=\frac{①投資資金×②1ユニット当たりのリスク}{③ATR×⑤為替レート×④取引単位}=\frac{100万円×0.01}{0.007×105×10,000}=1.36$$
計算すると1ユニットの取引単位は1.36万通貨になります。
「ユニット」で使うとすべての金融商品を同じリスクで取引きできる
これでユニットの計算方法が理解できたと思います。
先ほどの例題では、ドル/円が1ユニット=5万通貨、ユーロ/ドルが1ユニット=1.36万通貨でした。「はい!これで同じリスクで取引きできますよ!」っと言われてもなんだかピンときませんよね。
確認するために例で計算したユニットを使ってATR分価格が変動した場合を計算してみます。
【ドル/円の例】
$$損益=ATR×1ユニット×取引単位=0.2×5×10,000=10,000円$$
【ユーロ/ドルの例】
$$損益=ATR×1ユニット×取引単位×為替レート=0.007×1.36×10,000×105=10,000円$$
※ユニットを四捨五入しているため正確には9996円です。
計算結果を見るとどちらの例も損益が10,000円になっており、1ユニット当たりのリスク(投資資金100万円の1%)となることが確認できました。
Trading ViewでATRインジケーターを表示させる
今回は私が使っているTrading ViewでATRインジケーターを表示させATRを確認してみます。
1.チャート上部のインジケーター&ストラテジーをクリックします。
2.内蔵一覧からATRを選択するか、検索窓からATRを検索します。
3.チャート下部にATRインジケーターが表示されます。ATRを確認したい時間軸までカーソルを移動させると、インジケーター左上にATRの値が表示されます。
ATRの値が確認出来たので先ほどの計算式からユニットを計算できますね!
ATRユニットを自動表示するTrading Viewインジケーター
ユニットの計算方法はわかったけど「いちいちエクセルや電卓で計算するのは面倒だな。。」という人は、ここで紹介するTrading Viewのインジケーターを使うとチャート上に自動で計算されたATRとユニットを表示させることができます。
「ATRユニットインジケーター」の導入方法
1.チャート下部のPineエディタをクリック
2.新規の空のインジケーターを選択し、初期コードを全て削除
3.Pineエディタに以下すべてのコードを貼り付け、チャートに追加をクリック
//タートルズのATRユニットリスク管理
//@version=4
study(title="ATRユニット", overlay=true)
len = input(14, title="ATR期間")
fund = input(1000000, title="投資資金(円)")
onoff = input(false, title="ドル→円換算")
takelisk = input(1, title="1ユニットのリスク(%)")
lot = input(10000, title="取引単位")
ATR = atr(len)
fpercent = fund * (takelisk/100)
minunit = ATR * lot
dolyen = security("USDJPY", "", close)
unit = onoff ? fpercent / (minunit * dolyen) : fpercent / minunit
x1 = label.new(bar_index, high, text = "ATR = " + tostring(ATR, '#.###')+ "\n1unit = " + tostring(unit,'#.###'))
label.set_color(x1, color=color.orange)
label.delete(x1[1])
これでインジケーターの導入が完了。チャート上にATRの値とユニットが表示されました。
「ATRユニットインジケーター」の使い方
このインジケーターはATRの期間、投資資金などの簡単な設定が可能となっています。
①ATR算出に使う期間を設定できます。デフォルトは14。
②投資資金を入力します。単位は円。
③ユーロ/ドルのように通貨単位がドルの場合にONにします。
④1ユニット当たりのリスク(%)を変更できます。
⑤取引単位を入力します。デフォルトは10000。
以上でATRユニットインジケーターの説明はおわりです。
バージョン5のコード
コードをver.4からver.5に修正しました。
//タートルズのATRユニットリスク管理
//@version=5
indicator(title='ATRユニット', overlay=true)
len = input(14, title='ATR期間')
fund = input(1000000, title='投資資金(円)')
onoff = input(false, title='ドル→円換算')
takelisk = input(1, title='1ユニットのリスク(%)')
lot = input(10000, title='取引単位')
ATR = ta.atr(len)
fpercent = fund * (takelisk / 100)
minunit = ATR * lot
dolyen = request.security('USDJPY', '', close)
unit = onoff ? fpercent / (minunit * dolyen) : fpercent / minunit
x1 = label.new(bar_index, high, text='ATR = ' + str.tostring(ATR, '#.###') + '\n1unit = ' + str.tostring(unit, '#.###'))
label.set_color(x1, color=color.orange)
label.delete(x1[1])
コメント