def question_4(self): self._qst(4, "How much cash if we sell it all (starting with the expensive NSOs)?") orders = myMeager.sales_orders_all(self.m, nso_first=True, cheap_first=False) self.m.override(self.e.sales_orders, orders) self.rep.print_grants() self.rep.print_tax_summary() print() print("Share Price: $ %.2f" % m.ipo_price_usd) print("NSOs Sold: %s" % comma(m.shares_sold_nso_n, dec=False, white=False)) print("NSO Income: $ %s" % comma(m.nso_income_usd, dec=False, white=False)) print("ISOs Sold: %s" % comma(m.shares_sold_iso_n, dec=False, white=False)) print("ISO Income: $ %s" % comma(m.iso_sales_income_usd, dec=False, white=False)) print("RSUs Sold: %s" % comma(m.shares_sold_rsu_n, dec=False, white=False)) print("RSU Income: $ %s" % comma(m.rsu_income_usd, dec=False, white=False)) print("Sale Income: $ %s" % comma(m.rsu_income_usd + m.nso_income_usd + m.iso_sales_income_usd, dec=False, white=False)) print("Owed: $ %s" % comma(m.outstanding_taxes_usd, dec=False, white=False)) print("We Clear: $ %s"%comma(m.cleared_from_sale_usd, dec=False, white=False)) print() print("This is AFTER paying all outstanding taxes.")
def question_3(self): self._qst(3, "How many RSUs need to be sold to cover tax burden?") needed = int(math.ceil(m.outstanding_taxes_usd / float(m.ipo_price_usd))) print("Share Price: $ %.2f" % m.ipo_price_usd) print("Owed: $ %s" % comma(m.outstanding_taxes_usd, dec=False, white=False)) pct = int((needed * 100) / m.shares_vested_rsu_n) print("Sell: %s ( %5.1f %% )" % ( comma(needed, dec=False, white=False), pct))
def question_1(self): self._qst(1, "How many RSUs will be automatically withheld?") print( """These numbers are for shares vesting throughout the year, since those will affect taxes as well. Shares available on the big day will NOT be affected by RSU withholdings that will happen afterwards. """) held = m.shares_withheld_rsu_n vested = m.shares_vested_rsu_eoy_n rate = round(100.0 * held / float(vested), 1) print("Withholding: %s / %s ( %5.1f %% )" % ( comma(held, dec=False, white=False), comma(vested, dec=False, white=False), rate))
def print_grant(self, on, rate): fmt = """Grant %(name)s Type: %(veh)s Size: %(n)s Strike: %(strike).2f Vested: %(vested)s Withholding: %(witho)s Sold: %(sold)s Liquidated: %(liquid)s Withheld: %(withe)s Available: %(avail)s """ a = { 'name': self.name, 'veh': self.vehicle, 'n': comma(self.n_shares, dec=False, white=False), 'strike': self.strike_usd, 'vested': comma(self.vested(on), dec=False, white=False), 'witho': comma(self.withholding(on, rate), dec=False, white=False), 'sold': comma(self.sold, dec=False, white=False), 'liquid': comma(self.liquidated, dec=False, white=False), 'with': comma(self.withheld, dec=False, white=False), 'avail': comma(self.available(on), dec=False, white=False), } print(fmt % a)
def question_5(self): self._qst(5, "How much cash if we sell the RSUs?") orders = myMeager.sales_orders_rsu(self.m) self.m.override(self.e.sales_orders, orders) self.rep.print_grants() self.rep.print_tax_summary() print() print("We Clear: %s"%comma(m.cleared_from_sale_usd))
def question_8(self): self._qst(7, "We sell nothing on day 1, then the price drops.") # Place an order for all RSUs price = m.ipo_price_usd - 5 orders = myMeager.sales_orders_rsu(self.m, price) self.m.override(self.e.sales_orders, orders) print("Sell Price: $ %s" % comma(price,dec=False,white=False)) print("Cash Cleared: $ %s" % comma(m.cleared_from_sale_usd, dec=False, white=False)) print() price = m.ipo_price_usd orders = myMeager.sales_orders_rsu(self.m, price) self.m.override(self.e.sales_orders, orders) print("Sell Price: $ %s" % comma(price,dec=False,white=False)) print("Cash Cleared: $ %s" % comma(m.cleared_from_sale_usd, dec=False, white=False)) print() price = m.ipo_price_usd + 5 orders = myMeager.sales_orders_rsu(self.m, price) self.m.override(self.e.sales_orders, orders) print("Sell Price: $ %s" % comma(price,dec=False,white=False)) print("Cash Cleared: $ %s" % comma(m.cleared_from_sale_usd, dec=False, white=False)) print()
def question_7(self): self._qst(7, "If we sell all RSUs, how many ISOs can we buy w/o AMT?") # Place an order for all RSUs orders = myMeager.sales_orders_rsu(self.m) self.m.override(self.e.sales_orders, orders) self.rep.print_grants() print() print("Just using the first ISO strike price we find for starters.") cleared = m.cleared_from_sale_usd (amt, n, strike, cost) = self.amt_free_iso() remaining = cleared - cost m.override(self.e.iso_exercise_income_usd, n*(m.ipo_price_usd-strike)) self.rep.print_tax_summary() print("AMT Income Gap: $ %s" % comma(amt, dec=False, white=False)) print("Exercisable shares: %s" % comma(n, dec=False, white=False)) print("Strike Price: $ %s" % comma(strike, dec=True, white=False)) print("Exercise Cost: $ %s" % comma(cost, dec=False, white=False)) print("Cash Cleared: $ %s" % comma(cleared, dec=False, white=False)) print("Cash Remaining: $ %s" % comma(remaining, dec=False, white=False))