[R-SIG-Finance] sufficient n for a binomial option pricing model

2012-09-06 Thread J Toll
Hi,

I have a question regarding the selection of n, the number of time
steps, in a binomial option pricing model.  I suppose my question is
not strictly related to R.  As larger values should be more accurate,
what I've read on the subject simply suggests that you use a
sufficiently large value for your purposes.  So I've been trying to
evaluate what is a sufficiently large value of n for my purposes.  Is
there any rule of thumb regarding the value of n?

When using the fOptions package CRRBinomialTreeOption function, with
varying n, the price oscillates back and forth converging on a price.
This can be clearly seen through plotting.

require(fOptions)

x - function(n) {

  CRRBinomialTreeOption(TypeFlag = ca,
S = 50,
X = 50,
Time = 1/12,
r = 0.02,
b = 0.02,
sigma = 0.18,
n = n)@price
}

y - sapply(1:100, x)   # mean(y) == 1.079693
plot(y)

Given this oscillation, my question is whether it would be better to
compute two prices using two smaller, consecutive values of n rather
than one large value?  Or is there some other better way?

For example, using n =1000 or 1001, the option prices are within 5
hundredths of a cent, but the calculation is extremely slow for
either.

x(1000)# 1.077408
x(1001)# 1.077926

mean(sapply(1000:1001, x))  # 1.077667

Comparatively, taking the mean of n= 40 and 41 yields a value very
close to the middle of the range, yet is much faster.

mean(sapply(40:41, x)) # 1.0776

It seems like averaging two smaller, consecutive values of n is
basically as accurate and far faster than using large values of n.  I
was hoping someone might have some insight into why this might or
might not be a valid approach.  Thanks.


James

___
R-SIG-Finance@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only. If you want to post, subscribe first.
-- Also note that this is not the r-help list where general R questions should 
go.


Re: [R-SIG-Finance] sufficient n for a binomial option pricing model

2012-09-06 Thread Smith, Dale
One way to terminate is to look at the consecutive differences between
the averages and terminate if the difference is less than your
tolerance. However, you should guard against the case where the
consecutive differences are never less than the tolerance. In this case,
just put in a maximum number of steps n and log the last average, the
number of steps, and a message. This allows the user to determine
whether they want to accept or reject the result.

Thanks,
Dale Smith, Ph.D.
Senior Financial Quantitative Analyst
Risk  Compliance
Fiserv.
107 Technology Park
Norcross, GA 30092
Office: 678-375-5315
Mail: dale.sm...@fiserv.com
www.fiserv.com

-Original Message-
From: r-sig-finance-boun...@r-project.org
[mailto:r-sig-finance-boun...@r-project.org] On Behalf Of J Toll
Sent: Thursday, September 06, 2012 10:25 AM
To: r-sig-finance@r-project.org
Subject: [R-SIG-Finance] sufficient n for a binomial option pricing
model

Hi,

I have a question regarding the selection of n, the number of time
steps, in a binomial option pricing model.  I suppose my question is not
strictly related to R.  As larger values should be more accurate, what
I've read on the subject simply suggests that you use a sufficiently
large value for your purposes.  So I've been trying to evaluate what is
a sufficiently large value of n for my purposes.  Is there any rule of
thumb regarding the value of n?

When using the fOptions package CRRBinomialTreeOption function, with
varying n, the price oscillates back and forth converging on a price.
This can be clearly seen through plotting.

require(fOptions)

x - function(n) {

  CRRBinomialTreeOption(TypeFlag = ca,
S = 50,
X = 50,
Time = 1/12,
r = 0.02,
b = 0.02,
sigma = 0.18,
n = n)@price
}

y - sapply(1:100, x)   # mean(y) == 1.079693
plot(y)

Given this oscillation, my question is whether it would be better to
compute two prices using two smaller, consecutive values of n rather
than one large value?  Or is there some other better way?

For example, using n =1000 or 1001, the option prices are within 5
hundredths of a cent, but the calculation is extremely slow for either.

x(1000)# 1.077408
x(1001)# 1.077926

mean(sapply(1000:1001, x))  # 1.077667

Comparatively, taking the mean of n= 40 and 41 yields a value very close
to the middle of the range, yet is much faster.

mean(sapply(40:41, x)) # 1.0776

It seems like averaging two smaller, consecutive values of n is
basically as accurate and far faster than using large values of n.  I
was hoping someone might have some insight into why this might or might
not be a valid approach.  Thanks.


James

___
R-SIG-Finance@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only. If you want to post, subscribe first.
-- Also note that this is not the r-help list where general R questions
should go.

___
R-SIG-Finance@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only. If you want to post, subscribe first.
-- Also note that this is not the r-help list where general R questions should 
go.


Re: [R-SIG-Finance] sufficient n for a binomial option pricing model

2012-09-06 Thread J Toll
On Thu, Sep 6, 2012 at 9:40 AM, Smith, Dale dale.sm...@fiserv.com wrote:
 One way to terminate is to look at the consecutive differences between
 the averages and terminate if the difference is less than your
 tolerance. However, you should guard against the case where the
 consecutive differences are never less than the tolerance. In this case,
 just put in a maximum number of steps n and log the last average, the
 number of steps, and a message. This allows the user to determine
 whether they want to accept or reject the result.

Dale,

Thanks for the suggested method.  Actually, that's probably overkill
for what I'm trying to do, but it definitely puts the process in
perspective and gives some insight into what I could be doing to boost
the reliability of my pricing.  Thanks again.

Best,

James






 -Original Message-
 From: r-sig-finance-boun...@r-project.org
 [mailto:r-sig-finance-boun...@r-project.org] On Behalf Of J Toll
 Sent: Thursday, September 06, 2012 10:25 AM
 To: r-sig-finance@r-project.org
 Subject: [R-SIG-Finance] sufficient n for a binomial option pricing
 model

 Hi,

 I have a question regarding the selection of n, the number of time
 steps, in a binomial option pricing model.  I suppose my question is not
 strictly related to R.  As larger values should be more accurate, what
 I've read on the subject simply suggests that you use a sufficiently
 large value for your purposes.  So I've been trying to evaluate what is
 a sufficiently large value of n for my purposes.  Is there any rule of
 thumb regarding the value of n?

 When using the fOptions package CRRBinomialTreeOption function, with
 varying n, the price oscillates back and forth converging on a price.
 This can be clearly seen through plotting.

 require(fOptions)

 x - function(n) {

   CRRBinomialTreeOption(TypeFlag = ca,
 S = 50,
 X = 50,
 Time = 1/12,
 r = 0.02,
 b = 0.02,
 sigma = 0.18,
 n = n)@price
 }

 y - sapply(1:100, x)   # mean(y) == 1.079693
 plot(y)

 Given this oscillation, my question is whether it would be better to
 compute two prices using two smaller, consecutive values of n rather
 than one large value?  Or is there some other better way?

 For example, using n =1000 or 1001, the option prices are within 5
 hundredths of a cent, but the calculation is extremely slow for either.

 x(1000)# 1.077408
 x(1001)# 1.077926

 mean(sapply(1000:1001, x))  # 1.077667

 Comparatively, taking the mean of n= 40 and 41 yields a value very close
 to the middle of the range, yet is much faster.

 mean(sapply(40:41, x)) # 1.0776

 It seems like averaging two smaller, consecutive values of n is
 basically as accurate and far faster than using large values of n.  I
 was hoping someone might have some insight into why this might or might
 not be a valid approach.  Thanks.


 James

 ___
 R-SIG-Finance@r-project.org mailing list
 https://stat.ethz.ch/mailman/listinfo/r-sig-finance
 -- Subscriber-posting only. If you want to post, subscribe first.
 -- Also note that this is not the r-help list where general R questions
 should go.

___
R-SIG-Finance@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only. If you want to post, subscribe first.
-- Also note that this is not the r-help list where general R questions should 
go.