vesting

calculate stock vesting

Usage no npm install needed!

<script type="module">
  import vesting from 'https://cdn.skypack.dev/vesting';
</script>

README

One-Year Cliff

var vested = require('vesting')(
  48, // Denominator of fraction of total earned monthly
  4   // Denominator of fraction of total earned at cliff
      // Cliff at 1-year anniversary by default
)
var assert = require('assert')

// Before 1 year
assert.equal(
  vested(
    1000000,              // Total shares
    new Date(2015, 0, 1), // Start date
    new Date(2015, 0, 2)  // Last work day
  ),
  0
)

// At 1 year
assert.equal(
  vested(
    1000000,
    new Date(2015, 0, 1),
    new Date(2016, 0, 1)
  ),
  250000
)

// Monthly after the cliff
assert.equal(
  vested(
    1000000,
    new Date(2015, 0, 1),
    new Date(2016, 1, 1)
  ),
  250000 + 15625
)

// Fully vested
assert.equal(
  vested(
    1000000,
    new Date(2015, 0, 1),
    new Date(2020, 0, 1)
  ),
  1000000
)

n-Year Cliff

// 7-year cliff
var vested = require('vesting')(48, 4, 7)

assert.equal(
  vested(
    1000000,
    new Date(2015, 0, 1),
    new Date(2015, 0, 2)
  ),
  0
)

// After 1 year
assert.equal(
  vested(
    1000000,
    new Date(2015, 0, 1),
    new Date(2016, 0, 1)
  ),
  0
)

// After 7 years
assert.equal(
  vested(
    1000000,
    new Date(2015, 0, 1),
    new Date((2015 + 7), 0, 1)
  ),
  250000
)

Straight (No Cliff)

var vested = require('vesting')(48)

assert.equal(
  vested(
    4800000,
    new Date(2015, 0, 1),
    new Date(2015, 1, 1)
  ),
  100000
)