2017-07-07 9 views
0

私は問題があり、助けてくれれば非常に感謝します。債券の将来のクーポン支払日を設定する

  • 債:"026351AZ9" "026351BC9" これらの債券の
  • まずクーポン日: "2029年2月15日" "2010-09-11"(状況を開始

    債券は、クーポンを支払う年のクラス日付)

  • 数:3年と1年
  • 各年もクーポン周波数を持っています来年中に第1ケース2回の支払い(4回の支払い)

があるだろうということを意味2と4、:3年、毎年2回のクーポン支払い - >のためので、すべての6ヶ月のクーポン支払い次の3年。 1年4回クーペの支払いと同じです。

結果:

datesBond1 = "2029-02-15" "2029-08-15" "2030-02-15" "2030-08-15" "2031-02-15" "2031-08-15"

datesBond2 = "2010-09-11" "2010-12-11" "2010-03-11" "2010-06-11"

これは単なるサンプルです: それは次のようになりべきです。私の場合、ISINS、Dates、およびさまざまな年とクーポンの頻度がさらに増えています。

あなたは

答えて

0

あなたは将来の利払い日をcontruct、個々の社債のためにアクセスすることができ カスタム関数で計算をラップするmonths機能を使用することができますありがとうございました。最後の二つの値は、2011年

fn_cpnPayDates = function(cpnStartDt = as.Date("2029-02-15"),numYears = 3, freq = 6) { 

# number of coupon payments per year 
numPayPerYear = 12/freq 

#total payments 
numPayments = numYears * numPayPerYear 

cpnDatesAll = rep(cpnStartDt, numPayments) 

for(i in 1:numPayments) cpnDatesAll[i] = cpnDatesAll[i] + months((i-1)* freq) 


return(cpnDatesAll) 

} 

datesBond1 = fn_cpnPayDates(cpnStartDt = as.Date("2029-02-15"),numYears = 3, freq = 6) 
datesBond1 
#[1] "2029-02-15" "2029-08-15" "2030-02-15" "2030-08-15" "2031-02-15" "2031-08-15" 

datesBond2 = fn_cpnPayDates(cpnStartDt = as.Date("2010-09-11"),numYears = 1, freq = 3) 
datesBond2 
#[1] "2010-09-11" "2010-12-11" "2011-03-11" "2011-06-11" 
+0

がええ最後の二つは、2011年にはどうもありがとうございましたあるべき年に対応している必要がありボンド2のためのあなたの予想出力にタイプミスがあり

。この解決策は素晴らしいです。私は関数を扱うほうがはるかに簡単です。 1つのベクトルにすべてを入れることができます:c(datesBond1、datesBond2) –

関連する問題