1

一定期間にわたる毎月の社債データを含むデータ セットがあり、30 年先の月ごとのリスクのない債券価格曲線のスプライン補間を追加しました。次のクーポンの期日が何ヶ月で、満期まであと何ヶ月かを示す変数「next_int」、「mnts_mat」があります。

クーポン頻度変数「cf」もあります。スプライン債券価格は、var1、var2、...、var360 としてリストされます。クーポンの支払いが行われる月のスプライン債券価格を合計したいと思います。

したがって、次の利払いが 1 か月で満期が 13 か月で、年 2 回のクーポン頻度の債券の場合、変数 y=var1+var7+var13 を作成したいと思います。私が今書いたことはこれです:

data bond2 (DROP=i);
set bond1;
by issue_id date;
y=0
do i=next_int to mnts_mat by 12/cf;
y=y+var'i';
end;
run;

これはうまくいきません。i を引数として取り、変数を出力するマクロを作成することも実験しましたが、それも機能しません。事前に感謝します。

4

1 に答える 1

3

問題の本質はよくわかりませんが、ここにいくつかの指針があります。

  • 「y=0」の後にセミコロンが必要です
  • var1-var360 の配列を宣言する必要があるようです
  • 配列を宣言したら、var[i] (var'i' ではない) のようなものを参照できます。

[コード]

data bond2 (DROP=i);
  set bond1;
  by issue_id date;
  array vars var1-var360;
  y=0;
  do i=next_int to mnts_mat by 12/cf;
    y=y+var[i];
  end;
run;
于 2013-02-05T09:49:34.757 に答える