Skip to content

Instantly share code, notes, and snippets.

JD Maturen jdmaturen

Block or report user

Report or block jdmaturen

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@jdmaturen
jdmaturen / company-ownership.md
Last active Feb 18, 2020
Who pays when startup employees keep their equity?
View company-ownership.md

Who pays when startup employees keep their equity?

JD Maturen, 2016/07/05, San Francisco, CA

As has been much discussed, stock options as used today are not a practical or reliable way of compensating employees of fast growing startups. With an often high strike price, a large tax burden on execution due to AMT, and a 90 day execution window after leaving the company many share options are left unexecuted.

There have been a variety of proposed modifications to how equity is distributed to address these issues for individual employees. However, there hasn't been much discussion of how these modifications will change overall ownership dynamics of startups. In this post we'll dive into the situation as it stands today where there is very near 100% equity loss when employees leave companies pre-exit and then we'll look at what would happen if there were instead a 0% loss rate.

What we'll see is that employees gain nearly 3-fold, while both founders and investors – particularly early investors – get dilute

View keybase.md

Keybase proof

I hereby claim:

  • I am jdmaturen on github.
  • I am jdmaturen (https://keybase.io/jdmaturen) on keybase.
  • I have a public key whose fingerprint is A95A 6A67 8A9C 7701 272D 7CBD 126A 7513 766A 6932

To claim this, I am signing this object:

View gist:46b6b67dfca6ff6a2343

Heads or Tails Extended

In fact, only 2 out of 2,862 broad domestic stock funds were able to outperform their peers consistently over five years, according to one measure: performance in the top quartile of funds over five consecutive 12-month periods ended in March 2014. That translates to just 0.07 percent of the funds, which means that more than 99.9 percent of funds fell short of that feat.

Repeat those double flips five times and you’ll find the probability of a mutual fund ending up in the top quartile five times in a row through chance: 0.098 percent. (We’re flipping the coin twice for each year of mutual fund performance.) That’s a bigger probability than the 0.07 percent scored by the actual funds. This means that if mutual fund managers had just flipped coins, roughly three of them — not two — would have been expected to end up in the top quartile for five years in a row.

Indeed:

>>> 100 * .25 ** 5
@jdmaturen
jdmaturen / example_output
Last active Aug 29, 2015
From an individual box's viewpoint probabilistically limit the global concurrency of requests of a given actor based on observed local concurrency, the cluster size, and a set threshold.
View example_output
burp-2:foo jd$ python probabilistic_strategy.py 1000 16 64
request_count: 1000 cluster_size: 16 threshold: 64
probability of being quotad at a given local concurrency:
1 0.015070684079
2 0.07629533815
3 0.202571187171
4 0.378831226431
mean observed global concurrency limit: 64.033
@jdmaturen
jdmaturen / nps.py
Created Oct 30, 2014
Two methods of estimating confidence and error in NPS results. One uses the beta distribution as the conjugate prior to the Bernoulli distribution. The other uses the central limit theorem and standard error calculation. The latter can also correct for finite population size.
View nps.py
import math
import numpy as np
from scipy.stats import beta
def nps_beta_dist(sample_size, promoters, detractors, confidence=95):
"""
Confidence range of NPS score. NPS score is defined as the percent of promoters
minus the percent of detractors. See also http://en.wikipedia.org/wiki/Net_Promoter
View roi.sql

On the relative value of startup stock

How do you compare the potential value of different stage companies? And as a company progresses what is the appropriate amount of stock to give new employees?

Using data from Crunchbase and Yahoo Finance we can calculate the average value created per company broken down by how much money they have raised. From this we can then compute relative returns at the different stages, e.g. $1M raised, $10M, $100M, etc.

tl;dr

For this exercise we'll calibrate relative to expected return from a company that's raised $1M.

@jdmaturen
jdmaturen / vacuum.py
Last active Dec 28, 2015
Vacuum up Crunchbase
View vacuum.py
"""
Get a bunch of Crunchbase data, but respect the API limits.
Author JD Maturen
Apache 2 License
"""
import logging
from random import random
import sys
@jdmaturen
jdmaturen / bg_nbd.py
Created Oct 16, 2013
Implementation of the beta-geometric/NBD (BG/NBD) model from '"Counting Your Customers" the Easy Way: An Alternative to the Pareto/NBD Model' (Fader, Hardie and Lee 2005) http://brucehardie.com/papers/018/fader_et_al_mksc_05.pdf and accompanying technical note http://www.brucehardie.com/notes/004/
View bg_nbd.py
"""
Implementation of the beta-geometric/NBD (BG/NBD) model from '"Counting Your Customers" the Easy Way: An Alternative to
the Pareto/NBD Model' (Fader, Hardie and Lee 2005) http://brucehardie.com/papers/018/fader_et_al_mksc_05.pdf and
accompanying technical note http://www.brucehardie.com/notes/004/
Apache 2 License
"""
from math import log, exp
import numpy as np
@jdmaturen
jdmaturen / sbg.py
Last active Jan 23, 2020
Implementation of the shifted beta geometric (sBG) model from "How to Project Customer Retention" (Fader and Hardie 2006) http://www.brucehardie.com/papers/021/sbg_2006-05-30.pdf Apache 2 License
View sbg.py
"""
Implementation of the shifted beta geometric (sBG) model from "How to Project Customer Retention" (Fader and Hardie 2006)
http://www.brucehardie.com/papers/021/sbg_2006-05-30.pdf
Apache 2 License
"""
from math import log
View gist:6234333
burp:~ jd$ curl --referer http://t.co/ -is i.imgur.com/7RsFUmL.jpg
HTTP/1.1 302 Moved Temporarily
Server: cloudflare-nginx
Date: Wed, 14 Aug 2013 18:58:01 GMT
Content-Type: text/html
Content-Length: 165
Connection: keep-alive
Location: http://imgur.com/7RsFUmL
CF-RAY: 9dfdfc465cb0707
You can’t perform that action at this time.