イールドカーブをプロットする

TradingViewでは、国債の金利を表示できるので、security() を使って金利データを参照し、独自にイールドカーブをプロットするインディケーターを作成することができる。

例えば、米国債利回りのシンボル名は下記の通り。シンボル名の US の部分を JP に変えれば日本国債、DE に変えればドイツ国債の利回りになる。

シンボル名説明
US01Y米国債1年 利回り
US02Y米国債2年 利回り
US03Y米国債3年 利回り
US05Y米国債5年 利回り
US07Y米国債7年 利回り
US10Y米国債10年 利回り
US20Y米国債20年 利回り
US30Y米国債30年 利回り

イールドカーブをプロットするPineスクリプトのコードが下記。


//@version=4
study("Yield Curve")

country = input("US", type=input.string)

round_float(v) =>
    round(v * 1000) / 1000

draw(x1, y1, x2, y2, n) =>
    l = line.new(x1, y1, x2, y2, color=color.black, style=line.style_arrow_right)
    txt = tostring(n) + ": " + tostring(y2)
    lb = label.new(x2, y2, txt, textcolor=y2 >= 0 ? color.black : color.red, style=label.style_none)
    [l, lb]

yld01_ = security(country + "01Y", timeframe.period, close)
yld02_ = security(country + "02Y", timeframe.period, close)
yld03_ = security(country + "03Y", timeframe.period, close)
yld05_ = security(country + "05Y", timeframe.period, close)
yld07_ = security(country + "07Y", timeframe.period, close)
yld10_ = security(country + "10Y", timeframe.period, close)
yld20_ = security(country + "20Y", timeframe.period, close)
yld30_ = security(country + "30Y", timeframe.period, close)

yld01 = round_float(yld01_)
yld02 = round_float(yld02_)
yld03 = round_float(yld03_)
yld05 = round_float(yld05_)
yld07 = round_float(yld07_)
yld10 = round_float(yld10_)
yld20 = round_float(yld20_)
yld30 = round_float(yld30_)

x_offset = 10

x1 = bar_index[80]
x2 = x1 + x_offset
lb0 = label.new(x1, yld01, "1: " + tostring(yld01), textcolor=yld01 >= 0 ? color.black : color.red, style=label.style_none)
[l1, lb1] = draw(x1, yld01, x2, yld02, 2)

x1 := x2
x2 := x1 + x_offset
h_line = line.new(x1, yld02, x1 + 60, yld02, color=yld10 > yld02 ? color.green : color.red)
[l2, lb2] = draw(x1, yld02, x2, yld03, 3)

x1 := x2
x2 := x1 + x_offset
[l3, lb3] = draw(x1, yld03, x2, yld05, 5)

x1 := x2
x2 := x1 + x_offset
[l4, lb4] = draw(x1, yld05, x2, yld07, 7)

x1 := x2
x2 := x1 + x_offset
[l5, lb5] = draw(x1, yld07, x2, yld10, 10)

x1 := x2
x2 := x1 + x_offset
[l6, lb6] = draw(x1, yld10, x2, yld20, 20)

x1 := x2
x2 := x1 + x_offset
[l7, lb7] = draw(x1, yld20, x2, yld30, 30)

line.delete(l1[1])
line.delete(l2[1])
line.delete(l3[1])
line.delete(l4[1])
line.delete(l5[1])
line.delete(l6[1])
line.delete(l7[1])
line.delete(h_line[1])

label.delete(lb0[1])
label.delete(lb1[1])
label.delete(lb2[1])
label.delete(lb3[1])
label.delete(lb4[1])
label.delete(lb5[1])
label.delete(lb6[1])
label.delete(lb7[1])

hline(0)

独自に追加した部分として、一般的に景気悪化の予兆として捉えられる長短金利の逆転現象を示す指標を追加している。これは、2年債利回りの水準に水平線を引き、2年債と10年債の利回りが逆転すると、水平線が赤色になる。逆転がない平常時は緑色となる。

イールドカーブは下記のように描画される。これは、インディケーターをチャートに3つ追加し、上から日本、米国、ドイツ国債を指定して表示したもの。

ドルインデックスを自作する

ドルインデックスとは、ドルに対し重み付けした6つの通貨(ユーロ、日本円、英ポンド、カナダドル、スウェーデンクローナ、スイスフラン)の幾何平均を計算したもの。TradingViewでは、シンボルに DXY を指定すれば表示できる。

通貨重み
ユーロ0.576
日本円0.136
英ポンド0.119
カナダドル0.091
スウェーデンクローナ0.042
スイスフラン0.036

元は1973年に米国の中央銀行によって開発されたものだが、1985年にドルインデックスの先物取引が開始されてから、 ICE Futures U.S.(先物取引所)によって算出・公表されている。算出は各通貨のスポット価格の配信レートを元にリアルタイムに約15秒毎に行われる。

計算式は次の通り。

index = 50.14348112 × EURUSD-0.576 × USDJPY0.136 × GBPUSD-0.119 × USDCAD0.091 × USDSEK0.042 × USDCHF0.036

この計算式をPineスクリプトで実装したものが下記。


//@version=4
study("US Dollar Index")

symbol_prefix = input("FX")

vs_eur = pow(security(symbol_prefix + ":EURUSD", timeframe.period, close), -0.576)
vs_jpy = pow(security(symbol_prefix + ":USDJPY", timeframe.period, close), 0.136)
vs_gbp = pow(security(symbol_prefix + ":GBPUSD", timeframe.period, close), -0.119)
vs_cad = pow(security(symbol_prefix + ":USDCAD", timeframe.period, close), 0.091)
vs_sek = pow(security(symbol_prefix + ":USDSEK", timeframe.period, close), 0.042)
vs_chf = pow(security(symbol_prefix + ":USDCHF", timeframe.period, close), 0.036)

index = 50.14348112 * vs_eur * vs_jpy * vs_gbp * vs_cad * vs_sek * vs_chf

plot(index)
plot(security("DXY", timeframe.period, close), color=color.gray)

symbol_prefix (FX:EURUSDFX の部分) のデフォルト値は FX に設定してあり、FXCMの配信レートを使ってインデックスを計算する。例えば、これを OANDA に変更すれば、OANDAの配信レートを使って計算するように変更できる。

参考:U.S. Dollar Index® Contracts - FAQ June 2015 (PDF)