First of many Rookie questions sorry: Finally broke free of Mathematica and
gone for real OO programing, and up 2 grand a year to boot !

Problem concerns the use of nls function mostly but I have used an example
from finance that is similar to my aim:

Using an fOptions PlainVanillaOptions function [slightly edited]:

GBSOption =
function(TypeFlag = c("c", "p"), S, X, Time, r, b, sigma)
{   
    TypeFlag = TypeFlag[1]
    d1 = ( log(S/X) + (b+sigma*sigma/2)*Time ) / (sigma*sqrt(Time))
    d2 = d1 - sigma*sqrt(Time)
    if (TypeFlag == "c")
        result = S*exp((b-r)*Time)*CND(d1) - X*exp(-r*Time)*CND(d2)
    if (TypeFlag == "p")
        result = X*exp(-r*Time)*CND(-d2) - S*exp((b-r)*Time)*CND(-d1)

    # Parameters:
    param = list()
    param$TypeFlag = TypeFlag
    param$S = S
    param$X = X
    param$Time = Time
    param$r = r
    param$b = b
    param$sigma = sigma


    # Return Value:
    result
}

Lets assume you wanted to solve for a volatility that gives nls across a
range of data you had [optiontype, underlying, strike, time, premium]
(forget the ³why would you²!)

I find that using the nls function in manner:

nls(premium ~ GBSOption(optiontype, underlying, strike, time, 0, 0,
x),data=testdata)

Is problematic

I would like the nls function to scroll through a list of different types of
optiontypes, c(³c²,²c²,²p²,...) for example.

I have little understanding how nls treats IF commands in general and how it
treats a list of non-numerical flags. Any help on this would great.
Apologies again for what I am sure is a simple question.

Glenn




	[[alternative HTML version deleted]]

