2

Excel 的名为“Analysis ToolPak”的加载项提供了“收益”功能,用于计算支付​​定期利息的证券收益。

函数运行良好并返回正确的数据。

我的理解是基于某种迭代的函数,在我的代码中实现它并不容易。

我的问题是有人知道/看过 C#(最终是其他语言)的实现并且可以分享吗?或者(也许)一些提示如何实现它?比我可以分享:)

编辑:

感谢所有向我发布“公式”的人,但这对我来说并不完全有用。
请注意,MS 的公式仅适用于 1 种情况:
“当有一个息票期或更少直到赎回时”,

否则:

“(...)产量是通过一百次迭代计算出来的。”
并且没有针对这种情况的确切公式

我可以阅读方程式并实现它们(希望如此),但我的问题是是否有人已经或看到已经用编程语言实现了函数。

我不懒,但我不喜欢打破敞开的门......

4

5 回答 5

1

假设一个函数传递了公式所需的所有变量,如上所述

http://office.microsoft.com/en-us/excel/HP052093451033.aspx

然后

return (((redemption/100 + rate/frequency) - ( par/100 + ( A/E * rate/frequency ))) / (par/100+( A/E * rate/frequency ))) * ((frequency*E)/DSR);
于 2009-04-29T12:11:59.543 回答
1

整个公式在这里:

http://office.microsoft.com/en-us/excel/HP052093451033.aspx

在 Google 上首次匹配“excel 产量”。

于 2009-04-29T11:35:52.377 回答
1

首先,您需要 PRICE 函数的实现。YIELD 然后使用牛顿求解器求解PRICE 函数以获得正确的收益率和给定的目标价格。价格函数的代码和牛顿求解器的代码可以在这个类似的帖子中找到:java implementation of excel price,yield functions

于 2012-04-08T05:48:22.923 回答
0

如果您不想浏览网页,这里是公式。

我试图发布图像,但我是新用户,它不允许我。

图形显示公式

于 2009-04-29T11:40:50.477 回答
0
using Excel = Microsoft.Office.Interop.Excel; 

 Excel.Application xl = new Excel.Application();
        Excel.WorksheetFunction wsf = xl.WorksheetFunction;
        //static settlementDate
        var settlementDate = xl.Evaluate("=DATEVALUE(" + '"' + "9/4/2013" + '"' + ")");
        //static maturityDate
        var maturityDate = xl.Evaluate("=DATEVALUE("+ '"' +"12/5/2014"+ '"' +")");
        var rate = "0.05250";
        var priceLevel = "1.04800";
        //assuming that redemption is 100, frequency is Quarterly and basis is Actual/365
        var resultInPercentage = xl.Evaluate("=YIELD(" + settlementDate + "," +         maturityDate + ",.05250,(1.04800*100),100,2,3)") * 100;  
于 2014-07-02T10:19:27.473 回答