Excel实现Excel Yield函数

时间:2009-04-29 11:08:35

标签: .net excel .net-3.5 finance

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

功能正常并返回正确的数据。

我的理解是基于迭代类型的功能,在我的代码中实现它并不容易。

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

修改

感谢所有发布我的“公式”,但这对我来说并不完全有用 请注意,MS的公式仅在1个案例中找到申请:
“如果有一个优惠券期限或更短时间,直到兑换”,

否则:

“(...)产量通过一百次迭代计算。”
并且该案件没有确切的公式

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

我不是很懒,但我不喜欢打开门......

5 个答案:

答案 0 :(得分:1)

整个公式在这里:

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

Google首次匹配'excel yield'。

答案 1 :(得分: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);

答案 2 :(得分:1)

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

答案 3 :(得分:0)

如果您不想浏览网页,可以使用以下公式。

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

Graphic showing formula

答案 4 :(得分: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;