For tech startups, the most critical ingredient is access to talent. Without this, growth can be severely impaired. The market for talent is competitive and unrelenting as key staff are constantly being head hunted. Multinationals, financial institutions and established tech companies all battle to secure the most promising employees, particularly for scarce technical know-how. With elevated salaries, scintillating benefits, and job security, how can startups compete? One key advantage startups hold over the titans is the lure of a small company culture and vision. It’s exhilarating to be part of a close-knit team, on a mission to spawn something truly innovative – and this can be a considerable attraction for talent. Startups can also offer a more potent benefit: ownership.
Stock option grants are one of the key reasons Silicon Valley has been so successful. The way you dangle the carrot is sometimes as important as the size of that carrot. Small startups with meager cash resources have managed to attract some of the world’s best talent because there was a chance to own a stake in a company that could ultimately become enormously valuable. Small companies often do not have the financial depth to offer high performing employees salaries commensurate with their mature, publicly traded peers. They must attract and retain employees through other means, including the bestowing of greater responsibility, flexibility and visibility. Above all else, incentives count. Stock options align interests across the key stakeholders. Private companies may also use stock options to pay vendors and consultants and conserve cash in the process. Please check out this video below to see how private companies globally can achieve this end.
For incentives to work, employees must be able to attribute value to those Stock options. This implies knowing the value of the piece paper of paper that says you have a claim on your company. The Black Scholes (1973) model and lattice models are viewed as the appropriate valuation tools that comply with international accounting standards. Lattice models are generally considered to provide a sounder theoretical treatment. Accountants nevertheless commonly rely on Black and Scholes (1973) because considerable costs are incurred in switching to a binomial/lattice framework. (We eliminate some of these computational costs with the model developed below.) For a slightly more technical explanation but still highly intuitive:
The implementation outlined below demonstrates how ESOs can be valued with VBA code. VBA code is protable to Excel so anyone can introduce the Function into Excel. Also, I include in a pdf link to the valuation algorithm if needs be. Hull and White (2004) developed a lattice pricing model that furnished a methodology for estimating ESOs. A key downside however relates to technical issues regarding convergence and speed. For accurate valuation the Hull and White (2004) model can take several hours to produce verifiable results given oscillation. We improve on that model and dynamically specify a lattice array that spares computer memory and reduces dramatically estimation time. This implies small businesses can within a spreadsheet run their own estimation and not be totally reliant on consultants/experts to make the estimation and even sometimes judgement calls. See VBA code and video for implementation below. The volatility input for the model can be estimated using GARCH, Implied Volatility, Volatility Surface or by using a methodology consistent with estimating the 30-day VIX. All of these have been described and implemented in this portal.
// The VBA code available here; you can redistribute it and/or// modify it under the terms of the GNU General Public License// as published by the Free Software Foundation.// Please cite:Byrne, Brian and Shang, Qianru and Zhang, Yinqiu, Accounting for Employee Stock Options: Accelerating Convergence (January 9, 2018). Available at SSRN: https://ssrn.com/abstract=3098879or http://dx.doi.org/10.2139/ssrn.3098879
// The code is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.// http://www.fsf.org/copyleft/gpl.htmlFunction Dyn_Trun_HWBL(Stock As Double, X As Double, T As Double, Vest As Double,_Interest As Double, Sigma As Double, Divrate As Double, Exitrate As Double,_ Multiple As_ Double, n As Integer) Dim dt As Double, r As Double, u As Double, d As Double,_p As Double, StoppingOpt As Double,i As Integer, j As Integer, VestInt As Integer, Condition As Integer, NumZero As Integer, NumStopping As Integer 'Boyle and Lau For i = 1 To n If n < Int((i ^ 2 * Sigma ^ 2 * T) / (Log(Multiple * X / Stock)) ^ 2) Then n = Int((i ^ 2 * Sigma ^ 2 * T) / (Log(Multiple * X / Stock)) ^ 2) Exit For End If Next ReDim Opt(n) dt = T / n r = Exp(Interest * dt) u = Exp(Sigma * Sqr(dt)) d = 1 / u p = (Exp((Interest - Divrate) * dt) - d) / (u - d) VestInt = Int(Vest / dt) 'The last column in the vesting period NumZero = Int((Log(X / Stock) / Log(u) + n) / 2) NumStopping = Application.Ceiling((Log(X * Multiple / Stock) / Log(u) + n) / 2, 1) Finish = NumStopping - 1 'Distinguish two conditions: StoppingOpt = Stock * u ^ (2 * NumStopping - n) - X Condition = 0 If Stock * u ^ (2 * (NumStopping - 1) - (n - 1)) >= X * Multiple Then StoppingOpt = Stock * u ^ (2 * (NumStopping - 1) - (n - 1)) - X Condition = 1 End If 'Defining the option value of nodes at the maturity For i = 0 To NumStopping - 1 If i <= NumZero Then Opt(i) = 0 Else Opt(i) = Stock * u ^ (2 * i - n) - X End If Next i 'Option Pricing Loop For j = n - 1 To 0 Step -1 'Start: Truncate "zero" region If j >= n - NumZero Then Start = NumZero - (n - 1 - j) Else Start = 0 End If 'Option pricing after vesting period If j > VestInt Then 'Finish: Truncate "redundant proactive early exercise" region (St>=Multiple*X) If Finish <= j Then If (n - j) Mod 2 = 0 Then If Condition = 0 Then Finish = Finish - 1 If Condition = 1 Then Opt(Finish + 1) = StoppingOpt Else If Condition = 0 Then Opt(Finish + 1) = StoppingOpt If Condition = 1 Then Finish = Finish - 1 End If ElseIf Finish > j Then 'No proactive early exercise at j column Finish = j End If 'No proactive early exercise, only passive early exercise (St<Multiple*X) For i = Start To Finish Opt(i) = ((1 - Exitrate * dt) * (p * Opt(i + 1) + (1 - p) * Opt(i))) / r + _ Exitrate * dt * Application.Max(Stock * u ^ (2 * i - j) - X, 0) Next 'Option values of proactive early exercise nodes at (Vest/dt+1) columnn If j = VestInt + 1 Then For i = Finish + 1 To j Opt(i) = Stock * u ^ (2 * i - j) - X Next End If 'Option pricing during vesting period ElseIf j <= VestInt Then For i = Start To j Opt(i) = ((1 - Exitrate * dt) * (p * Opt(i + 1) + (1 - p) * Opt(i))) / r Next End If Next Dyn_Trun_HWBL = Opt(0) End Function