knitr::opts_chunk$set(echo = TRUE)
library(fixedincome) library(bizdays) library(httr) library(jsonlite) library(transmute)
Títulos Públicos Federais 10/Mar/2017 Papel PREFIXADO LTN - Taxa (% a.a.)/252 Código SELIC Data Base/Emissão Data de Vencimento Tx. Compra Tx. Venda Tx. Indicativas PU Intervalo Indicativo Mínimo (D0) Máximo (D0) Mínimo (D+1) Máximo (D+1) 100000 15/01/2016 01/04/2017 12,1920 12,1850 12,1892 992,723961 12,0212 12,4911 12,0216 12,4990 100000 04/10/2013 01/07/2017 11,1660 11,1579 11,1630 968,181071 11,0212 11,5274 10,9290 11,4306 100000 03/07/2015 01/10/2017 10,4802 10,4691 10,4735 945,792913 10,2839 10,9977 10,1465 10,8583 100000 10/01/2014 01/01/2018 10,0261 10,0143 10,0200 926,311081 9,8257 10,6465 9,6568 10,4760 100000 08/01/2016 01/04/2018 9,8103 9,7915 9,8024 907,017003 9,5931 10,4931 9,4150 10,3139 100000 04/07/2014 01/07/2018 9,6500 9,6311 9,6405 887,751622 9,4460 10,4062 9,2370 10,1964 100000 08/07/2016 01/10/2018 9,5840 9,5713 9,5762 868,029325 9,3872 10,3914 9,1629 10,1666 100000 09/01/2015 01/01/2019 9,5800 9,5678 9,5735 848,754592 9,3860 10,4269 9,1491 10,1893 100000 06/01/2017 01/04/2019 9,6428 9,6335 9,6394 829,161864 9,4260 10,5043 9,1964 10,2741 100000 03/07/2015 01/07/2019 9,6790 9,6683 9,6750 809,999115 9,4480 10,5543 9,2181 10,3241 100000 08/01/2016 01/01/2020 9,7647 9,7537 9,7600 770,642258 9,5200 10,6668 9,2809 10,4274 100000 08/07/2016 01/07/2020 9,9300 9,9249 9,9264 732,741102 9,6487 10,8302 9,4199 10,6011
{ "name": "LTN_20170401", "issue_date": "2016-01-15", "maturity_date": { "value": "2017-04-01", "calendar_adjustment": "following" }, "spot_price": 992.723961, "yield_rate": { "value": 12.1892, "compounding": "discrete", "daycount": "business/252", "calendar": "Brazil/ANBIMA" }, // ---- "currency": "BRL", "instrument_type": "ZeroCouponBond", "notional": 1000, "calendar": "Brazil/ANBIMA", "pricing_model": { "model": "PVFixedRate", "compounding": "discrete", "daycount": "business/252" } }
# ZeroCouponBond( # notional = 1000, # yield_rate = "0.121892 discrete business/252 Brazil/ANBIMA", # maturity_date = "2017-04-01", # issue_date = "2016-01-15", # calendar_adjustment = "following", # calendar = "Brazil/ANBIMA" # )
url <- modify_url("https://api.morph.io/wilsonfreitas/MorthIO_VNATitulosPublicos_ANBIMA/data.json", query = list(key = "uIUD3TeyxgIVWhVwsFr0", query = "select * from 'data' where data_ref in (select max(data_ref) from 'data')")) res <- GET(url) fromJSON(content(res, as = "text")) url <- modify_url("https://api.morph.io/wilsonfreitas/MorthIO_TitulosPublicos_ANBIMA/data.json", query = list(key = "uIUD3TeyxgIVWhVwsFr0", query = "select * from 'data' where data_referencia in (select max(data_referencia) from 'data') and titulo = 'LTN'")) res <- GET(url) df <- fromJSON(content(res, as = "text")) url <- modify_url("https://api.morph.io/wilsonfreitas/MorthIO_TaxasVNATitulosPublicos_ANBIMA/data.json", query = list(key = "uIUD3TeyxgIVWhVwsFr0", query = "select * from 'data' where data_ref in (select max(data_ref) from 'data')")) res <- GET(url) fromJSON(content(res, as = "text"))
url <- modify_url("https://api.morph.io/wilsonfreitas/MorthIO_TitulosPublicos_ANBIMA/data.json", query = list(key = "uIUD3TeyxgIVWhVwsFr0", query = "select * from 'data' where data_referencia in (select max(data_referencia) from 'data') and titulo = 'LTN'")) res <- GET(url) df <- fromJSON(content(res, as = "text")) tr_ <- transmuter( match_regex("^\\d{8}$", function(text, match) as.Date(text, format="%Y%m%d")) ) df <- transmute(tr_, df) yield_rate <- spotrate(df$taxa_ind/100, "discrete", "business/252", "Brazil/ANBIMA") 1000 * discount(yield_rate, df$data_referencia, bizdays::following(df$data_vencimento, "Brazil/ANBIMA"))
url <- modify_url("https://api.morph.io/wilsonfreitas/MorthIO_TitulosPublicos_ANBIMA/data.json", query = list(key = "uIUD3TeyxgIVWhVwsFr0", query = "select * from 'data' where data_referencia in (select max(data_referencia) from 'data') and titulo = 'NTN-F'")) res <- GET(url) df <- fromJSON(content(res, as = "text")) df <- transmute(tr_, df) yield_rate <- spotrate(df$taxa_ind/100, "discrete", "business/252", "Brazil/ANBIMA") df_split <- split(df, df$data_vencimento) df_cf <- lapply(df_split, function(dx) { cf_dates <- seq(dx$data_vencimento, dx$data_referencia, by = "-6 months") cf_dates <- sort(cf_dates) coupon_rate <- spotrate(0.1, "discrete", "business/252", "Brazil/ANBIMA") coupon_payment <- 1000 * (compound(coupon_rate, 6, "months") - 1) cf <- data.frame( coupon_dates = cf_dates, payment_dates = bizdays::following(cf_dates, "Brazil/ANBIMA"), coupon_payments = coupon_payment, amortization = 0 ) cf$business_days <- bizdays::bizdays(dx$data_referencia, cf$payment_dates, "Brazil/ANBIMA") cf$amortization[dim(cf)[1]] <- 1000 cf }) mapply(function(bx, cf) { yield_rate <- spotrate(bx$taxa_ind/100, "discrete", "business/252", "Brazil/ANBIMA") payments <- cf$coupon_payments + cf$amortization sum( payments * discount(yield_rate, cf$business_days, "days") ) }, df_split, df_cf) - df$pu url <- modify_url("https://api.morph.io/wilsonfreitas/MorthIO_TitulosPublicos_ANBIMA/data.json", query = list(key = "uIUD3TeyxgIVWhVwsFr0", query = "select * from 'data' where data_referencia = '20170404' and titulo = 'NTN-B'")) res <- GET(url) df <- fromJSON(content(res, as = "text")) df <- transmute(tr_, df) url <- modify_url("https://api.morph.io/wilsonfreitas/MorthIO_VNATitulosPublicos_ANBIMA/data.json", query = list(key = "uIUD3TeyxgIVWhVwsFr0", query = "select VNA from 'data' where data_ref = '2017-04-04' and titulo = 'NTNB'")) res <- GET(url) VNA <- fromJSON(content(res, as = "text")) vna_ntnb <- VNA$VNA yield_rate <- spotrate(df$taxa_ind/100, "discrete", "business/252", "Brazil/ANBIMA") df_split <- split(df, df$data_vencimento) df_cf <- lapply(df_split, function(dx) { cf_dates <- seq(dx$data_vencimento, dx$data_referencia, by = "-6 months") cf_dates <- sort(cf_dates) coupon_rate <- spotrate(0.06, "discrete", "business/252", "Brazil/ANBIMA") coupon_payment <- vna_ntnb * (compound(coupon_rate, 6, "months") - 1) cf <- data.frame( coupon_dates = cf_dates, payment_dates = bizdays::following(cf_dates, "Brazil/ANBIMA"), coupon_payments = coupon_payment, amortization = 0 ) cf$business_days <- bizdays::bizdays(dx$data_referencia, cf$payment_dates, "Brazil/ANBIMA") cf$amortization[dim(cf)[1]] <- vna_ntnb cf }) mapply(function(bx, cf) { yield_rate <- spotrate(bx$taxa_ind/100, "discrete", "business/252", "Brazil/ANBIMA") payments <- cf$coupon_payments + cf$amortization sum( payments * discount(yield_rate, cf$business_days, "days") ) }, df_split, df_cf) - df$pu
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.