Skip to content

Instantly share code, notes, and snippets.

@jiaaro
Created April 10, 2016 18:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jiaaro/5542d4465b59abc40e806a2498db9973 to your computer and use it in GitHub Desktop.
Save jiaaro/5542d4465b59abc40e806a2498db9973 to your computer and use it in GitHub Desktop.

If you've ever wondered what it's be like to "go indie" here is a script with some assumptions that might help you project your income.

Assumptions:

  • You will make a new app every month
  • Apps have a useful life of 3 years (after that they stop earning money)
  • Apps will earn $250 in their launch month
  • Apps will earn $100/mo at first (starting month 2), but that revenue will slowly decline (~50% each year)
  • As you make more apps your brand/mailing list will start to pay dividends (after 4 apps you'll see the numbers above double, after 8 they'll 3x, and so on)

So how would that work out?

month 1 | revenue: 250.0
month 2 | revenue: 344.387431268
month 3 | revenue: 687.045270299
month 4 | revenue: 1035.13388922
month 5 | revenue: 1386.04478469
month 6 | revenue: 1736.71313349
month 7 | revenue: 2084.63797487
month 8 | revenue: 2427.91506563
month 9 | revenue: 2765.12898444
month 10 | revenue: 3095.24447245
month 11 | revenue: 3417.51898742
month 12 | revenue: 3731.4357774

  **************************************************
  ** year 1 | annual revenue: 22961.2057712
  **************************************************

month 13 | revenue: 4036.65311276
month 14 | revenue: 4332.96561035
month 15 | revenue: 4620.27451444
month 16 | revenue: 4898.56463824
month 17 | revenue: 5167.88630392
month 18 | revenue: 5428.34107588
month 19 | revenue: 5680.0704048
month 20 | revenue: 5923.2465299
month 21 | revenue: 6158.06515109
month 22 | revenue: 6384.73950091
month 23 | revenue: 6603.49553321
month 24 | revenue: 6814.56800943

  **************************************************
  ** year 2 | annual revenue: 66048.8703849
  **************************************************

month 25 | revenue: 7018.19731096
month 26 | revenue: 7214.62684296
month 27 | revenue: 7404.10092172
month 28 | revenue: 7586.86305991
month 29 | revenue: 7763.15457995
month 30 | revenue: 7933.21349918
month 31 | revenue: 8097.27364067
month 32 | revenue: 8255.56393176
month 33 | revenue: 8408.30785906
month 34 | revenue: 8555.72305393
month 35 | revenue: 8698.0209869
month 36 | revenue: 8835.40675284

  **************************************************
  ** year 3 | annual revenue: 95770.4524399
  **************************************************

month 37 | revenue: 8968.07893196
month 38 | revenue: 9034.31221408
month 39 | revenue: 9098.82495516
month 40 | revenue: 9161.70428553
month 41 | revenue: 9223.03088007
month 42 | revenue: 9282.87958056
month 43 | revenue: 9341.3199448
month 44 | revenue: 9398.41673267
month 45 | revenue: 9454.2303374
month 46 | revenue: 9508.81716963
month 47 | revenue: 9562.23
month 48 | revenue: 9614.51826577

  **************************************************
  ** year 4 | annual revenue: 111648.363298
  **************************************************

month 49 | revenue: 9665.72834576
month 50 | revenue: 9715.90380758
month 51 | revenue: 9765.08563031
month 52 | revenue: 9813.31240557
month 53 | revenue: 9860.6205195
month 54 | revenue: 9907.04431764
month 55 | revenue: 9952.61625472
month 56 | revenue: 9997.36703097
month 57 | revenue: 10041.3257164
month 58 | revenue: 10084.519864
month 59 | revenue: 10126.9756139
month 60 | revenue: 10168.7177878

  **************************************************
  ** year 5 | annual revenue: 119099.217294
  **************************************************
import math
def brand_boost(num_apps):
"""
Boost from having a good brand.
for 4 apps launched: 2x revenue
for 8 apps launched: 3x revenue
for 16 apps launched: 4x revenue
"""
if num_apps == 1:
return 1.0
return math.log(num_apps, 2)
def app_revenue(launch_revenue=100.0, launch_boost=150.0):
"""
Each yeah revenue falls by 50%
launch_boost is a one time gain attributed to the revenue
spike at launch
"""
# Launch Month
m = 0
while True:
if m > 36:
yield 0.0
continue
yield launch_revenue * (0.5**(m / 12.0)) + launch_boost
m += 1
launch_boost = 0
def gross_revenue(apps_per_month=1):
apps = []
i = 0
while True:
i += 1
for _ in range(apps_per_month):
apps.append(app_revenue())
revenue = sum(app.next() for app in apps)
revenue *= brand_boost(len(apps))
print "month", i, "|", "revenue:", revenue
yield revenue
def annual_revenue(apps_per_month=1):
years = 0
rev_generator = gross_revenue(apps_per_month)
while True:
years += 1
this_year_revenue = sum(
rev_generator.next()
for _ in range(12)
)
print "\n ", "*" * 50
print " ** year", years, "| annual revenue:", this_year_revenue
print " ", "*" * 50
print
yield
r = annual_revenue()
# year 1, 2, 3, 4, 5
for _ in range(5):
r. next()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment