Print Page  
Financials / Income Statement
StkOptExp(offset,type[,NAHandling])
Full Description

Stock-based compensation represents employee compensation paid through equity instruments (stock options, restricted stock units, etc.) rather than cash. This creates a unique accounting situation where expenses are recognized without corresponding cash outflows. The accounting rules require companies to:

  1. Record an expense on the income statement (StkOptExp) - showing the economic cost
  2. Add it back on the cash flow statement (StkOptCF) - because no cash was actually spent

StkOptExp

StkOptExp is the expense companies record for employee stock compensation like stock options and restricted stock. This cost appears on the income statement as an operating expense that reduces earnings. The expense reflects the fair value of stock awards given to employees, spread out over the time period when employees earn the right to use them (the vesting period).

Key Characteristics:

  • Appears primarily within SG&A (Selling, General & Administrative) or R&D in the income statement, and reduces operating income and net income
  • Non-cash expense representing the fair value of equity awards
  • Recognized over the vesting period using fair value at grant date
  • Directly impacts reported earnings and EPS

StkOptCF

StkOptCF is the stock-based compensation adjustment that appears in the operating activities section of the cash flow statement. This function addresses the accounting treatment of stock-based compensation, which is a non-cash expense that reduces net income on the income statement but must be added back when calculating cash flow from operations.

Key Characteristics:

  • Appears in operating activities section of cash flow statement
  • Added back to net income when calculating cash from operations
  • Reconciles the non-cash expense from the income statement
  • No actual cash leaves the company for this expense

Key Differences

Aspect StkOptExp StkOptCF
Financial Statement Income Statement Cash Flow Statement
Impact Reduces net income Increases operating cash flow
Purpose Shows economic cost to shareholders Adjusts for non-cash charge
Direction Expense (negative) Add-back (positive)

Practical Applications

Financial Analysis Uses

  • Profitability Analysis: Use StkOptExp to understand true operating costs including dilution
  • Cash Flow Analysis: Use StkOptCF to calculate actual cash generation
  • Valuation Models: Both factors needed for accurate DCF and earnings adjustments
  • Peer Comparison: Compare compensation structures and their financial impacts

Common Analytical Adjustments

  • Adjusted EBITDA: Often adds back StkOptExp to show earnings before this non-cash charge
  • Free Cash Flow: StkOptCF ensures FCF reflects actual cash available
  • Non-GAAP Earnings: Companies may exclude StkOptExp from adjusted earnings metrics
  • Return on Capital: Consider whether to include StkOptExp in operating income calculations

Important Relationships

Expected Relationship

  • Over time, StkOptCF and StkOptExp should converge, but may differ in any given period due to grant timing, forfeitures, or classification nuances
  • Both represent the same economic transaction from different perspectives
  • Analysts often expect alignment, but timing mismatches can confuse without understanding these potential differences

Potential Differences

  • Timing: Recognition differences between statements
  • Classification: Expenses may be allocated differently
  • Tax Effects: Tax benefits may create variations
  • Forfeitures: Changes in forfeiture estimates affect amounts

 


Source and Availability

The data points come from SEC filings or earnings announcements of a company (click here for the line-item reference spreadsheet). Since the data is "standardized" by the data provider the exact number may not exist in the original source. The data is usually a single line-item (see the link at the end for an excel spreadsheet with details). There are two access methods: prebuilt factors and using a function syntax.

When using the function syntax you specify the historical period using parameters in parenthesis as follows:

function(offset,type[,NAHandling])

offset: 0-20 (for interim) 0-10 (for annual)
type: QTR (for interim), ANN (for annual), TTM (for trailing twelve months)
NAHandling: [FALLBACK],KEEPNA,ZERONA

For types QTR & ANN the value is taken straight out of the filing with the corresponding offset, ex: 0 is most recent, 1 is previous, etc. TTM types are computed in two ways: for income and cash flow statement values are calculated by adding four quarterly values. For balance sheet items, TTM is the average of the trailing four quarters.

The NAHandling parameter is optional and is used to control what happens in preliminary reports where many items could be missing. Preliminary reports are press releases by the company and only affect the most recent ("0") offset period. They can last several weeks and can cause false signals due to incomplete data (see "CompleteStmt" for a way to identify companies with preliminary data).

Three options are available when an NA is found in a preliminary report:

 

FALLBACK this is the default. When an NA is encountered the value is pulled from the offset "1" period.
KEEPNA do nothing. NAs will be preserved, which can cause the entire expression to fail.
ZERONA NAs are converted to 0


Pre-built factors are available for convenience and correspond to the following formula syntax:

 

Period Description Corresponding Parameters
Q Recent Quarter (0, QTR)
PQ Prior Quarter (1, QTR)
PYQ Prior Year quarter (4, QTR)
TTM Trailing Twelve Months (0, TTM)
PTM Prior Trailing Twelve Months (4, TTM)
A Recent Annual (0, ANN)
PY Prior Year (1, ANN)
Gr%PQ Growth % PQ (0, QTR) / (1, QTR)
Gr%PYQ Growth % PYQ (0, QTR) / (4, QTR)
Gr%TTM Growth % TTM (0, TTM) / (4, TTM)
Gr%PQTTM Growth % TTM 1Q Ago (0, TTM) / (1, TTM)
Gr%A Growth % Annual (0, ANN) / (1, ANN)
Gr%3Y Growth % 3 year (0, ANN) / (3, ANN) annualized
Gr%5Y Growth % 5 year (0, ANN) / (5, ANN) annualized
Gr%10Y Growth % 10 year (0, ANN) / (10, ANN) annualized
RSD%ANN RSD % 10Y of annuals LoopRelStdDev
("function(CTR,ANN)",10,0,1,1))
RSD%TTM RSD % 5Y of TTM LoopRelStdDev
("function(CTR*2,TTM)",10,0,1,1))
RegEstTTM Regression Est 5Y Eval(LinReg("function(CTR * 2, TTM)", 10)
, EstimateY(0), NA)
RegGr%TTM Regression Gr% 5Y Eval(LinReg("function(CTR * 2, TTM)", 10)
,RegGr%(2), NA)
RegEstANN Regression Est 10Y Eval(LinReg("function(CTR, ANN)", 10)
, EstimateY(0), NA)
RegGr%ANN Regression Gr% 10Y Eval(LinReg("function(CTR, ANN)", 10)
,RegGr%(1), NA)
%SalesQ % of Q Sales function(0, QTR) / Sales(0, QRT)
%SalesA % of A Sales function(0, ANN) / Sales(0, ANN)
%AssetQ % of Q Assets function(0, QTR) / AstTot(0, QRT)
%AssetA % of A Assets function(0, ANN) / AstTot(0, ANN)
3YAvg 3 Year Average LoopAvg("function(CTR, ANN)", 3)
5YAvg 5 Year Average LoopAvg("function(CTR, ANN)", 5)


NOTE: PTM offset is 4 , not 1, since it uses interim periods

Click Here for the Line-Item Reference Spreadsheet.