Skip to content

Stock Compensation

A job can pay part of its compensation in restricted stock units (RSUs). In FinZot an RSU grant belongs to one earned income stream (income streams). The grant pays shares of a company stock as it vests. Every vest is wages of the job’s owner in the year it vests. A grant is one of two kinds. A grant you have already exists, and you enter its vests from your brokerage statement. Future grants have not been made yet. They cover refreshes and a promotion or new-hire grant you expect.

A company stock is a custom asset based on a catalog fund. The app bases it on VTSAX. The stock’s returns follow that fund year by year. You can give the stock its own expected return and volatility under Market Returns (asset return overrides).

The stock has a Price per share. Enter the closing price on or just before the plan start. FinZot counts grants you have and held shares in shares. It values them at this price.

You enter and edit held shares in the stock editor: on the Income page, the pencil beside the stock under Stock Compensation (Edit price and shares held). It lists every account that holds the stock, plus the account where kept shares go.

Shares you already hold usually go in an Employer stock plan account. This is a taxable account that holds the company stock. When cash runs short, FinZot draws on it after your other brokerage accounts (account types). When you enter shares and no account holds the stock, they go in the taxable account whose target allocation includes the stock, if one does (other than your default account). If none does, FinZot creates a stock plan account for them.

Enter each lot from your broker’s current positions: Acquired, Shares, Cost/share and Cost basis. Cost/share and Cost basis are linked, in either order: the one you type last is kept, and the other follows from the shares. The plan stores each lot’s total cost basis, which is cost per share × shares, not the per-share figure. Changing a lot’s shares keeps the one you typed last, or for a lot already saved, its cost per share. Value is the shares at the price per share.

Shares can also be held outside the stock plan account, for example in a standard brokerage account or a 401(k). The stock editor shows the shares in each account, and you can change them there. On the Investments page a holding in shares shows its count and value, and you edit it in shares there too. A retirement account holds the stock as one amount, with no lots or cost basis. Like any other holding, it rebalances to the account’s target allocation each year, so its share count changes unless the target matches what it holds.

Changing the price keeps every share count and changes what the shares are worth. An amount entered in dollars stays in dollars, and the price does not change it. Any lot or holding of the stock can be switched between shares and dollars. Switching restates it at the current price, in shares to four decimal places or in dollars to the cent, and keeps its cost basis and acquired date. Check a converted count against your broker’s.

The price can’t be removed while any account holds shares of the stock or a grant pays in it.

A grant you have is its Vest schedule: every vest date and the shares that vest on it. Enter the shares before any are sold for tax. Fill from pattern fills an even schedule from the total shares, the vesting start, the length, the frequency, and a cliff. You can then adjust any row to match your broker.

The plan start date decides which rows count.

  • A vest in an earlier year than the plan start is not in the plan.
  • A vest on or after the plan start is projected.
  • A vest after January 1 but before a mid-year plan start already happened. It needs its Price at vest. It counts toward that year’s wages at that price. It moves no cash, because the money is already in your balances.

Future grants are a dollar amount per grant, repeated on a schedule. First grant is the date of the first one. It is always on or after the plan start. Grants sets how many follow.

  • While the job lasts. A grant falls on each anniversary of the first until the job ends.
  • Through a date. A grant falls on each anniversary, the last one on or before that date.
  • Once. A single grant falls on the first grant date.

Value of each grant can be a Specific Amount, Phased, or a Custom Variable. A Specific Amount starts Inflation Adjusted, so each grant keeps its value in today’s dollars (inflation and dollars). Phase years count from the first grant. A future grant cannot be a percentage of salary. Twice-yearly refreshes are two entries, each with half the value.

FinZot turns each grant’s dollar value into shares at the stock’s price on the grant date. It estimates that price from the year’s opening and closing prices, as if the stock moved at a steady rate through the year. A lower price buys more shares. Take a $60,000 grant on March 15, with the stock opening the year at $100. If it closes the year at $120, the grant date price is $103.77 and the grant is 578 shares. If it closes at $80, the price is $95.58 and the grant is 628 shares.

Each grant vests on a preset or on Custom steps. A step is a number of months after the grant and a share of the grant. The steps add up to 100%. Each vest falls on the same day of the month as the grant, or on the month’s last day.

FinZot makes a future grant only in a month the job is active. It makes none in or after the year the owner dies. To compare a plan with and without refreshes, switch the future grants off in one scenario.

Every vest is wages of the job’s owner. It is taxed as ordinary income and pays Social Security and Medicare tax and state tax. Vests and salary share one Social Security wage base. Vests also count as earnings on the owner’s Social Security record. FinZot pays the tax on vests with the rest of the year’s tax bill (income taxes).

A projected vest is valued at the stock’s closing price for its year, not its price on the vest day. If 100 shares vest in May and the stock closes the year at $120, the vest is $12,000 of wages. A sold vest and a kept vest are valued the same way.

Vests do not count as pay for the job’s 401(k) contributions or employer match. They do not count toward HSA payroll contributions either.

When shares vest decides what happens to each vest.

  • Sell them. Every vest is sold right away. The whole vest is cash the plan can use that year.
  • Keep them. The vest goes into the Employer stock plan account. Shares withheld for tax is the percent of each vest sold at vest. It starts at 40%. The sold shares are cash. Enter 0 if you pay the tax in cash.

If you keep shares and have no stock plan account, FinZot creates one. A kept share is a lot dated its vest day. Its cost basis is the price its vest was taxed at. A kept share sold in its vest year is a short-term gain (allocation, lots, and selling).

If you leave this job decides what happens to shares still unvested when the job ends. The default is Forfeit unvested shares. Keep vesting on schedule lets every later vest happen on its date. Some plans allow this for retirement-eligible employees.

If you die offers Forfeit unvested shares or Vest everything that year. With the second, every unvested share vests on December 31 of the year of death. Many grant agreements that forfeit on leaving vest everything on death.

FinZot checks job dates by month. A vest in the job’s first month or its last month counts as vested. A vest dated before the job starts never vests. Any vest in the year the owner dies counts as vested, since FinZot cannot place a death within its year.

When the plan has a company stock, changing the date adds a Company Stock step (plan start date).

Price per share is the stock’s price on the new start. Leave it blank to keep the old price. Shares you hold keep their count and are worth the new price. Amounts entered in dollars keep their value. If the stock plan account looks short after the change, shares kept from vests between the old and new dates are missing. FinZot does not add them. After saving, add them in shares as lots in the stock editor on the Income page.

Future grants dated before the new start have been made, or skipped. Each one is listed under Grants scheduled before the new date.

  • Granted. Enter the Shares granted from your brokerage statement. FinZot records it as a grant you have, named with its date, such as “Annual refresh (Mar 15, 2025)”. It vests on the same steps. You can adjust its vests on the Income page afterward.
  • Not granted. Nothing is recorded for that date, and later grants are unaffected.

The future grants then move to their next grant date. If no grant is left, they come off the list. A Phased value shifts so each later grant keeps its size. A Custom Variable is not adjusted, so check it still sizes each grant as intended. The grants you record are switched on in every scenario, including one where the future grants are switched off: a grant you were given is a fact, not a what-if.

A mid-year start also lists Vests since Jan 1. Each date needs the stock’s price on that day. These prices only affect the first year’s taxes. Use for every vest fills them all with one price when an approximate first-year tax is enough.

  • A single company’s own risk is not modeled. The stock rises and falls in the same years as its parent fund. A Custom Volatility makes those moves larger or smaller but keeps them in step. Two company stocks based on the same fund move together.
  • Stock options and ESPP shares are not modeled. Only RSUs are.
  • Vests land on the grant’s day of the month. If your employer vests on a fixed day that differs from the grant day, each projected vest can be up to a month off.

You can query each vest, each grant FinZot makes from future grants, and the unvested shares at each year-end in the equity_grant_vest, equity_grant_issue, and equity_grant_unvested tables. The shares held of a company stock at each year-end are ending_shares in account_asset_balance, with beginning_shares beside it, and a lot’s shares still held are lot_remaining_shares in balance. Each is set only for a company stock. A lot entered in dollars counts as the shares its dollars bought at the plan-start price. The other quantity columns (beginning_quantity, ending_quantity, lot_remaining_quantity) count units worth $1 at plan start, not shares.