.NET Yield函数的.NET实现

Excel的插件名为“Analysis ToolPak”提供了“收益率”函数,用于计算定期利息的安全性收益率。

函数运作良好,并返回适当的数据。

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

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

编辑:

感谢所有张贴我“公式”,但这不是完全有用的我。
请注意,MS公式仅适用于1个案例:
“当有一个或更less的优惠券时间,直到赎回”,

除此以外:

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

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

我不是懒惰,但我不喜欢打破门…

整个公式在这里:

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

在谷歌的第一场比赛“excel yield”。

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

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); 

首先你需要实现PRICEfunction。 YIELD然后使用牛顿求解器来解决PRICE函数的正确收益和给定的目标价格。 代码价格函数和代码牛顿求解器可以在这个类似的post中find: java实现的excel price,yield函数

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

我试图张贴图像,但我是一个新的用户,它不允许我。

graphics显示公式 。

 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;