Perpetual Options
Igor Hlivka
MUFG Securities International, LONDON
Standard financial options are always expressed in terms of pre-determined maturity. Option's contract life can be as short as few days and can run up to several years. On the other hand, perpetual options, as the name suggests, have no fixed maturity and no exercise limits. This makes perpetual options an interesting class of non-standard financial contracts that is worth examining from both theoretical and practical perspectives.
By construction, perpetual options have to be American [European = exercise only at the option's maturity; American = exercise allowed any time during the life of the contract].
Recall that the value of a standard financial option
i.e. a solution to a PDE:
However, in perpetual option case, the time factor disappears (so does the time-derivative), so PDE becomes an ordinary differential equation
> |
 |
 |
(1) |
where
denotes the stock price,
risk-free interest rate,
= dividend yield and
stock's volatility.
We will ask Maple to solve this ODE in the generic mode:
> |
 |

 |
(2) |
Maple returns the general solution with two constants that need to be determined.
Let's take the coefficients of each parameter:
> |
 |
 |
 |
(3) |
We use these coefficients together with boundary conditions to determine the value of (i) Perpetual Call and (ii) Perpetual Put
- Call boundary condition:
when 
- Put boundary condition:
when 
> |
![plot(eval(r1, [r = 0.5e-1, q = 0.3e-1, sigma = .2]), S = 1 .. 10, title = [](/view.aspx?SI=6688/Perpetual_options_20.gif) |
As graph suggests, the
part of the returned solution is associated with the Perpetual Call Option
> |
![plot(eval(r2, [r = 0.5e-1, q = 0.3e-1, sigma = .2]), S = 1 .. 10, title = [](/view.aspx?SI=6688/Perpetual_options_23.gif) |
On the other hand,
is clearly associated with the Perpetual Put Option
We may also see that the exponent of
is identical in both call and put, just put has an opposite sign. This allows us simplifying the formula for further manipulation.
Perpetual Call
> |
 |
 |
(1.1) |
This is the generic Perpetual Call Option formula with
as a generic exponent in the Call Option formula above. Since the call is American, we can exercise it any time. We can reasonably assume that the holder of this option will exercise it when the stock price in the future
will rise above level
with
Our task is to determine the value of
We know that when
and the holder exercises the option, the option's value will become
where
is the strike price in the standard option notation. From this equation we can determine the value of coefficient Y
> |
![`:=`(YSol, solve(C(S[t]) = `+`(S[t], `-`(K)), Y)); 1](/view.aspx?SI=6688/Perpetual_options_37.gif) |
![`+`(`-`(`/`(`*`(`+`(`-`(S[t]), K)), `*`(`^`(S[t], w)))))](/view.aspx?SI=6688/Perpetual_options_38.gif) |
(1.2) |
We can use this result to determine the value of
> |
 |
![`+`(`-`(`*`(`+`(`-`(S[t]), K), `*`(`^`(S[t], `+`(`-`(w))), `*`(`^`(S, w))))))](/view.aspx?SI=6688/Perpetual_options_41.gif) |
(1.3) |
Our objective is to select the value
such that the option value is maximized before its exercise.
- Take the derivative
![diff(C(S), S[t])](/view.aspx?SI=6688/Perpetual_options_43.gif)
- Set it to zero and solve for
![S[t]](/view.aspx?SI=6688/Perpetual_options_44.gif)
> |
![`:=`(StSol, S[t] = solve(diff(CSol, S[t]) = 0, S[t])); 1](/view.aspx?SI=6688/Perpetual_options_45.gif) |
![S[t] = `/`(`*`(w, `*`(K)), `*`(`+`(`-`(1), w)))](/view.aspx?SI=6688/Perpetual_options_46.gif) |
(1.4) |
This is the desired value of
. The reader can see that the exercise value
is stock price-independent and is the function of option's strike
and the exponent.
Once
has been determined, we can substitute it into
> |
![`:=`(YRes, simplify(subs(S[t] = rhs(StSol), YSol))); 1](/view.aspx?SI=6688/Perpetual_options_58.gif) |
 |
(1.5) |
This is the value of coefficient
from the generic Perpetual Call Option formula. With this substitution, the call option will now become:
> |
 |
 |
(1.6) |
This is the optimal value of
that maximizes the value of the Perpetual Call Option for all
. With substitutions, the final formula then becomes:
> |
 |
> |
![plot3d(eval(CPerp, [r = 0.5e-1, q = 0.3e-1, sigma = .2]), S = 1 .. 10, K = 10 .. 1, title = [](/view.aspx?SI=6688/Perpetual_options_72.gif)
![plot3d(eval(CPerp, [r = 0.5e-1, q = 0.3e-1, sigma = .2]), S = 1 .. 10, K = 10 .. 1, title = [](/view.aspx?SI=6688/Perpetual_options_73.gif) |
How about the exercise strategy in practice? Is is worth exercising Perpetual Call Option?
- When option is exercised, the holder will receive

- The value of the option will always be equal to

- We can compare two strategies in dynamic setting - by varying
and 
As option's payoff is linear, one can easily see that the value of the option will always be worth at the least the same as the immediate exercise:
This simply confirms that it is never optimal to exercise the Perpetual Call Option
Perpetual Put
> |
 |
 |
(2.1) |
This is the generic Perpetual Put Option formula. Again, we want to find the value
that will trigger an exercise when the stock price falls below that level:
> |
![`:=`(ZSol, solve(P(S[t]) = `+`(K, `-`(S[t])), Z)); 1](/view.aspx?SI=6688/Perpetual_options_88.gif) |
![`/`(`*`(`+`(`-`(S[t]), K)), `*`(`^`(S[t], w)))](/view.aspx?SI=6688/Perpetual_options_89.gif) |
(2.2) |
> |
 |
![`*`(`+`(`-`(S[t]), K), `*`(`^`(S[t], `+`(`-`(w))), `*`(`^`(S, w))))](/view.aspx?SI=6688/Perpetual_options_91.gif) |
(2.3) |
The level of
has to be determined s.t. the option value is maximized prior to exercise.
> |
![`:=`(StSol2, S[t] = solve(diff(PSol, S[t]) = 0, S[t])); 1](/view.aspx?SI=6688/Perpetual_options_93.gif) |
![S[t] = `/`(`*`(w, `*`(K)), `*`(`+`(`-`(1), w)))](/view.aspx?SI=6688/Perpetual_options_94.gif) |
(2.4) |
> |
![`:=`(ZRes, simplify(subs(S[t] = rhs(StSol2), ZSol))); 1](/view.aspx?SI=6688/Perpetual_options_95.gif) |
 |
(2.5) |
Similar to the Call Option case, this is the the value of
that maximizes the value of Perpetual Put Option for
> |
 |
> |
![plot3d(eval(PPerp, [r = 0.5e-1, q = 0.3e-1, sigma = .2]), S = 1 .. 10, K = 10 .. 1, title = [](/view.aspx?SI=6688/Perpetual_options_106.gif)
![plot3d(eval(PPerp, [r = 0.5e-1, q = 0.3e-1, sigma = .2]), S = 1 .. 10, K = 10 .. 1, title = [](/view.aspx?SI=6688/Perpetual_options_107.gif) |
This is the Perpetual Put Option value as function of
and
. As expected, the put value is the highest when strike is high and stock price is low.
Closed-from solution allows sensitivities to be computed analytically. Let Maple calculate the Perpetual Put Delta:
We can also compare the option value and the option payoff when
- Take the difference between the two
- Differentiate it w.r.t
![S[t]](/view.aspx?SI=6688/Perpetual_options_123.gif)
- Substitute it back into
definition
> |
![`:=`(ValDiff, `+`(PSol, `+`(`-`(K), S))); 1; `:=`(DDiff, simplify(diff(ValDiff, S[t]))); 1; simplify(subs(S[t] = rhs(StSol2), DDiff)); 1](/view.aspx?SI=6688/Perpetual_options_125.gif) |
What is the point of this?
- When
, the option's delta and option's payoff delta are identical. This implies that the Perpetual Put Option value is maximized by the exercise strategy where delta at
exists and is continuous.
As we can see, the delta is continuous at various strike levels, so the conditions for optimal strategy are satisfied.
Conclusion
Perpetual options are unusual in terms of specification as the key attribute - maturity is absent. Being American, perpetual options present additional complexity in terms of determining the optimal execution strategy. As researchers and market practitioners alike tend to point out, the American options create an undetermined boundary problem that is unknown and needs to be solved as a part of finding general / particular solution.
The demonstration application shows that Maple is perfectly suited for this task and can return the desired solution quickly and efficiently.
Legal Notice: The copyright for this application is owned by the authors. Neither Maplesoft nor the authors are responsible for any errors contained within and are not liable for any damages resulting from the use of this material. This application is intended for non-commercial, non-profit use only. Contact the authors for permission if you wish to use this application in for-profit activities.