4
$\begingroup$

Although Solve can solve FinancialBond for an input parameter (e.g. par) given the price of a bond:

Solve[FinancialBond[
{"FaceValue" -> par, "Coupon" -> 0.08, "Maturity" -> 15, 
"CouponInterval" -> 1/2},
{"InterestRate" -> 0.06, "Settlement" -> 0}] == 1722.25, par]
{{par -> 1440.}}

it fails to solve FinancialDerivative for volatility given the price of an option:

Solve[FinancialDerivative[{"American", 
"Call"}, {"StrikePrice" -> 103., 
"Expiration" -> 1},  {"InterestRate" -> 0.01, 
"Volatility" -> vol, "CurrentPrice" -> 100, "Dividend" -> 0.0}] ==
26, vol]
Solve::ivar: 0.22745` is not a valid variable. >>
Solve[False, 0.22745]

This is a serious problem. Am I doing it wrong? Is it a known bug that Wolfram Research is working on??

$\endgroup$
10
  • 2
    $\begingroup$ Is it a known bug that Wolfram Research is working on?? is most appropriate for a W forum or for W support. How on Earth could We:know? $\endgroup$ Commented Feb 25, 2016 at 4:28
  • $\begingroup$ It looks to me like vol has the value 0.22745. Try it after executing Clear[vol];. $\endgroup$
    – Ymareth
    Commented Feb 25, 2016 at 8:29
  • $\begingroup$ @Ymareth It might seem that way, but if you use 0.22745 as the value for volatility, the option price FinancialDerivative returns is 8.044 $\endgroup$ Commented Feb 25, 2016 at 12:21
  • $\begingroup$ @Dr.belisarius The Stack Exchangers often know what's considered a bug. $\endgroup$ Commented Feb 25, 2016 at 12:25
  • $\begingroup$ @GeorgeWolfe What we usually do is try the code on our OSs/MMa versions and try (many times subjectively) to decide whether it is a bug or not, and then tag the question accordingly. But we usually don't know if WR is/will be working on it. $\endgroup$ Commented Feb 25, 2016 at 12:36

1 Answer 1

4
$\begingroup$

And the answer is ... I didn't know how to use the function. If you provide the the price of the option as a parameter, e.g. "Value"->10, and ask for implied volatility, the function will return it.

 FinancialDerivative[{"American", "Call"}, {"StrikePrice" -> 103.,"Expiration" -> 1,
"Value" -> 10},  {"InterestRate" -> 0.01,"CurrentPrice" -> 100, "Dividend" -> 0.0},
"ImpliedVolatility"]

 0.275842

I got this answer from Wolfram Research Technical Support. It's in the documentation, but it's easy to miss. It's an example in the Scope section. Also, FinancialDerivative will return a list of parameters for each option type.

FinancialDerivative[{"European", "Call"}]
{{"StrikePrice","Expiration"},{"CurrentPrice","Dividend","Volatility","InterestRate"}}
$\endgroup$
2
  • $\begingroup$ good answer, indeed +1; But did they answer why is there a difference in approach between Bonds and Derivatives? $\endgroup$
    – garej
    Commented Mar 6, 2016 at 14:07
  • $\begingroup$ @garej The answer came in a notebook that was a modification of one I sent to the tech rep that was helping me. I didn't want to engage him in an extended conversation, so I didn't ask. FinancialBond might work that way too, but I was in the middle of a project and needed to get back to it, so I didn't experiment. $\endgroup$ Commented Mar 6, 2016 at 14:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.