Tuesday, August 18, 2020

Valuation of Warrants-Derivative Pricing in Python

A warrant is a financial derivative instrument that is similar to a regular stock option except that when it is exercised, the company will issue more stocks and sell them to the warrant holder.

Warrants and options are similar in that the two contractual financial instruments allow the holder special rights to buy securities. Both are discretionary and have expiration dates. The word warrant simply means to "endow with the right", which is only slightly different from the meaning of option.

Warrants are frequently attached to bonds or preferred stock as a sweetener, allowing the issuer to pay lower interest rates or dividends. They can be used to enhance the yield of the bond and make them more attractive to potential buyers. Warrants can also be used in private equity deals. Frequently, these warrants are detachable and can be sold independently of the bond or stock.

...Warrants issued by the company itself are dilutive. When the warrant issued by the company is exercised, the company issues new shares of stock, so the number of outstanding shares increases. When a call option is exercised, the owner of the call option receives an existing share from an assigned call writer (except in the case of employee stock options, where new shares are created and issued by the company upon exercise). Unlike common stock shares outstanding, warrants do not have voting rights. Read more

The valuation of warrants is similar to the valuation of stock options except that the effect of dilution should be considered. In this post, we first look at the valuation of warrants without the dilution effect. After that, we will discuss the valuation model that takes dilution into account.

The valuation model will be based on Cox, Ross, and Rubinstein (CRR) binomial tree [1]. In 1979, Cox, Ross and Rubinstein proposed a numerical method for pricing American style options using a binomial tree. This is a tree that represents possible paths that might be followed by the underlying asset’s price over the life of the warrant. The model works by dividing the time to expiration into several time intervals. Over each time interval, the model assumes that the price of the underlying asset moves up or down to certain values. The magnitude of these moves is determined by the volatility of the underlying asset and the length of the time step. The time slices and the simulated prices of the underlying asset at these times form the nodes of the binomial tree.

After a binomial tree is built, the valuation of the warrant proceeds as follows,

  1. Calculate the warrant value at each end node of the tree.
  2. Move on to the previous time step and calculate the warrant value at each node on this time slice using the warrant values at the precedent nodes.
  3. After the warrant value is calculated at a node, check whether early exercise is allowed and optimal. The warrant price at this node is then the greater of this value and the payoff of the early exercise.
  4. Continue in this manner until the warrant is valued at all nodes of the tree.
  5. The value at the root node of the tree is the price of the warrant at the valuation date.

We now discuss the dilution effect. If the issuance of warrants was announced publicly, then under the Efficient Market Hypothesis, it is reasonable to assume that the stock price after the announcement already reflects the dilution. In this case, the dilution effect can be ignored in the valuation model.  If, on the other hand, the issuance of warrants was not announced publicly, which is often the case of private companies, then dilution should be taken into account explicitly.

The dilution effect can be accounted for by recalculating the share price at each node (i, j) of the tree as follows,

valuation of warrants with dilution

where and represent the indices of time and stock positions in the tree, respectively,

           N is the number of warrants and,

          K is the strike price.

We implemented the above valuation method in Python.  The input parameters are as follows,

Stock price: 50

Strike: 50

Maturity: 5 years

Risk-free rate: 2%

Volatility: 40%

Number of outstanding shares: 1,000,000

Number of warrants: 50,000

The picture below shows the warrant prices with and without the dilution effect.

valuation of warrants

Follow the link below to download the Python program.

References

[1] Cox, J. C.; Ross, S. A.; Rubinstein, M. (1979). Option pricing: A simplified approach. Journal of Financial Economics. 7 (3): 229.

Post Source Here: Valuation of Warrants-Derivative Pricing in Python

No comments:

Post a Comment