**FactSet Formula Guide**

**Intro**
You have full access to FactSet through the Excel Add-In, but you should only pull FactSet data **when the user explicitly tells you to**. FactSet integrates over 200 databases to analyze markets, companies, and industries. You can retrieve any data point—fundamentals, estimates, ownership, pricing, screening, and more—by writing FDS formulas directly in Excel cells.

**IMPORTANT:** Before completing a task involving FactSet, you must verify:
1. Your FactSet formulas do not return errors (check for #Calc errors and refresh if needed).
2. All values should seem reasonable and make intuitive sense based on your general knowledge of companies and finance.
3. Use cell references for tickers and periods when possible as opposed to hardcoded values into the formula.

You should essentially gut check every value that shows up. If there are any errors or the values seem wrong, you likely wrote the formula syntax incorrectly or are misinterpreting the data. Please correct the formula until it outputs the proper value. After you make the proper corrections, there may still be errors, but they should be because of the underlying FactSet data, not your formula syntax.

---

**FactSet Formula Syntax**

**1. Basic FDS Formula Format**
Use this when you need ticker and data point.
Format: =FDS("TICKER-EXCHANGE","DATA_ITEM(PARAMETERS)")
Example: =FDS("AAPL-US","FG_PRICE(0)")
(Meaning: pull Apple's most recent closing price.)

**IMPORTANT:** Ticker symbols use the format: TICKER-EXCHANGE (e.g., AAPL-US, IBM-NYS, MSFT-NAS, BP-GB).

**2. Common Exchange Codes**
- US = United States (consolidated — covers all US exchanges)
- NYS = New York Stock Exchange
- NAS = NASDAQ
- GB = Great Britain (London)
- JP = Japan
- DE = Germany
- FR = France
- CA = Canada
- HK = Hong Kong
- AU = Australia

**3. Formula Code Prefixes**
FactSet uses different prefixes for different data categories:

| Prefix | Database | Description |
|--------|----------|-------------|
| FG_ | FactSet Global | Common/general codes (pricing, market data, ratios) |
| FF_ | FactSet Fundamentals | Financial statement data |
| FE_ | FactSet Estimates | Consensus estimates and forecasts |
| P_ | Pricing | Historical price data |
| OS_ | Ownership | Institutional/insider ownership summary |

---

**4. Period/Date Arguments**

**Relative Period Notation:**
- 0 = Most recent period
- -1 = One period prior
- -2 = Two periods prior
- +1 = One period forward (for estimates)
- +2 = Two periods forward (for estimates)

**Period Type Codes:**
- D = Days (e.g., 0D = today, -5D = 5 days ago)
- W = Weeks
- M = Months
- Q = Quarters (e.g., 0Q = most recent quarter, -1Q = prior quarter)
- Y = Years (e.g., 0Y = most recent year, -1Y = prior year)

**Period Type Arguments:**
- ANN or ANN_R = Annual (reported)
- QTR or QTR_R = Quarterly (reported)
- SEMI or SEMI_R = Semi-annual (reported)
- LTM = Last Twelve Months
- YTD = Year to Date
- NTM = Next Twelve Months

---

**5. Reporting Type Arguments**
- RF = Latest Fully Reported (restated/final)
- RP = Latest Preliminary for Reported Period (default)
- LFR = Latest as Filed/Reported

---

**6. Currency Conversion**

**For Fundamentals (FF_ prefix):**
Add currency code as the last parameter inside the parentheses.
=FDS("BP-GB","FF_SALES(ANN,0Y,,,RF,USD)")
→ BP's annual sales converted to USD.

**For Historical Data (P_ prefix with CURR override):**
=FDS("BP-GB","P_PRICE(0D,,,USD)")
→ BP's price converted to USD.

**Currency Conversion Table:**

| Data Type | Syntax | Example |
|-----------|--------|---------|
| Fundamentals | Currency as last param | `FF_SALES(ANN,0Y,,,RF,USD)` |
| Pricing | Currency in P_ params | `P_PRICE(0D,,,USD)` |
| FG_ codes | No direct conversion | Compute manually using FX rate |

**FX Rates:**
=FDS("EURUSD-FX1","P_PRICE(0D)")
→ Spot EUR/USD exchange rate.

=FDS("EURUSD-FX1","P_PRICE(-30D)")
→ EUR/USD rate 30 days ago.

**Common FX Pair Tickers:**
EURUSD-FX1, GBPUSD-FX1, USDJPY-FX1, USDCHF-FX1, AUDUSD-FX1, USDCAD-FX1

**IMPORTANT:** FG_ codes (like FG_PRICE, FG_MKT_VAL) return values in the security's local currency. To convert, either use P_PRICE with a currency parameter or multiply by an FX rate manually.

---

**7. Forward Estimate Periods**

Use FE_ESTIMATE with positive relative periods to pull consensus estimates.

**Fiscal Year Estimates:**
=FDS("AAPL-US","FE_ESTIMATE(EPS,MEAN,ANN,+1)")
→ FY+1 (next fiscal year) mean EPS estimate.

=FDS("AAPL-US","FE_ESTIMATE(EPS,MEAN,ANN,+2)")
→ FY+2 mean EPS estimate.

=FDS("AAPL-US","FE_ESTIMATE(EPS,MEAN,ANN,+3)")
→ FY+3 mean EPS estimate.

**Quarterly Estimates:**
=FDS("AAPL-US","FE_ESTIMATE(EPS,MEAN,QTR,+1)")
→ Next quarter mean EPS estimate.

=FDS("AAPL-US","FE_ESTIMATE(EPS,MEAN,QTR,+2)")
→ Quarter after next mean EPS estimate.

**Current Period Estimate:**
=FDS("AAPL-US","FE_ESTIMATE(EPS,MEAN,ANN,0)")
→ Current fiscal year mean EPS estimate.

**NTM (Next Twelve Months):**
=FDS("AAPL-US","FE_ESTIMATE(EPS,MEAN,NTM,0)")
→ NTM blended mean EPS estimate.

**Estimate Statistics:**

| Statistic | Description | Example |
|-----------|-------------|---------|
| MEAN | Average of broker estimates | `FE_ESTIMATE(EPS,MEAN,ANN,+1)` |
| MEDIAN | Median of broker estimates | `FE_ESTIMATE(EPS,MEDIAN,ANN,+1)` |
| MIN | Lowest estimate | `FE_ESTIMATE(EPS,MIN,ANN,+1)` |
| MAX | Highest estimate | `FE_ESTIMATE(EPS,MAX,ANN,+1)` |
| STDEV | Standard deviation | `FE_ESTIMATE(EPS,STDEV,ANN,+1)` |
| COUNT | Number of brokers | `FE_ESTIMATE(EPS,COUNT,ANN,+1)` |
| UP | Number revised upward | `FE_ESTIMATE(EPS,UP,ANN,+1)` |
| DOWN | Number revised downward | `FE_ESTIMATE(EPS,DOWN,ANN,+1)` |

**Available Estimate Items:**
| Item | Description |
|------|-------------|
| EPS | Earnings Per Share |
| SALES | Revenue |
| EBITDA | EBITDA |
| EBIT | EBIT |
| NET_INCOME | Net Income |
| DPS | Dividends Per Share |
| CFPS | Cash Flow Per Share |
| BV | Book Value Per Share |
| FCF | Free Cash Flow |
| CAPEX | Capital Expenditures |
| ROE | Return on Equity |
| ROA | Return on Assets |

**Note:** Without a relative period, FE_ESTIMATE defaults to the current period. Always specify +1, +2, etc. explicitly for forward estimates.

---

**8. Example Formulas (Natural Language Interpretations)**

**Pricing Data (FG_ prefix):**
=FDS("AAPL-US","FG_PRICE(0)")
→ Apple's most recent closing price.

=FDS("MSFT-US","FG_MKT_VAL")
→ Microsoft's market capitalization.

=FDS("GOOGL-US","P_PRICE(-5D)")
→ Alphabet's stock price 5 days ago.

**Fundamentals Data (FF_ prefix):**
=FDS("AAPL-US","FF_SALES(ANN,0Y,,,RF)")
→ Apple's most recent annual revenue (as reported).

=FDS("AMZN-US","FF_EBITDA(LTM)")
→ Amazon's last twelve months EBITDA.

=FDS("NVDA-US","FF_NET_INCOME(QTR,0Q,,,RF)")
→ Nvidia's most recent quarterly net income.

=FDS("TSLA-US","FF_EPS(ANN,0Y,,,RF)")
→ Tesla's most recent annual EPS.

=FDS("META-US","FF_GROSS_PROFIT(ANN,-1Y,,,RF)")
→ Meta's prior year gross profit.

**Compound Formulas (Ratios):**
=FDS("BP-GB","FF_ENTRPR_VAL(ANN,0Y,,,RF)/FF_SALES(ANN,0Y,,,RF)")
→ BP's Enterprise Value / Sales ratio.

=FDS("AAPL-US","P_PRICE(0D)/FF_EPS(ANN,0Y,,,RF)")
→ Apple's P/E ratio (current price / annual EPS).

**Estimates Data (FE_ prefix):**
=FDS("AAPL-US","FE_ESTIMATE(EPS,MEAN,ANN,+1)")
→ Apple's mean EPS estimate for next fiscal year.

=FDS("MSFT-US","FE_ESTIMATE(SALES,MEDIAN,QTR,+1)")
→ Microsoft's median revenue estimate for next quarter.

**Using Cell References:**
=FDS(A1,"FG_PRICE(0)")
→ Retrieves price for ticker in cell A1.

=FDS("AAPL-US",B1)
→ Retrieves data item specified in cell B1 for Apple.

---

**9. FactSet Fundamentals (FF_) Data Items**

**Income Statement:**
| Value | FactSet Variable |
|-------|------------------|
| Total Revenue/Sales | FF_SALES |
| Cost of Goods Sold | FF_COGS |
| Cost of Goods Sold (excl. D&A) | FF_COGS_XDEP |
| Gross Profit | FF_GROSS_PROFIT |
| Operating Income | FF_OPER_INC |
| EBITDA | FF_EBITDA |
| EBIT | FF_EBIT |
| Net Interest Expense | FF_NET_INT_EXP |
| Pretax Income | FF_PRETAX_INC |
| Income Tax Expense | FF_TAX |
| Net Income | FF_NET_INCOME |
| Net Income (Continuing Ops) | FF_NET_INC_CONT |
| Diluted EPS | FF_EPS |
| Basic EPS | FF_BASIC_EPS |
| Diluted Shares Outstanding | FF_SHS_DILUTED |
| Basic Shares Outstanding | FF_SHS_BASIC |
| Dividends Per Share | FF_DPS |
| R&D Expense | FF_RD_EXP |
| SG&A Expense | FF_SGA |
| Depreciation & Amortization | FF_DEP_AMORT |

**Balance Sheet:**
| Value | FactSet Variable |
|-------|------------------|
| Cash & Equivalents | FF_CASH |
| Short-Term Investments | FF_ST_INVEST |
| Total Cash & ST Investments | FF_CASH_ST |
| Accounts Receivable | FF_ACCTS_REC |
| Inventory | FF_INVENTORIES |
| Total Current Assets | FF_CURR_ASSETS |
| Net PP&E | FF_NET_PPE |
| Gross PP&E | FF_GROSS_PPE |
| Goodwill | FF_GOODWILL |
| Intangible Assets | FF_INTANGIBLES |
| Total Assets | FF_ASSETS |
| Accounts Payable | FF_ACCTS_PAY |
| Short-Term Debt | FF_ST_DEBT |
| Current Portion of LT Debt | FF_CURR_PORT_DEBT |
| Total Current Liabilities | FF_CURR_LIAB |
| Long-Term Debt | FF_LT_DEBT |
| Total Debt | FF_DEBT |
| Total Liabilities | FF_LIAB |
| Common Equity | FF_COM_EQ |
| Total Equity | FF_SHLDRS_EQ |
| Book Value Per Share | FF_BV_PS |
| Tangible Book Value | FF_TBV |
| Tangible Book Value Per Share | FF_TBV_PS |
| Retained Earnings | FF_RETAIN_EARN |
| Minority Interest | FF_MINORITY_INT |

**Cash Flow Statement:**
| Value | FactSet Variable |
|-------|------------------|
| Cash from Operations | FF_OPER_CF |
| Capital Expenditures | FF_CAPEX |
| Cash from Investing | FF_INVEST_CF |
| Cash from Financing | FF_FINAN_CF |
| Free Cash Flow | FF_FREE_CF |
| Dividends Paid | FF_DIV_CF |
| Stock Repurchases | FF_REPURCH |
| Debt Issued | FF_DEBT_ISSUED |
| Debt Repaid | FF_DEBT_REPAID |
| Net Change in Cash | FF_NET_CHG_CASH |

**Ratios & Metrics:**
| Value | FactSet Variable |
|-------|------------------|
| Return on Equity | FF_ROE |
| Return on Assets | FF_ROA |
| Return on Invested Capital | FF_ROIC |
| Gross Margin | FF_GROSS_MGN |
| Operating Margin | FF_OPER_MGN |
| EBITDA Margin | FF_EBITDA_MGN |
| Net Profit Margin | FF_NET_MGN |
| Asset Turnover | FF_ASSET_TURN |
| Inventory Turnover | FF_INV_TURN |
| Current Ratio | FF_CURR_RATIO |
| Quick Ratio | FF_QUICK_RATIO |
| Debt/Equity | FF_DEBT_EQ |
| Debt/EBITDA | FF_DEBT_EBITDA |
| Interest Coverage | FF_INT_COV |
| Altman Z-Score | FF_ZSCORE |
| Enterprise Value | FF_ENTRPR_VAL |

---

**10. FactSet Global/Pricing (FG_ and P_) Data Items**

| Value | FactSet Variable |
|-------|------------------|
| Last Price | FG_PRICE |
| Market Value/Cap | FG_MKT_VAL |
| Enterprise Value | FG_ENTRPR_VAL |
| Volume | FG_VOLUME |
| 52-Week High | FG_HIGH_52W |
| 52-Week Low | FG_LOW_52W |
| Beta (5-Year) | FG_BETA |
| Dividend Yield | FG_DIV_YLD |
| P/E Ratio | FG_PE |
| Price/Book | FG_PB |
| Price/Sales | FG_PS |
| EV/EBITDA | FG_EV_EBITDA |
| EV/Sales | FG_EV_SALES |
| Historical Price | P_PRICE |
| Historical Volume | P_VOLUME |
| High Price | P_PRICE_HIGH |
| Low Price | P_PRICE_LOW |
| Open Price | P_OPEN |
| Close Price | P_PRICE_CLOSE |
| GICS Industry | FG_GICS_INDUSTRY |
| GICS Sector | FG_GICS_SECTOR |
| Shares Outstanding | FG_SHARES |
| Float | FG_FLOAT |

---

**11. FactSet Estimates (FE_) Data Items**

**Using FE_ESTIMATE Function:**
Format: FE_ESTIMATE(ITEM,STATISTIC,PERIOD_TYPE,RELATIVE_PERIOD)

See Section 7 for the full estimate statistics table, available estimate items, and basic FY/QTR/NTM examples.

**Additional Estimate Examples:**

=FDS("AAPL-US","FE_ESTIMATE(EPS,COUNT,ANN,+1)")
→ Number of analysts covering Apple for next FY EPS.

=FDS("AAPL-US","FE_ESTIMATE(EPS,MAX,ANN,+1) - FE_ESTIMATE(EPS,MIN,ANN,+1)")
→ Spread between highest and lowest EPS estimate (estimate dispersion).

---

**12. Ownership Data (OS_)**

**Top Holders:**
=FDS("AAPL-US","OS_TOP_HLDR_NAME(3,0D,,MTD,,F,SEC)")
→ Top 3 institutional holders of Apple.

**Ownership Metrics:**
| Value | Description |
|-------|-------------|
| OS_TOP_HLDR_NAME | Top holder names |
| OS_TOP_HLDR_SHARES | Shares held by top holders |
| OS_INST_PCT | Institutional ownership % |
| OS_INSIDER_PCT | Insider ownership % |
| OS_TOP_HLDR_PCT | % of shares held by top holders |

**Ownership Examples:**
=FDS("AAPL-US","OS_INST_PCT")
→ Institutional ownership percentage.

=FDS("AAPL-US","OS_TOP_HLDR_NAME(10,0D,,MTD,,F,SEC)")
→ Top 10 institutional holders.

---

**13. Time Series Data (ExtractFormulaHistory and FDSTABLE)**

**Single Point in Time:**
=FDS("AAPL-US","P_PRICE(-30D)")
→ Apple's price 30 days ago.

=FDS("AAPL-US","P_PRICE(-1Y)")
→ Apple's price 1 year ago.

**Historical Fundamentals:**
=FDS("AAPL-US","FF_SALES(ANN,-1Y,,,RF)")
→ Apple's revenue from 1 year ago.

=FDS("AAPL-US","FF_SALES(ANN,-2Y,,,RF)")
→ Apple's revenue from 2 years ago.

**FDSTABLE:**
FDSTABLE adds a refreshable table of FactSet data. It is primarily used via the FactSet Sidebar:
1. Click FactSet tab > Insert Formula > FDSTABLE
2. Select securities, data items, and date range
3. Click Insert — data spills into a table

**ExtractFormulaHistory (for programmatic time series via the FactSet Formula API — not a direct Excel cell formula):**
Use F.ExtractFormulaHistory for multi-security, multi-field time series:
=F.ExtractFormulaHistory("AAPL-US,MSFT-US","P_PRICE(-5,0,Q)","-5:0:Q")
→ Quarterly prices for Apple and Microsoft over last 5 quarters.

**Maximum Historical Data:** 20 years

---

**14. Real-Time Data (FDSLIVE)**

For real-time streaming data, use FDSLIVE instead of FDS:
=FDSLIVE("AAPL-US","FG_PRICE")
→ Apple's real-time price (updates automatically).

=FDSLIVE("AAPL-US","RTP_PRICE")
→ Apple's real-time last traded price.

=FDSLIVE("AAPL-US","RTP_PRICE_BID")
→ Apple's real-time bid price.

=FDSLIVE("AAPL-US","RTP_PRICE_ASK")
→ Apple's real-time ask price.

**FX Real-Time:**
=FDSLIVE("EURUSD-FX1","RTP_PRICE")
→ Real-time EUR/USD rate.

---

**15. FQL (FactSet Query Language)**

FQL is FactSet's advanced formula language for time series, screening, and complex calculations. It is accessed via FDS formulas or the Formula API.

**Time Series with FQL:**
=FDS("AAPL-US","P_PRICE(-5,0,Q,USD)")
→ Apple's quarterly prices over last 5 quarters in USD.

=FDS("AAPL-US","FF_EPS(QTR,-5,0,Q,,USD)")
→ Apple's quarterly EPS over last 5 quarters.

**FQL Functions:**
| Function | Description | Example |
|----------|-------------|---------|
| AVG() | Average over range | `AVG(P_PRICE(-250,0,D))` |
| MAX() | Maximum over range | `MAX(P_PRICE(-250,0,D))` |
| MIN() | Minimum over range | `MIN(P_PRICE(-250,0,D))` |
| STD() | Standard deviation | `STD(P_PRICE(-250,0,D))` |
| BETA() | Beta calculation | `BETA('\\SP50\\',-0,-59M,M)` |
| RANK() | Rank within universe | Used in screening |

**Computed Ratios:**
=FDS("AAPL-US","P_PRICE(0D)/FF_EPS(ANN,0Y,,,RF)")
→ Trailing P/E ratio (computed).

=FDS("AAPL-US","FF_ENTRPR_VAL(ANN,0Y,,,RF)/FF_EBITDA(LTM)")
→ EV/LTM EBITDA (computed).

---

**16. Screening**

FactSet provides Universal Screening through the application (not directly through =FDS formulas). To screen in Excel:

1. Open FactSet Sidebar > Universal Screening
2. Define your universe (e.g., S&P 500)
3. Add criteria (e.g., P/E < 15, ROE > 20%)
4. Export results to Excel

**Index Members:**
=FDS("SP50-US","FG_CONSTITUENTS")
→ S&P 500 constituent list (if available through your FactSet subscription).

**Building Comp Tables Manually:**
1. List tickers in column A (A2:A10)
2. =FDS(A2,"FG_PRICE(0)") in B2
3. =FDS(A2,"FG_PE") in C2
4. =FDS(A2,"FG_EV_EBITDA") in D2
5. Drag formulas down for all tickers

---

**17. Field Return Types & Formatting**

**Percentage Fields** (return whole numbers, e.g., 25.0 means 25%):
- FF_GROSS_MGN, FF_OPER_MGN, FF_EBITDA_MGN, FF_NET_MGN
- FF_ROE, FF_ROA, FF_ROIC
- FG_DIV_YLD, OS_INST_PCT, OS_INSIDER_PCT
- **Rule:** Do NOT apply Excel `0.00%` format (would show 2500% instead of 25%). Display as-is or use custom format `0.0"%"`.

**Currency Amount Fields** (return raw values in reporting currency):
- FF_SALES, FF_EBITDA, FF_EBIT, FF_NET_INCOME, FF_OPER_CF, FF_CAPEX, FF_FREE_CF
- FF_CASH, FF_DEBT, FF_ASSETS, FF_LIAB, FF_ENTRPR_VAL
- FG_MKT_VAL, FG_ENTRPR_VAL

**Ratio Fields** (return dimensionless multiples):
- FG_PE, FG_PB, FG_PS, FG_EV_EBITDA, FG_EV_SALES
- FF_CURR_RATIO, FF_QUICK_RATIO, FF_DEBT_EQ, FF_DEBT_EBITDA, FF_INT_COV

**Per-Share Fields** (small currency values):
- FF_EPS, FF_BASIC_EPS, FF_DPS, FF_BV_PS, FF_TBV_PS
- FG_PRICE, P_PRICE

---

**18. Common Pitfalls**

| Pitfall | What Happens | Fix |
|---------|-------------|-----|
| Wrong exchange code | Using "AAPL-NYS" instead of "AAPL-US" or "AAPL-NAS" | Use "-US" for consolidated US data; check exchange code if specific exchange needed |
| #Calc error | Formula hasn't been evaluated yet | Refresh via FactSet tab > Refresh > Selection or All FDS Codes |
| FG_ codes don't accept currency | `FG_PRICE` ignores currency parameters — always returns local currency | Use `P_PRICE(0D,,,USD)` for currency-converted prices |
| ANN vs QTR period mismatch | Pulling quarterly data with ANN period type returns wrong values | Match period type to your intended frequency |
| RP vs RF reporting confusion | RP = preliminary (may change), RF = final restated | Use RF for confirmed data, RP for most recent available |
| FE_ESTIMATE period off by one | 0 = current period, +1 = next period — some users confuse this | 0 = current unreported FY, +1 = next FY, -1 = most recently reported FY |
| Excel % format on FactSet % fields | Shows 2500% instead of 25% (FactSet returns 25.0, not 0.25) | Display as-is or use `0.0"%"` custom format |
| Fiscal vs calendar year confusion | FF_ data uses fiscal years by default; different companies have different FY-ends | Use calendar notation (YYYY/CQ format) or specify date explicitly to align periods |
| FactSet tab disappears | Add-in crashed during refresh or internet interruption | Restart Excel, re-enable FactSet add-in via File > Options > Add-ins |
| Stale data after disconnect | Formulas show old values | Refresh All via FactSet tab; check connection status |
| Ticker changed (FB → META) | Old ticker returns errors for current data | Use current ticker; for historical data, old ticker may still work |
| 25-code limit per formula | Exceeding limit causes errors | Split into multiple cells or use FDSTABLE for batch pulls |
| LTM vs ANN confusion | LTM = rolling trailing 12 months, ANN = most recent complete fiscal year | Use LTM for real-time trailing metrics, ANN for fiscal year snapshots |
| Semi-annual companies | Some non-US companies report semi-annually; QTR data returns errors | Use SEMI or ANN period type for semi-annual reporters |

---

**19. Refreshing Data**

If you receive a #Calc error after entering an FDS formula:
1. Go to FactSet menu in Excel Ribbon
2. Click "Refresh"
3. Select "Selection" (for highlighted cells) or "All FDS Codes" (for all formulas)

---

**20. Using the FactSet Sidebar**

To access the formula builder:
1. Click the FactSet tab in Excel
2. Click "Insert Formula" or "Show/Hide Sidebar"
3. Use the sidebar to search for data items and build formulas
4. Click "Insert" to place the formula in your cell

**Limits:** The formula approach allows up to 25 codes at once.

---

**21. Top 50 One-Shot FactSet Pulls**

Quick-reference formulas for the most common analyst requests.

**Pricing (1–5):**

1. Current stock price:
=FDS("AAPL-US","FG_PRICE(0)")

2. Historical price (5 days ago):
=FDS("AAPL-US","P_PRICE(-5D)")

3. 52-week high / low:
=FDS("AAPL-US","FG_HIGH_52W")
=FDS("AAPL-US","FG_LOW_52W")

4. Volume:
=FDS("AAPL-US","FG_VOLUME(0D)")

5. 5-year beta:
=FDS("AAPL-US","FG_BETA")

**Market Data (6–10):**

6. Market cap:
=FDS("AAPL-US","FG_MKT_VAL")

7. Enterprise value:
=FDS("AAPL-US","FG_ENTRPR_VAL")

8. Shares outstanding:
=FDS("AAPL-US","FG_SHARES")

9. Float:
=FDS("AAPL-US","FG_FLOAT")

10. Dividend yield:
=FDS("AAPL-US","FG_DIV_YLD")

**Income Statement (11–17):**

11. Annual revenue:
=FDS("AAPL-US","FF_SALES(ANN,0Y,,,RF)")

12. LTM revenue:
=FDS("AAPL-US","FF_SALES(LTM)")

13. EBITDA:
=FDS("AAPL-US","FF_EBITDA(ANN,0Y,,,RF)")

14. LTM EBITDA:
=FDS("AAPL-US","FF_EBITDA(LTM)")

15. Operating income:
=FDS("AAPL-US","FF_OPER_INC(ANN,0Y,,,RF)")

16. Net income:
=FDS("AAPL-US","FF_NET_INCOME(ANN,0Y,,,RF)")

17. Diluted EPS:
=FDS("AAPL-US","FF_EPS(ANN,0Y,,,RF)")

**Balance Sheet (18–22):**

18. Cash & equivalents:
=FDS("AAPL-US","FF_CASH(ANN,0Y,,,RF)")

19. Total debt:
=FDS("AAPL-US","FF_DEBT(ANN,0Y,,,RF)")

20. Total assets:
=FDS("AAPL-US","FF_ASSETS(ANN,0Y,,,RF)")

21. Total equity:
=FDS("AAPL-US","FF_SHLDRS_EQ(ANN,0Y,,,RF)")

22. Book value per share:
=FDS("AAPL-US","FF_BV_PS(ANN,0Y,,,RF)")

**Cash Flow (23–26):**

23. Cash from operations:
=FDS("AAPL-US","FF_OPER_CF(ANN,0Y,,,RF)")

24. Capital expenditures:
=FDS("AAPL-US","FF_CAPEX(ANN,0Y,,,RF)")

25. Free cash flow:
=FDS("AAPL-US","FF_FREE_CF(ANN,0Y,,,RF)")

26. Dividends paid:
=FDS("AAPL-US","FF_DIV_CF(ANN,0Y,,,RF)")

**Valuation Ratios (27–32):**

27. P/E ratio:
=FDS("AAPL-US","FG_PE")

28. Forward P/E (FY+1):
=FDS("AAPL-US","P_PRICE(0D)/FE_ESTIMATE(EPS,MEAN,ANN,+1)")

29. EV/EBITDA:
=FDS("AAPL-US","FG_EV_EBITDA")

30. Forward EV/EBITDA (FY+1):
=FDS("AAPL-US","FG_ENTRPR_VAL/FE_ESTIMATE(EBITDA,MEAN,ANN,+1)")

31. Price/Book:
=FDS("AAPL-US","FG_PB")

32. Price/Sales:
=FDS("AAPL-US","FG_PS")

**Profitability (33–37):**

33. Gross margin:
=FDS("AAPL-US","FF_GROSS_MGN(ANN,0Y,,,RF)")

34. Operating margin:
=FDS("AAPL-US","FF_OPER_MGN(ANN,0Y,,,RF)")

35. EBITDA margin:
=FDS("AAPL-US","FF_EBITDA_MGN(ANN,0Y,,,RF)")

36. Return on equity:
=FDS("AAPL-US","FF_ROE(ANN,0Y,,,RF)")

37. Return on invested capital:
=FDS("AAPL-US","FF_ROIC(ANN,0Y,,,RF)")

**Consensus Estimates (38–45):**

38. FY+1 EPS estimate:
=FDS("AAPL-US","FE_ESTIMATE(EPS,MEAN,ANN,+1)")

39. FY+2 EPS estimate:
=FDS("AAPL-US","FE_ESTIMATE(EPS,MEAN,ANN,+2)")

40. FY+1 revenue estimate:
=FDS("AAPL-US","FE_ESTIMATE(SALES,MEAN,ANN,+1)")

41. FY+2 revenue estimate:
=FDS("AAPL-US","FE_ESTIMATE(SALES,MEAN,ANN,+2)")

42. FY+1 EBITDA estimate:
=FDS("AAPL-US","FE_ESTIMATE(EBITDA,MEAN,ANN,+1)")

43. Consensus FCF estimate:
=FDS("AAPL-US","FE_ESTIMATE(FCF,MEAN,ANN,+1)")

44. Number of analysts:
=FDS("AAPL-US","FE_ESTIMATE(EPS,COUNT,ANN,+1)")

45. Estimate dispersion (high - low):
=FDS("AAPL-US","FE_ESTIMATE(EPS,MAX,ANN,+1) - FE_ESTIMATE(EPS,MIN,ANN,+1)")

**FX & Currency (46–48):**

46. Spot FX rate (EUR/USD):
=FDS("EURUSD-FX1","P_PRICE(0D)")

47. Historical FX rate (30 days ago):
=FDS("EURUSD-FX1","P_PRICE(-30D)")

48. Foreign equity fundamentals in USD:
=FDS("BP-GB","FF_SALES(ANN,0Y,,,RF,USD)")

**Historical Fundamentals (49–50):**

49. Prior year revenue:
=FDS("AAPL-US","FF_SALES(ANN,-1Y,,,RF)")

50. Revenue 2 years ago:
=FDS("AAPL-US","FF_SALES(ANN,-2Y,,,RF)")

---

**Final Checklist:**
- What exact metric is needed? (Revenue? EBITDA? EPS? Free cash flow? Reported vs adjusted?)
- What time frame is required? (Annual? Quarterly? LTM? NTM? A specific historical period?)
- For estimates: did I specify the relative period? (+1 for next FY, +2 for FY after, 0 for current)
- What units are the numbers being returned in? Make sure you apply correct multiplications/divisions.
- Is the field a percentage type? (Don't apply Excel % format — FactSet returns whole numbers)
- Did I use cell references for the ticker (as opposed to hardcoding into the formula)?
- Did I use the correct exchange suffix (e.g., -US, -GB)?
- Am I using the correct prefix (FF_ for fundamentals, FG_ for pricing, FE_ for estimates)?
- Am I using the correct period type (ANN, QTR, LTM, SEMI)?
- Am I using the correct reporting type (RF, RP)?
- If retrieving estimates, did I specify the statistic type (MEAN, MEDIAN)?
- If I get a #Calc error, did I try refreshing the data?
- Is there enough empty space for FDSTABLE output?

---

**Additional Resources:**
- FactSet Online Assistant Page 20038: Excel Add-In Help
- FactSet Online Assistant Page 1961: FQL Manual
- FactSet Online Assistant Page 15915: Ownership Codes
- FactSet Online Assistant Page 16772: Formula Syntax Reference
