Skip to content

Instantly share code, notes, and snippets.

@timelyportfolio
Last active December 17, 2015 08:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save timelyportfolio/5584326 to your computer and use it in GitHub Desktop.
Save timelyportfolio/5584326 to your computer and use it in GitHub Desktop.
r lattice plots of JGB yields
<!DOCTYPE html>
<!-- saved from url=(0014)about:internet -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>JGB Yields - More Charts with Lattice</title>
<style type="text/css">
body, td {
font-family: sans-serif;
background-color: white;
font-size: 12px;
margin: 8px;
}
tt, code, pre {
font-family: 'DejaVu Sans Mono', 'Droid Sans Mono', 'Lucida Console', Consolas, Monaco, monospace;
}
h1 {
font-size:2.2em;
}
h2 {
font-size:1.8em;
}
h3 {
font-size:1.4em;
}
h4 {
font-size:1.0em;
}
h5 {
font-size:0.9em;
}
h6 {
font-size:0.8em;
}
a:visited {
color: rgb(50%, 0%, 50%);
}
pre {
margin-top: 0;
max-width: 95%;
border: 1px solid #ccc;
white-space: pre-wrap;
}
pre code {
display: block; padding: 0.5em;
}
code.r, code.cpp {
background-color: #F8F8F8;
}
table, td, th {
border: none;
}
blockquote {
color:#666666;
margin:0;
padding-left: 1em;
border-left: 0.5em #EEE solid;
}
hr {
height: 0px;
border-bottom: none;
border-top-width: thin;
border-top-style: dotted;
border-top-color: #999999;
}
@media print {
* {
background: transparent !important;
color: black !important;
filter:none !important;
-ms-filter: none !important;
}
body {
font-size:12pt;
max-width:100%;
}
a, a:visited {
text-decoration: underline;
}
hr {
visibility: hidden;
page-break-before: always;
}
pre, blockquote {
padding-right: 1em;
page-break-inside: avoid;
}
tr, img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
@page :left {
margin: 15mm 20mm 15mm 10mm;
}
@page :right {
margin: 15mm 10mm 15mm 20mm;
}
p, h2, h3 {
orphans: 3; widows: 3;
}
h2, h3 {
page-break-after: avoid;
}
}
</style>
<!-- Styles for R syntax highlighter -->
<style type="text/css">
pre .operator,
pre .paren {
color: rgb(104, 118, 135)
}
pre .literal {
color: rgb(88, 72, 246)
}
pre .number {
color: rgb(0, 0, 205);
}
pre .comment {
color: rgb(76, 136, 107);
}
pre .keyword {
color: rgb(0, 0, 255);
}
pre .identifier {
color: rgb(0, 0, 0);
}
pre .string {
color: rgb(3, 106, 7);
}
</style>
<!-- R syntax highlighter -->
<script type="text/javascript">
var hljs=new function(){function m(p){return p.replace(/&/gm,"&amp;").replace(/</gm,"&lt;")}function f(r,q,p){return RegExp(q,"m"+(r.cI?"i":"")+(p?"g":""))}function b(r){for(var p=0;p<r.childNodes.length;p++){var q=r.childNodes[p];if(q.nodeName=="CODE"){return q}if(!(q.nodeType==3&&q.nodeValue.match(/\s+/))){break}}}function h(t,s){var p="";for(var r=0;r<t.childNodes.length;r++){if(t.childNodes[r].nodeType==3){var q=t.childNodes[r].nodeValue;if(s){q=q.replace(/\n/g,"")}p+=q}else{if(t.childNodes[r].nodeName=="BR"){p+="\n"}else{p+=h(t.childNodes[r])}}}if(/MSIE [678]/.test(navigator.userAgent)){p=p.replace(/\r/g,"\n")}return p}function a(s){var r=s.className.split(/\s+/);r=r.concat(s.parentNode.className.split(/\s+/));for(var q=0;q<r.length;q++){var p=r[q].replace(/^language-/,"");if(e[p]){return p}}}function c(q){var p=[];(function(s,t){for(var r=0;r<s.childNodes.length;r++){if(s.childNodes[r].nodeType==3){t+=s.childNodes[r].nodeValue.length}else{if(s.childNodes[r].nodeName=="BR"){t+=1}else{if(s.childNodes[r].nodeType==1){p.push({event:"start",offset:t,node:s.childNodes[r]});t=arguments.callee(s.childNodes[r],t);p.push({event:"stop",offset:t,node:s.childNodes[r]})}}}}return t})(q,0);return p}function k(y,w,x){var q=0;var z="";var s=[];function u(){if(y.length&&w.length){if(y[0].offset!=w[0].offset){return(y[0].offset<w[0].offset)?y:w}else{return w[0].event=="start"?y:w}}else{return y.length?y:w}}function t(D){var A="<"+D.nodeName.toLowerCase();for(var B=0;B<D.attributes.length;B++){var C=D.attributes[B];A+=" "+C.nodeName.toLowerCase();if(C.value!==undefined&&C.value!==false&&C.value!==null){A+='="'+m(C.value)+'"'}}return A+">"}while(y.length||w.length){var v=u().splice(0,1)[0];z+=m(x.substr(q,v.offset-q));q=v.offset;if(v.event=="start"){z+=t(v.node);s.push(v.node)}else{if(v.event=="stop"){var p,r=s.length;do{r--;p=s[r];z+=("</"+p.nodeName.toLowerCase()+">")}while(p!=v.node);s.splice(r,1);while(r<s.length){z+=t(s[r]);r++}}}}return z+m(x.substr(q))}function j(){function q(x,y,v){if(x.compiled){return}var u;var s=[];if(x.k){x.lR=f(y,x.l||hljs.IR,true);for(var w in x.k){if(!x.k.hasOwnProperty(w)){continue}if(x.k[w] instanceof Object){u=x.k[w]}else{u=x.k;w="keyword"}for(var r in u){if(!u.hasOwnProperty(r)){continue}x.k[r]=[w,u[r]];s.push(r)}}}if(!v){if(x.bWK){x.b="\\b("+s.join("|")+")\\s"}x.bR=f(y,x.b?x.b:"\\B|\\b");if(!x.e&&!x.eW){x.e="\\B|\\b"}if(x.e){x.eR=f(y,x.e)}}if(x.i){x.iR=f(y,x.i)}if(x.r===undefined){x.r=1}if(!x.c){x.c=[]}x.compiled=true;for(var t=0;t<x.c.length;t++){if(x.c[t]=="self"){x.c[t]=x}q(x.c[t],y,false)}if(x.starts){q(x.starts,y,false)}}for(var p in e){if(!e.hasOwnProperty(p)){continue}q(e[p].dM,e[p],true)}}function d(B,C){if(!j.called){j();j.called=true}function q(r,M){for(var L=0;L<M.c.length;L++){if((M.c[L].bR.exec(r)||[null])[0]==r){return M.c[L]}}}function v(L,r){if(D[L].e&&D[L].eR.test(r)){return 1}if(D[L].eW){var M=v(L-1,r);return M?M+1:0}return 0}function w(r,L){return L.i&&L.iR.test(r)}function K(N,O){var M=[];for(var L=0;L<N.c.length;L++){M.push(N.c[L].b)}var r=D.length-1;do{if(D[r].e){M.push(D[r].e)}r--}while(D[r+1].eW);if(N.i){M.push(N.i)}return f(O,M.join("|"),true)}function p(M,L){var N=D[D.length-1];if(!N.t){N.t=K(N,E)}N.t.lastIndex=L;var r=N.t.exec(M);return r?[M.substr(L,r.index-L),r[0],false]:[M.substr(L),"",true]}function z(N,r){var L=E.cI?r[0].toLowerCase():r[0];var M=N.k[L];if(M&&M instanceof Array){return M}return false}function F(L,P){L=m(L);if(!P.k){return L}var r="";var O=0;P.lR.lastIndex=0;var M=P.lR.exec(L);while(M){r+=L.substr(O,M.index-O);var N=z(P,M);if(N){x+=N[1];r+='<span class="'+N[0]+'">'+M[0]+"</span>"}else{r+=M[0]}O=P.lR.lastIndex;M=P.lR.exec(L)}return r+L.substr(O,L.length-O)}function J(L,M){if(M.sL&&e[M.sL]){var r=d(M.sL,L);x+=r.keyword_count;return r.value}else{return F(L,M)}}function I(M,r){var L=M.cN?'<span class="'+M.cN+'">':"";if(M.rB){y+=L;M.buffer=""}else{if(M.eB){y+=m(r)+L;M.buffer=""}else{y+=L;M.buffer=r}}D.push(M);A+=M.r}function G(N,M,Q){var R=D[D.length-1];if(Q){y+=J(R.buffer+N,R);return false}var P=q(M,R);if(P){y+=J(R.buffer+N,R);I(P,M);return P.rB}var L=v(D.length-1,M);if(L){var O=R.cN?"</span>":"";if(R.rE){y+=J(R.buffer+N,R)+O}else{if(R.eE){y+=J(R.buffer+N,R)+O+m(M)}else{y+=J(R.buffer+N+M,R)+O}}while(L>1){O=D[D.length-2].cN?"</span>":"";y+=O;L--;D.length--}var r=D[D.length-1];D.length--;D[D.length-1].buffer="";if(r.starts){I(r.starts,"")}return R.rE}if(w(M,R)){throw"Illegal"}}var E=e[B];var D=[E.dM];var A=0;var x=0;var y="";try{var s,u=0;E.dM.buffer="";do{s=p(C,u);var t=G(s[0],s[1],s[2]);u+=s[0].length;if(!t){u+=s[1].length}}while(!s[2]);if(D.length>1){throw"Illegal"}return{r:A,keyword_count:x,value:y}}catch(H){if(H=="Illegal"){return{r:0,keyword_count:0,value:m(C)}}else{throw H}}}function g(t){var p={keyword_count:0,r:0,value:m(t)};var r=p;for(var q in e){if(!e.hasOwnProperty(q)){continue}var s=d(q,t);s.language=q;if(s.keyword_count+s.r>r.keyword_count+r.r){r=s}if(s.keyword_count+s.r>p.keyword_count+p.r){r=p;p=s}}if(r.language){p.second_best=r}return p}function i(r,q,p){if(q){r=r.replace(/^((<[^>]+>|\t)+)/gm,function(t,w,v,u){return w.replace(/\t/g,q)})}if(p){r=r.replace(/\n/g,"<br>")}return r}function n(t,w,r){var x=h(t,r);var v=a(t);var y,s;if(v){y=d(v,x)}else{return}var q=c(t);if(q.length){s=document.createElement("pre");s.innerHTML=y.value;y.value=k(q,c(s),x)}y.value=i(y.value,w,r);var u=t.className;if(!u.match("(\\s|^)(language-)?"+v+"(\\s|$)")){u=u?(u+" "+v):v}if(/MSIE [678]/.test(navigator.userAgent)&&t.tagName=="CODE"&&t.parentNode.tagName=="PRE"){s=t.parentNode;var p=document.createElement("div");p.innerHTML="<pre><code>"+y.value+"</code></pre>";t=p.firstChild.firstChild;p.firstChild.cN=s.cN;s.parentNode.replaceChild(p.firstChild,s)}else{t.innerHTML=y.value}t.className=u;t.result={language:v,kw:y.keyword_count,re:y.r};if(y.second_best){t.second_best={language:y.second_best.language,kw:y.second_best.keyword_count,re:y.second_best.r}}}function o(){if(o.called){return}o.called=true;var r=document.getElementsByTagName("pre");for(var p=0;p<r.length;p++){var q=b(r[p]);if(q){n(q,hljs.tabReplace)}}}function l(){if(window.addEventListener){window.addEventListener("DOMContentLoaded",o,false);window.addEventListener("load",o,false)}else{if(window.attachEvent){window.attachEvent("onload",o)}else{window.onload=o}}}var e={};this.LANGUAGES=e;this.highlight=d;this.highlightAuto=g;this.fixMarkup=i;this.highlightBlock=n;this.initHighlighting=o;this.initHighlightingOnLoad=l;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="\\b(0[xX][a-fA-F0-9]+|(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.ER="(?![\\s\\S])";this.BE={b:"\\\\.",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.inherit=function(r,s){var p={};for(var q in r){p[q]=r[q]}if(s){for(var q in s){p[q]=s[q]}}return p}}();hljs.LANGUAGES.cpp=function(){var a={keyword:{"false":1,"int":1,"float":1,"while":1,"private":1,"char":1,"catch":1,"export":1,virtual:1,operator:2,sizeof:2,dynamic_cast:2,typedef:2,const_cast:2,"const":1,struct:1,"for":1,static_cast:2,union:1,namespace:1,unsigned:1,"long":1,"throw":1,"volatile":2,"static":1,"protected":1,bool:1,template:1,mutable:1,"if":1,"public":1,friend:2,"do":1,"return":1,"goto":1,auto:1,"void":2,"enum":1,"else":1,"break":1,"new":1,extern:1,using:1,"true":1,"class":1,asm:1,"case":1,typeid:1,"short":1,reinterpret_cast:2,"default":1,"double":1,register:1,explicit:1,signed:1,typename:1,"try":1,"this":1,"switch":1,"continue":1,wchar_t:1,inline:1,"delete":1,alignof:1,char16_t:1,char32_t:1,constexpr:1,decltype:1,noexcept:1,nullptr:1,static_assert:1,thread_local:1,restrict:1,_Bool:1,complex:1},built_in:{std:1,string:1,cin:1,cout:1,cerr:1,clog:1,stringstream:1,istringstream:1,ostringstream:1,auto_ptr:1,deque:1,list:1,queue:1,stack:1,vector:1,map:1,set:1,bitset:1,multiset:1,multimap:1,unordered_set:1,unordered_map:1,unordered_multiset:1,unordered_multimap:1,array:1,shared_ptr:1}};return{dM:{k:a,i:"</",c:[hljs.CLCM,hljs.CBLCLM,hljs.QSM,{cN:"string",b:"'\\\\?.",e:"'",i:"."},{cN:"number",b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},hljs.CNM,{cN:"preprocessor",b:"#",e:"$"},{cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:a,r:10,c:["self"]}]}}}();hljs.LANGUAGES.r={dM:{c:[hljs.HCM,{cN:"number",b:"\\b0[xX][0-9a-fA-F]+[Li]?\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\b\\d+(?:[eE][+\\-]?\\d*)?L\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\b\\d+\\.(?!\\d)(?:i\\b)?",e:hljs.IMMEDIATE_RE,r:1},{cN:"number",b:"\\b\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"number",b:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"keyword",b:"(?:tryCatch|library|setGeneric|setGroupGeneric)\\b",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\.\\.\\.",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\.\\.\\d+(?![\\w.])",e:hljs.IMMEDIATE_RE,r:10},{cN:"keyword",b:"\\b(?:function)",e:hljs.IMMEDIATE_RE,r:2},{cN:"keyword",b:"(?:if|in|break|next|repeat|else|for|return|switch|while|try|stop|warning|require|attach|detach|source|setMethod|setClass)\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"literal",b:"(?:NA|NA_integer_|NA_real_|NA_character_|NA_complex_)\\b",e:hljs.IMMEDIATE_RE,r:10},{cN:"literal",b:"(?:NULL|TRUE|FALSE|T|F|Inf|NaN)\\b",e:hljs.IMMEDIATE_RE,r:1},{cN:"identifier",b:"[a-zA-Z.][a-zA-Z0-9._]*\\b",e:hljs.IMMEDIATE_RE,r:0},{cN:"operator",b:"<\\-(?!\\s*\\d)",e:hljs.IMMEDIATE_RE,r:2},{cN:"operator",b:"\\->|<\\-",e:hljs.IMMEDIATE_RE,r:1},{cN:"operator",b:"%%|~",e:hljs.IMMEDIATE_RE},{cN:"operator",b:">=|<=|==|!=|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||\\$|:",e:hljs.IMMEDIATE_RE,r:0},{cN:"operator",b:"%",e:"%",i:"\\n",r:1},{cN:"identifier",b:"`",e:"`",r:0},{cN:"string",b:'"',e:'"',c:[hljs.BE],r:0},{cN:"string",b:"'",e:"'",c:[hljs.BE],r:0},{cN:"paren",b:"[[({\\])}]",e:hljs.IMMEDIATE_RE,r:0}]}};
hljs.initHighlightingOnLoad();
</script>
</head>
<body>
<h2>JGB Yields - More Charts with Lattice</h2>
<p>This blog is littered with posts about Japan. In one sentence, I think Japan presents opportunity and is a very interesting real-time test of much of my macro thinking. Proper visualization is absolutely essential for me to understand all of the dynamics. The R packages lattice and the new <a href="http://ramnathv.github.io/rCharts">rCharts</a> give me the power to see. I thought some of my recent lattice charts might help or interest some folks.</p>
<h3>Get and Transform the Data</h3>
<pre><code class="r"># get Japan yield data from the Ministry of
# Finance Japan data goes back to 1974
require(xts)
# require(clickme)
require(latticeExtra)
url &lt;- &quot;http://www.mof.go.jp/english/jgbs/reference/interest_rate/&quot;
filenames &lt;- paste(&quot;jgbcme&quot;, c(&quot;&quot;, &quot;_2010&quot;, &quot;_2000-2009&quot;,
&quot;_1990-1999&quot;, &quot;_1980-1989&quot;, &quot;_1974-1979&quot;), &quot;.csv&quot;,
sep = &quot;&quot;)
# load all data and combine into one jgb
# data.frame
jgb &lt;- read.csv(paste(url, filenames[1], sep = &quot;&quot;),
stringsAsFactors = FALSE)
for (i in 2:length(filenames)) {
jgb &lt;- rbind(jgb, read.csv(paste(url, &quot;/historical/&quot;,
filenames[i], sep = &quot;&quot;), stringsAsFactors = FALSE))
}
# now clean up the jgb data.frame to make a jgb
# xts
jgb.xts &lt;- as.xts(data.matrix(jgb[, 2:NCOL(jgb)]),
order.by = as.Date(jgb[, 1]))
colnames(jgb.xts) &lt;- paste0(gsub(&quot;X&quot;, &quot;JGB&quot;, colnames(jgb.xts)),
&quot;Y&quot;)
# get Yen from the Fed
# getSymbols(&#39;DEXJPUS&#39;,src=&#39;FRED&#39;)
xtsMelt &lt;- function(data) {
require(reshape2)
# translate xts to time series to json with date
# and data for this behavior will be more generic
# than the original data will not be transformed,
# so template.rmd will be changed to reflect
# convert to data frame
data.df &lt;- data.frame(cbind(format(index(data),
&quot;%Y-%m-%d&quot;), coredata(data)))
colnames(data.df)[1] = &quot;date&quot;
data.melt &lt;- melt(data.df, id.vars = 1, stringsAsFactors = FALSE)
colnames(data.melt) &lt;- c(&quot;date&quot;, &quot;indexname&quot;, &quot;value&quot;)
# remove periods from indexnames to prevent
# javascript confusion these . usually come from
# spaces in the colnames when melted
data.melt[, &quot;indexname&quot;] &lt;- apply(matrix(data.melt[,
&quot;indexname&quot;]), 2, gsub, pattern = &quot;[.]&quot;, replacement = &quot;&quot;)
return(data.melt)
# return(df2json(na.omit(data.melt)))
}
jgb.melt &lt;- xtsMelt(jgb.xts[&quot;2012::&quot;, ])
jgb.melt$date &lt;- as.Date(jgb.melt$date)
jgb.melt$value &lt;- as.numeric(jgb.melt$value)
jgb.melt$indexname &lt;- factor(jgb.melt$indexname, levels = colnames(jgb.xts))
</code></pre>
<h3>Favorite Plot - Time Series Line of JGB Yields by Maturity</h3>
<pre><code class="r">p2 &lt;- xyplot(value ~ date | indexname, data = jgb.melt,
type = &quot;l&quot;, layout = c(length(unique(jgb.melt$indexname)),
1), panel = function(x, y, ...) {
panel.abline(h = c(min(y), max(y)))
panel.xyplot(x = x, y = y, ...)
panel.text(x = x[length(x)/2], y = max(y),
labels = levels(jgb.melt$indexname)[panel.number()],
cex = 0.7, pos = 3)
}, scales = list(x = list(tck = c(1, 0), alternating = 1),
y = list(tck = c(1, 0), lwd = c(0, 1))), strip = FALSE,
par.settings = list(axis.line = list(col = 0)),
xlab = NULL, ylab = &quot;Yield&quot;, main = &quot;JGB Yields by Maturity Since Jan 2012&quot;)
p2 + layer(panel.abline(h = pretty(jgb.melt$value),
lty = 3))
</code></pre>
<p><img src="data:image/png;base64,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" alt="plot of chunk unnamed-chunk-3"/> </p>
<h3>Good Chart but Not a Favorite</h3>
<p>As you can tell, I did not spend a lot of time formatting this one.</p>
<pre><code class="r">p1 &lt;- xyplot(value ~ date | indexname, data = jgb.melt,
type = &quot;l&quot;)
p1
</code></pre>
<p><img src="data:image/png;base64,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" alt="plot of chunk unnamed-chunk-4"/> </p>
<h3>Another Favorite - Yield Curve Evolution with Opacity Color Scale</h3>
<pre><code class="r"># add alpha to colors
addalpha &lt;- function(alpha = 180, cols) {
rgbcomp &lt;- col2rgb(cols)
rgbcomp[4] &lt;- alpha
return(rgb(rgbcomp[1], rgbcomp[2], rgbcomp[3],
rgbcomp[4], maxColorValue = 255))
}
p3 &lt;- xyplot(value ~ indexname, group = date, data = jgb.melt,
type = &quot;l&quot;, lwd = 2, col = sapply(255/(as.numeric(Sys.Date() -
jgb.melt$date) + 1), FUN = addalpha, cols = brewer.pal(&quot;Blues&quot;,
n = 9)[7]), main = &quot;JGB Yield Curve Evolution Since Jan 2012&quot;)
update(asTheEconomist(p3), scales = list(x = list(cex = 0.7))) +
layer(panel.text(x = length(levels(jgb.melt$indexname)),
y = 0.15, label = &quot;source: Japanese Ministry of Finance&quot;,
col = &quot;gray70&quot;, font = 3, cex = 0.8, adj = 1))
</code></pre>
<p><img src="data:image/png;base64,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" alt="plot of chunk unnamed-chunk-5"/> </p>
<h3>Replicate Me</h3>
<p><a href="https://gist.github.com/timelyportfolio/5584326">code at Gist</a></p>
</body>
</html>
## JGB Yields - More Charts with Lattice
This blog is littered with posts about Japan. In one sentence, I think Japan presents opportunity and is a very interesting real-time test of much of my macro thinking. Proper visualization is absolutely essential for me to understand all of the dynamics. The R packages lattice and the new [rCharts](http://ramnathv.github.io/rCharts) give me the power to see. I thought some of my recent lattice charts might help or interest some folks.
```{r message = FALSE, warning = FALSE, error = FALSE, echo = FALSE }
opts_chunk$set(message = FALSE, warning = FALSE, error = FALSE, fig.width = 8, fig.height = 4, tidy.opts = list( width.cutoff = 50 ))
```
### Get and Transform the Data
```{r}
#get Japan yield data from the Ministry of Finance Japan
#data goes back to 1974
require(xts)
#require(clickme)
require(latticeExtra)
url <- "http://www.mof.go.jp/english/jgbs/reference/interest_rate/"
filenames <- paste("jgbcme",c("","_2010","_2000-2009","_1990-1999","_1980-1989","_1974-1979"),".csv",sep="")
#load all data and combine into one jgb data.frame
jgb <- read.csv(paste(url,filenames[1],sep=""),stringsAsFactors=FALSE)
for (i in 2:length(filenames)) {
jgb <- rbind(jgb,read.csv(paste(url,"/historical/",filenames[i],sep=""),stringsAsFactors=FALSE))
}
#now clean up the jgb data.frame to make a jgb xts
jgb.xts <- as.xts(data.matrix(jgb[,2:NCOL(jgb)]),order.by=as.Date(jgb[,1]))
colnames(jgb.xts) <- paste0(gsub("X","JGB",colnames(jgb.xts)),"Y")
#get Yen from the Fed
#getSymbols("DEXJPUS",src="FRED")
xtsMelt <- function(data) {
require(reshape2)
#translate xts to time series to json with date and data
#for this behavior will be more generic than the original
#data will not be transformed, so template.rmd will be changed to reflect
#convert to data frame
data.df <- data.frame(cbind(format(index(data),"%Y-%m-%d"),coredata(data)))
colnames(data.df)[1] = "date"
data.melt <- melt(data.df,id.vars=1,stringsAsFactors=FALSE)
colnames(data.melt) <- c("date","indexname","value")
#remove periods from indexnames to prevent javascript confusion
#these . usually come from spaces in the colnames when melted
data.melt[,"indexname"] <- apply(matrix(data.melt[,"indexname"]),2,gsub,pattern="[.]",replacement="")
return(data.melt)
#return(df2json(na.omit(data.melt)))
}
jgb.melt <- xtsMelt(jgb.xts["2012::",])
jgb.melt$date <- as.Date(jgb.melt$date)
jgb.melt$value <- as.numeric(jgb.melt$value)
jgb.melt$indexname <- factor(
jgb.melt$indexname,
levels = colnames(jgb.xts)
)
```
### Favorite Plot - Time Series Line of JGB Yields by Maturity
```{r}
p2 <- xyplot(
value ~ date | indexname,
data = jgb.melt,
type = "l",
layout = c( length( unique( jgb.melt$indexname ) ), 1 ),
panel = function(x, y, ...) {
panel.abline( h = c( min( y ), max( y ) ) )
panel.xyplot( x = x, y = y, ... )
panel.text(
x = x[ length(x) / 2],
y = max( y ),
labels = levels(jgb.melt$indexname)[panel.number()],
cex = 0.7,
pos = 3
)
},
scales = list(
x = list( tck = c(1,0), alternating = 1 ),
y = list( tck = c(1,0), lwd = c(0,1) )
),
strip = FALSE,
par.settings = list(axis.line = list(col = 0)),
xlab = NULL,
ylab = "Yield",
main = "JGB Yields by Maturity Since Jan 2012"
)
p2 + layer(
panel.abline(
h = pretty(jgb.melt$value),
lty = 3
)
)
```
### Good Chart but Not a Favorite
As you can tell, I did not spend a lot of time formatting this one.
```{r}
p1 <- xyplot(value~date|indexname,data=jgb.melt,type="l")
p1
```
### Another Favorite - Yield Curve Evolution with Opacity Color Scale
```{r}
#add alpha to colors
addalpha <- function(alpha=180,cols) {
rgbcomp <- col2rgb(cols)
rgbcomp[4] <- alpha
return(rgb(rgbcomp[1],rgbcomp[2],rgbcomp[3],rgbcomp[4],maxColorValue=255))
}
p3 <- xyplot(
value~indexname, group=date,
data = jgb.melt,
type = "l",
lwd = 2,
col = sapply(
255/(as.numeric(Sys.Date() - jgb.melt$date) + 1),
FUN = addalpha,
cols = brewer.pal("Blues", n = 9)[7]
),
main = "JGB Yield Curve Evolution Since Jan 2012"
)
update ( asTheEconomist(p3), scales = list ( x = list ( cex = .7 ) ) ) +
layer(
panel.text (
x = length(
levels ( jgb.melt$indexname )
),
y = 0.15,
label = "source: Japanese Ministry of Finance",
col = "gray70",
font = 3,
cex = 0.8,
adj = 1
)
)
```
### Replicate Me
[code at Gist](http://gist.github.com/)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment