2009-04-29 18 views
2

Le complément d'Excel nommé "Analysis ToolPak" fournit la fonction "Yield" pour le calcul du rendement sur la sécurité qui paie des intérêts périodiques.Implémentation .NET de la fonction Excel Yield

La fonction fonctionne bien et renvoie les données correctes.

Ma compréhension est fonction de base sur le type d'itération il n'est pas si facile de l'implémenter dans mon code.

Ma question est quelqu'un de savoir/vu la mise en œuvre en C# (éventuellement d'autres langues) et peut partager? Ou (peut-être) quelques conseils pour l'implémenter? Que je ne peux pas partager :)

EDIT:

Merci à tous me affichant "formule", mais ce n'est pas tout à fait utile pour moi.
S'il vous plaît noter que la formule « MS trouve son application dans 1 cas seulement:
"quand il y a une période de coupon ou moins jusqu'au rachat",

autrement:

« (...) Rendement est calculé à travers une centaine d'itérations. "
et il n'y a pas de formule exacte pour ce cas

Je peux lire les équations et les mettre en œuvre (je l'espère), mais ma question était de savoir si quelqu'un a vu ou fonction déjà mis en œuvre dans un langage de programmation.

Je ne suis pas paresseux, mais je n'aime briser les portes ouvertes ...

Répondre

0

Voici la formule si vous ne souhaitez pas parcourir les pages Web.

J'ai essayé d'afficher l'image mais je suis un nouvel utilisateur et il ne m'a pas permis.

Graphic showing formula.

+0

C'est la même image dans la page I lié à précédemment. – leppie

+0

Je sais que je voulais juste montrer le lien dans ce post mais n'a pas pu.Les utilisateurs peuvent visualiser le graphique seul ou sur la page entière s'ils ont besoin de comprendre le raisonnement qui le sous-tend. –

+0

Quand je dis lien je veux dire graphique. –

1

En supposant une fonction qui est passé toutes les variables nécessaires à la formule comme expliqué à la

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

puis

return (((redemption/100 + rate/frequency) - (par/100 + (A/E * rate/frequency)))/(par/100+(A/E * rate/frequency))) * ((frequency*E)/DSR); 
+0

Et si vous l'avez lu, vous auriez vu que cela ne fonctionne que pour un sous-ensemble d'entrées, essayez à nouveau! – leppie

+0

Comment calculons-nous ces variables A, E et DSR? – Burhan

1

D'abord, vous avez besoin d'une mise en œuvre de la fonction de prix. YIELD utilise ensuite un Newton Solver pour résoudre la fonction PRIX pour le rendement correct et un prix cible donné. code pour la fonction de prix et le code pour le solveur Newton se trouve dans ce poste similaire: java implementation of excel price,yield functions

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;