Login  Register

Re: yield calculation failing when resulting yield should be less than -54.4%

Posted by Peter Caspers-4 on Oct 10, 2014; 8:03pm
URL: http://quantlib.414.s1.nabble.com/yield-calculation-failing-when-resulting-yield-should-be-less-than-54-4-tp15932p15957.html

... and a yearly compounded yield y is between -1 and +inf since these
two are linked by c = ln ( 1 + y ), so you have to adjust the lower
bound in this case, yes.
Peter

On 10 October 2014 21:31, Peter Caspers <[hidden email]> wrote:

> Hi,
> this was only for diagnostic purposes, not a final solution we should
> put in the code. I'd have to check your specific case, but in general
> I would think that a yield could be in the range from -inf to +inf: If
> you have -1 today (pay 1 unit) and receive a > 0 at t=1, the
> continuous yield would be -ln(1/a) which goes to -inf if a goes to
> zero and to +inf if a goes to +inf. No ?
> best regards
> Peter
>
>
> On 8 October 2014 17:41, ltorjul <[hidden email]> wrote:
>> Hi,
>>
>> Thanks for your answer!
>>
>> I tested your suggestion and changed line 968 in the cashflows.cpp file to:
>> return solver.solve(objFunction, accuracy, guess, -10.0 , 10.0);
>>
>> This causes the error:
>> root not bracketed: f[-10,10] -> [-1.#IND00e+000,5.999990e+004]
>>
>> I guess the reason is that a root of -10 cannot exist. If you look at the
>> question from a financial perspective, you can off course loose you entire
>> investment (Which would give a yield of -100%), but you could never get in
>> the situation where you owe money (i.e. yield cannot be < -100%). Not sure
>> if this makes any sense to you.
>>
>> Anyway I tested with:
>> return solver.solve(objFunction, accuracy, guess, -1.0 , 10.0);
>> and this seems to work. I'm able to calculate yield in those extreme cases
>> where yield is less than -54.4%.
>>
>> I have also tested the unmodified yield function with a difference initial
>> guess, e.g.
>> yield(frb, cleanPrice, dayCounter, QuantLib::Compounded, coupCompfrequency,
>> settlementDate, 1e-8, 100, *-0.80*)
>>
>> and it seems that using an initial guess of -.8 (-80%) "moves" the limit
>> where the problem occures to about -91%. This however this causes the solver
>> to work about 15% slower :-(
>>
>> Anyway I like the solution where you sets the upper and lower limits better.
>>
>> I'm good with this solution. But if you have other ideas or remarks I would
>> be very grateful.
>>
>> Regards Laurtiz
>>
>>
>>
>>
>> --
>> View this message in context: http://quantlib.10058.n7.nabble.com/yield-calculation-failing-when-resulting-yield-should-be-less-than-54-4-tp15932p15952.html
>> Sent from the quantlib-dev mailing list archive at Nabble.com.
>>
>> ------------------------------------------------------------------------------
>> Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
>> Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
>> Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
>> Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
>> http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
>> _______________________________________________
>> QuantLib-dev mailing list
>> [hidden email]
>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev

------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://p.sf.net/sfu/Zoho
_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev