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

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つ追加し、上から日本、米国、ドイツ国債を指定して表示したもの。