**Bloomberg Excel Formula Guide**

**Intro**
You have full access to Bloomberg through the Excel Add-In (Bloomberg API), but you should only pull Bloomberg data **when the user explicitly tells you to**. Bloomberg integrates market data, pricing, fundamentals, estimates, news, and analytics. You can retrieve any data point by writing Bloomberg formulas directly in Excel cells.

**IMPORTANT:** Before completing a task involving Bloomberg, you must verify:
1. Your Bloomberg formulas do not return errors.
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 fields when possible as opposed to hardcoded values into the formula.
4. Be aware of data download limits—Bloomberg limits monthly downloads per terminal.

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.

---

**Bloomberg Excel Functions Overview**

Bloomberg provides three main Excel functions:

| Function | Purpose | Use Case |
|----------|---------|----------|
| BDP | Bloomberg Data Point | Current/static single-cell data |
| BDH | Bloomberg Data History | Historical time series data |
| BDS | Bloomberg Data Set | Multi-cell descriptive/bulk data |

---

**1. BDP - Bloomberg Data Point**

Returns data to a single cell. Use for current/real-time data points.

**Syntax:** =BDP("SECURITY","FIELD")

**Examples:**
=BDP("AAPL US Equity","PX_LAST")
→ Apple's last trading price.

=BDP("IBM US Equity","CUR_MKT_CAP")
→ IBM's current market capitalization.

=BDP("MSFT US Equity","EBITDA")
→ Microsoft's EBITDA.

**Using Cell References:**
=BDP(A1,"PX_LAST")
→ Last price for ticker in cell A1.

=BDP("AAPL US Equity",B1)
→ Field specified in cell B1 for Apple.

---

**2. BDH - Bloomberg Data History**

Returns historical data for a security over a time range.

**Syntax:** =BDH("SECURITY","FIELD","START_DATE","END_DATE","OPTIONAL_ARGS")

**Examples:**
=BDH("AAPL US Equity","PX_LAST","01/01/2023","12/31/2023")
→ Apple's daily closing prices for 2023.

=BDH("5 HK Equity","EBIT","01/01/2009","12/31/2011","PER=CY","CURR=USD")
→ HSBC's annual EBIT from 2009-2011 in USD.

=BDH("SPX Index","PX_LAST","-1Y","")
→ S&P 500 prices from 1 year ago to today.

**Date Formats:**
- Absolute: "MM/DD/YYYY" or "DD/MM/YYYY"
- Relative: "-1Y" (1 year ago), "-6M" (6 months ago), "-30D" (30 days ago)
- Period codes: "-6CQ" (6 calendar quarters ago)

---

**3. BDS - Bloomberg Data Set**

Returns multi-cell descriptive data (arrays/tables).

**Syntax:** =BDS("SECURITY","FIELD","OPTIONAL_ARGS")

**Examples:**
=BDS("AAPL US Equity","TOP_20_HOLDERS_PUBLIC_FILINGS")
→ Apple's top 20 institutional holders.

=BDS("601398 CH Equity","DES")
→ Company description for ICBC.

=BDS("SPX Index","INDX_MEMBERS")
→ List of S&P 500 constituents.

---

**4. Security Identifier Format**

Securities must be specified as: TICKER MARKET_SECTOR

**Market Sectors:**
| Sector | Description | Example |
|--------|-------------|---------|
| Equity | Stocks | AAPL US Equity |
| Corp | Corporate Bonds | IBM 4.5 2025 Corp |
| Govt | Government Bonds | T 2.5 2024 Govt |
| Index | Indices | SPX Index |
| Curncy | Currencies | EUR Curncy |
| Comdty | Commodities | CL1 Comdty |
| Mtge | Mortgages | FN 5.5 Mtge |
| Muni | Municipal Bonds | NYC 5 2030 Muni |
| Pfd | Preferred Stock | BAC/PRA US Pfd |

**Exchange Codes (for Equity):**
- US = United States
- LN = London
- JP = Japan
- GR = Germany
- FP = France
- CN = Canada
- HK = Hong Kong
- AU = Australia
- IN = India

**Alternative Identifiers:**
- CUSIP: "459200101 US Equity"
- ISIN: "US4592001014 US Equity"
- SEDOL: "2046251 US Equity"

---

**5. Common Field Mnemonics**

**Pricing Fields:**
| Field | Description |
|-------|-------------|
| PX_LAST | Last trade price |
| PX_OPEN | Opening price |
| PX_HIGH | Day's high price |
| PX_LOW | Day's low price |
| PX_CLOSE | Previous close price |
| PX_VOLUME | Trading volume |
| PX_BID | Bid price |
| PX_ASK | Ask price |
| LAST_PRICE | Historical last price (time series) |
| HIGH_52WEEK | 52-week high |
| LOW_52WEEK | 52-week low |
| CRNCY_ADJ_PX_LAST | Last price converted to a specified currency (use with EQY_FUND_CRNCY override) |

**Market Data Fields:**
| Field | Description |
|-------|-------------|
| CUR_MKT_CAP | Current market capitalization |
| HISTORICAL_MARKET_CAP | Historical market cap (RR250) |
| ENTERPRISE_VALUE | Enterprise value (RR472) |
| EQY_SH_OUT | Shares outstanding |
| EQY_FREE_FLOAT_PCT | Free float percentage |
| VOLUME_AVG_30D | 30-day average volume |

**Income Statement Fields:**
| Field | Description |
|-------|-------------|
| SALES_REV_TURN | Total revenue (IS010) |
| IS_COMP_SALES | Company sales |
| GROSS_PROFIT | Gross profit (RR861) |
| IS_OPER_INC | Operating income |
| EBIT | Earnings before interest & taxes |
| EBITDA | EBITDA (RR009) |
| IS_INC_BEF_XO_ITEM | Income before extraordinary items |
| NET_INCOME | Net income |
| EARN_FOR_COMMON | Net income to common (RR530) |
| IS_EPS | Earnings per share |
| IS_DIL_EPS | Diluted EPS |
| IS_SH_FOR_DILUTED_EPS | Diluted shares |

**Balance Sheet Fields:**
| Field | Description |
|-------|-------------|
| BS_CASH_NEAR_CASH_ITEM | Cash & equivalents |
| BS_TOT_ASSET | Total assets |
| BS_CUR_ASSET_REPORT | Current assets |
| BS_NET_FIX_ASSET | Net fixed assets |
| BS_ACCT_PAYABLE | Accounts payable |
| BS_ST_BORROW | Short-term borrowings |
| BS_CUR_LIAB | Current liabilities |
| BS_LT_BORROW | Long-term debt |
| BS_TOT_LIAB2 | Total liabilities |
| TOT_COMMON_EQY | Total common equity |
| TOTAL_EQUITY | Total equity |
| BS_SH_OUT | Balance sheet shares outstanding |

**Cash Flow Fields:**
| Field | Description |
|-------|-------------|
| CF_CASH_FROM_OPER | Cash from operations |
| CF_CAP_EXPEND_PRPTY_ADD | Capital expenditures |
| CF_CASH_FROM_INV_ACT | Cash from investing |
| CF_CASH_FROM_FNC_ACT | Cash from financing |
| CF_FREE_CASH_FLOW | Free cash flow |
| CF_DVD_PAID | Dividends paid |
| CF_CHNG_CASH | Change in cash |

**Valuation Ratios:**
| Field | Description |
|-------|-------------|
| PE_RATIO | Price/Earnings ratio |
| PX_TO_BOOK_RATIO | Price/Book ratio |
| PX_TO_SALES_RATIO | Price/Sales ratio |
| PX_TO_CASH_FLOW | Price/Cash flow |
| PX_TO_FREE_CASH_FLOW | Price/Free cash flow |
| EV_TO_T12M_EBITDA | EV/EBITDA (trailing 12M) |
| TOTR_EV_TO_SALES | EV/Sales |
| DVD_YLD_IND | Dividend yield |
| BEST_PE_RATIO | Forward P/E (NTM consensus) |
| BEST_PEG_RATIO | Forward PEG ratio |
| BEST_CUR_EV_TO_EBITDA | Forward EV/EBITDA (NTM consensus) |

**Profitability Ratios:**
| Field | Description |
|-------|-------------|
| RETURN_COM_EQY | Return on equity |
| RETURN_ON_ASSET | Return on assets |
| RETURN_ON_INV_CAPITAL | Return on invested capital |
| PROF_MARGIN | Profit margin |
| GROSS_MARGIN | Gross margin |
| OPER_MARGIN | Operating margin |
| EBITDA_TO_REVENUE | EBITDA margin |

**Estimates Fields:**
| Field | Description |
|-------|-------------|
| BEST_EPS | Consensus EPS estimate |
| BEST_EPS_GAAP | Consensus GAAP EPS |
| BEST_SALES | Consensus revenue estimate |
| BEST_EBITDA | Consensus EBITDA estimate |
| BEST_EBIT | Consensus EBIT |
| BEST_GROSS_PROFIT | Consensus gross profit |
| BEST_OPER_INC | Consensus operating income |
| BEST_NET_INCOME | Consensus net income estimate |
| BEST_ESTIMATE_FCF | Consensus free cash flow |
| BEST_CAPEX | Consensus capex |
| BEST_DPS | Consensus dividends per share |
| BEST_BPS | Consensus book value per share |
| BEST_ROE | Consensus ROE |
| BEST_DIV_YLD | Consensus dividend yield |
| BEST_EPS_NTM | NTM blended EPS (next twelve months) |
| BEST_EBITDA_NTM | NTM blended EBITDA |
| BEST_SALES_NTM | NTM blended revenue |
| BEST_EST_LONG_TERM_GROWTH | Long-term EPS growth rate |
| BEST_TARGET_PRICE | Consensus target price |
| BEST_ANALYST_RATING | Analyst rating |
| EST_NUM_ANALYSTS | Number of analysts |
| TOT_BUY_REC | Total buy recommendations |
| TOT_HOLD_REC | Total hold recommendations |
| TOT_SELL_REC | Total sell recommendations |

**Ownership Fields:**
| Field | Description |
|-------|-------------|
| TOP_20_HOLDERS_PUBLIC_FILINGS | Top 20 holders (use with BDS) |
| INSIDER_SHARES_HELD | Insider shares held |
| EQY_INST_PCT_SH_OUT | Institutional ownership % |

---

**6. Optional Arguments**

**For BDH (Historical Data):**

| Argument | Values | Description |
|----------|--------|-------------|
| PER | D, W, M, Q, S, Y | Periodicity (daily, weekly, monthly, quarterly, semi-annual, yearly) |
| DAYS | A, T, W, C | Calendar type (all days, trading days, weekdays, current) |
| FILL | P, NA | Fill method (previous value, N/A) |
| CURR | USD, EUR, GBP, etc. | Currency conversion |
| FX | LAST, AVG, HIGH, LOW | FX conversion rate type |
| DIR | H, V | Direction (horizontal, vertical) |
| SORT | A, D | Sort order (ascending, descending) |
| DTEFMT | DATE, #, YY | Date format |
| CDR | US, UK, JP, etc. | Calendar for date calculations |
| HEADER | Y, N | Show/hide column headers |
| FA_ACT_EST_DATA | A, E, A+E | Actuals only, estimates only, or blended actuals + estimates |

**Example with Options:**
=BDH("AAPL US Equity","PX_LAST","01/01/2020","12/31/2020","PER=M","CURR=EUR","FILL=P")
→ Apple monthly prices for 2020 in EUR, with previous values for missing data.

---

**7. Period Modifiers**

**For Fundamentals:**
| Modifier | Description |
|----------|-------------|
| [LF] | Latest Filing (most recent available period) |
| [TTM] | Trailing Twelve Months |
| [FY0] | Current fiscal year |
| [FY-1] | Prior fiscal year |
| [FQ0] | Current fiscal quarter |
| [FQ-1] | Prior fiscal quarter |

**Example:**
=BDP("AAPL US Equity","SALES_REV_TURN[TTM]")
→ Apple's trailing 12-month revenue.

---

**8. Forward Estimate Periods**

Use `BEST_FPERIOD_OVERRIDE` to pull consensus estimates for specific forward periods.

**Fiscal Year Estimates:**
=BDP("AAPL US Equity","BEST_EPS","BEST_FPERIOD_OVERRIDE=1BF")
→ FY1 (next fiscal year) consensus EPS.

=BDP("AAPL US Equity","BEST_EPS","BEST_FPERIOD_OVERRIDE=2BF")
→ FY2 consensus EPS.

=BDP("AAPL US Equity","BEST_EPS","BEST_FPERIOD_OVERRIDE=3BF")
→ FY3 consensus EPS.

**Quarterly Estimates:**
=BDP("AAPL US Equity","BEST_EPS","BEST_FPERIOD_OVERRIDE=1BQ")
→ Next quarter consensus EPS.

=BDP("AAPL US Equity","BEST_EPS","BEST_FPERIOD_OVERRIDE=2BQ")
→ Quarter after next consensus EPS.

**NTM (Next Twelve Months) Pre-Computed Fields:**
These fields return time-weighted blended NTM values without needing BEST_FPERIOD_OVERRIDE:
=BDP("AAPL US Equity","BEST_CUR_EV_TO_EBITDA")
→ Forward EV/EBITDA (NTM).

=BDP("AAPL US Equity","BEST_PE_RATIO")
→ Forward P/E (NTM).

=BDP("AAPL US Equity","BEST_EPS_NTM")
→ NTM blended EPS.

=BDP("AAPL US Equity","BEST_EBITDA_NTM")
→ NTM blended EBITDA.

=BDP("AAPL US Equity","BEST_SALES_NTM")
→ NTM blended revenue.

**Actuals + Estimates Blended Time Series:**
=BDH("AAPL US Equity","BEST_EPS","01/01/2018","12/31/2028","PER=Y","FA_ACT_EST_DATA=A+E")
→ Annual EPS from 2018 to 2028: actuals for past years, estimates for future years.

**Note:** Without `BEST_FPERIOD_OVERRIDE`, BEST_* fields default to the next unreported period (1BF). Always specify the period explicitly for clarity.

---

**9. FX & Currency Conversion**

**Cross-Rate Tickers:**
=BDP("EURUSD Curncy","PX_LAST")
→ Spot EUR/USD exchange rate.

=BDH("EURUSD Curncy","PX_LAST","12/31/2022","12/31/2022")
→ Historical EUR/USD rate on a specific date.

=BDH("EURUSD Curncy","PX_LAST",A2,A2)
→ Historical rate using cell reference (draggable down a column of dates).

**Common FX Pairs:**
EURUSD, GBPUSD, USDJPY, USDCHF, AUDUSD, USDCAD, USDCNY, USDBRL, USDINR
→ All use "Curncy" market sector, e.g. `"USDJPY Curncy"`.

**Currency Conversion for Fundamentals vs Prices:**

| Data Type | Override | Example |
|-----------|----------|---------|
| Fundamentals (revenue, EBITDA, etc.) | `EQY_FUND_CRNCY=USD` in BDP | `=BDP("VOW3 GR Equity","SALES_REV_TURN","EQY_FUND_CRNCY=USD")` |
| Historical data | `CURR=USD` in BDH | `=BDH("VOW3 GR Equity","EBIT","01/01/2020","12/31/2023","PER=Y","CURR=USD")` |
| Prices | `CRNCY_ADJ_PX_LAST` field | `=BDP("VOW3 GR Equity","CRNCY_ADJ_PX_LAST","EQY_FUND_CRNCY=USD")` |

**IMPORTANT:** `PX_LAST` silently ignores `EQY_FUND_CRNCY` — it always returns the local currency price. To get a currency-converted price, use `CRNCY_ADJ_PX_LAST` instead.

---

**10. Override Parameters**

Overrides allow customization of how data is returned.

**Common Overrides:**
| Override | Description | Example |
|----------|-------------|---------|
| EQY_FUND_CRNCY | Currency override | "EQY_FUND_CRNCY=EUR" |
| SCALING_FORMAT | Scale (MLN, BLN) | "SCALING_FORMAT=MLN" |
| FUND_PER | Fiscal period | "FUND_PER=Q" |
| FA_PERIOD_OFFSET | Period offset | "FA_PERIOD_OFFSET=-1" |
| FA_ACT_EST_DATA | Actuals vs Estimates | "FA_ACT_EST_DATA=A" |
| BEST_FPERIOD_OVERRIDE | Forward estimate period | "BEST_FPERIOD_OVERRIDE=1BF" |

**Example:**
=BDP("AAPL US Equity","CUR_MKT_CAP","SCALING_FORMAT=BLN")
→ Apple market cap in billions.

**Multiple Overrides:**
=BDP("AAPL US Equity","BEST_EPS","BEST_FPERIOD_OVERRIDE=2BF","EQY_FUND_CRNCY=USD")
→ FY2 consensus EPS converted to USD. Each override is a separate string argument.

---

**11. Field Return Types & Formatting**

Bloomberg fields return different value types. Applying the wrong Excel format produces misleading numbers.

**Percentage Fields** (return whole numbers, e.g. 25.0 means 25%):
- RETURN_COM_EQY, RETURN_ON_ASSET, RETURN_ON_INV_CAPITAL
- PROF_MARGIN, GROSS_MARGIN, OPER_MARGIN, EBITDA_TO_REVENUE
- DVD_YLD_IND, EQY_FREE_FLOAT_PCT, EQY_INST_PCT_SH_OUT
- BEST_ROE, BEST_DIV_YLD
- **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):
- SALES_REV_TURN, EBITDA, NET_INCOME, CUR_MKT_CAP, ENTERPRISE_VALUE, CF_FREE_CASH_FLOW, GROSS_PROFIT, IS_OPER_INC
- Use `SCALING_FORMAT=MLN` or `SCALING_FORMAT=BLN` when appropriate for the magnitude.

**Ratio Fields** (return dimensionless multiples):
- PE_RATIO, PX_TO_BOOK_RATIO, EV_TO_T12M_EBITDA, BEST_PE_RATIO, BEST_CUR_EV_TO_EBITDA, BEST_PEG_RATIO
- Never apply percentage formatting to these.

**Per-Share Fields** (small currency values):
- IS_EPS, IS_DIL_EPS, PX_LAST, BEST_EPS, BEST_DPS, BEST_BPS
- Never apply `SCALING_FORMAT` to per-share fields.

---

**12. BDH Output Behavior**

BDH is a dynamic array formula — it spills DOWN and to the RIGHT from the cell where it is entered.

**Key behaviors:**
- Default output: date column + value column(s) — will overwrite existing cell contents below and to the right.
- Always place BDH in an area with sufficient empty space below and to the right.
- To suppress column headers: add `"HEADER=N"` argument.
- Direction control: `"DIR=V"` (vertical, default) or `"DIR=H"` (horizontal, spills rightward).
- For single-date lookups (draggable): use same start and end date:

=BDH("AAPL US Equity","PX_LAST",A2,A2)
→ Returns a single price for the date in A2. Copy the formula down for each date.

---

**13. Real-Time Data (BLP)**

For real-time streaming data, use BLP instead of BDP:
=BLP("AAPL US Equity","LAST_PRICE")
→ Real-time streaming price for Apple.

---

**14. Composite Formulas**

**Building Arrays for Multiple Securities:**
Enter tickers in column A, then:
=BDP($A2,B$1)
→ Drag across columns for multiple fields.

**Multiple Securities, Multiple Fields:**
=BDP(A2:A10,"PX_LAST")
→ Array formula for prices of multiple tickers.

**Index Member Screening (BDS → BDP workflow):**
1. Pull members: =BDS("SPX Index","INDX_MEMBERS") in cell A2 → spills tickers into A2:A501
2. Pull data for each: =BDP(A2,"PX_LAST") in B2, =BDP(A2,"PE_RATIO") in C2, drag down
3. Filter in Excel or use BQL for a single-formula approach (see Section 16)

**Note:** BDS member lists return tickers without the yellow key suffix. You may need to append " Equity" to use them in BDP:
=BDP(A2&" Equity","PX_LAST")

---

**15. Segment & Product Data**

BDP/BDH return company-level aggregates only — they cannot pull product-level or segment-level breakdowns.

**Segment Lists:**
=BDS("DHR US Equity","SEGMENT_LIST")
→ Returns list of reported business segments.

**Segment Revenue:**
=BDS("DHR US Equity","SEGMENT_REVENUE")
→ Returns revenue by segment.

**Limitations:**
- For pharma/individual drug revenue, Bloomberg generally does NOT have product-level data. Use Visible Alpha or company filings instead.
- If segment data is unavailable for a given company, recommend Visible Alpha as a fallback.
- For more flexible segment queries, use BQL (see Section 17).

---

**16. BQL Basics**

BQL (Bloomberg Query Language) is a formula-based language for more complex queries than BDP/BDH/BDS can handle.

**Single Security:**
=BQL("AAPL US Equity","get(BEST_EPS) for(FY1)")
→ FY1 consensus EPS for Apple.

**Multi-Security Screening:**
=BQL("members('SPX Index')","get(PX_LAST, CUR_MKT_CAP)")
→ Last price and market cap for all S&P 500 members.

**Segment-Level Data:**
=BQL("AAPL US Equity","get(SEGMENT_REVENUE) for(segments())")
→ Revenue by segment for Apple.

**Filtering with where():**
=BQL("members('SPX Index')","get(PX_LAST, PE_RATIO) where(PE_RATIO < 15 and RETURN_COM_EQY > 20) sort(PE_RATIO, asc)")
→ S&P 500 stocks with P/E below 15 and ROE above 20%, sorted by P/E ascending.

=BQL("members('SPX Index')","get(CUR_MKT_CAP, DVD_YLD_IND) where(CUR_MKT_CAP > 100e9 and DVD_YLD_IND > 3)")
→ Large-cap S&P 500 names yielding above 3%.

**Date Ranges with range():**
=BQL("AAPL US Equity","get(SALES_REV_TURN) for(range(-4Y,0Y))")
→ Apple's annual revenue for the last 5 fiscal years.

=BQL("AAPL US Equity","get(BEST_EPS) for(range(1BF,3BF))")
→ FY1 through FY3 consensus EPS estimates.

**Grouping with group():**
=BQL("members('SPX Index')","get(avg(PE_RATIO)) group(GICS_SECTOR_NAME)")
→ Average P/E ratio by sector for S&P 500.

=BQL("members('SPX Index')","get(count(ID), avg(DVD_YLD_IND)) group(GICS_SECTOR_NAME) sort(avg(DVD_YLD_IND), desc)")
→ Count and average dividend yield by sector, sorted by yield.

**BQL Syntax Reference:**
| Clause | Purpose | Example |
|--------|---------|---------|
| get() | Fields to retrieve | `get(PX_LAST, PE_RATIO)` |
| for() | Time periods or dimensions | `for(FY1)`, `for(range(-4Y,0Y))`, `for(segments())` |
| where() | Filter conditions | `where(PE_RATIO < 20 and CUR_MKT_CAP > 10e9)` |
| sort() | Order results | `sort(PE_RATIO, asc)` |
| group() | Aggregate by category | `group(GICS_SECTOR_NAME)` |
| members() | Universe of securities | `members('SPX Index')`, `members('RAY Index')` |

**When to use BQL vs BDP/BDH:**
- Use BDP/BDH for single-security, single-field pulls (simpler, faster).
- Use BQL when you need: multi-security screening, segment-level data, custom filtering/sorting, or complex conditional logic.

---

**17. Finding Field Mnemonics**

**In Excel:**
1. Click the Bloomberg tab
2. Click "Find Fields" or "Field Search"
3. Search by category or keyword
4. Select field to see mnemonic

**On Terminal:**
- Type FLDS <GO> to search for fields
- Type API <GO> for Excel API help
- Type HELP DAPI <GO> for documentation

---

**18. Refreshing Data**

If formulas show stale data or errors:
1. Go to Bloomberg tab in Excel
2. Click "Refresh Workbook" or "Refresh All"

To set auto-refresh:
Bloomberg > Settings > Real-time Data > Enable

---

**19. Data Limits**

**IMPORTANT:** Bloomberg has monthly download limits per terminal.
- General rule: No more than 5,000 rows and 40 columns per query
- Once limit is reached, data shows as N/A until next month
- Save formulas with hard data (Paste Values) to preserve data

---

**20. Common Pitfalls**

| Pitfall | What Happens | Fix |
|---------|-------------|-----|
| `PX_LAST` + `EQY_FUND_CRNCY` | Override is silently ignored — price returns in local currency | Use `CRNCY_ADJ_PX_LAST` field instead |
| `SCALING_FORMAT=BLN` on small values | Displays "0.0" because the value is below 1 billion | Use `SCALING_FORMAT=MLN` or no scaling |
| Excel `0.00%` format on Bloomberg % fields | Shows 2500% instead of 25% (Bloomberg returns 25.0, not 0.25) | Display as-is or use `0.0"%"` custom format |
| BDH overwrites adjacent cells | Data spills down/right and overwrites whatever is there | Always leave empty space below and right of BDH formulas |
| `BEST_*` without `BEST_FPERIOD_OVERRIDE` | Defaults to next unreported period (1BF) which may not be what you want | Specify `BEST_FPERIOD_OVERRIDE=1BF` (or 2BF, 1BQ, etc.) explicitly |
| Wrong ticker format for FX | Using "EUR Curncy" instead of "EURUSD Curncy" for cross rates | Use the pair format: `"EURUSD Curncy"`, `"USDJPY Curncy"` |
| `#N/A Field Not Found` | Field mnemonic doesn't exist or isn't valid for this security type | Check spelling via FLDS, verify field applies to the security's asset class |
| `#N/A Security Not Found` | Ticker/identifier not recognized | Verify TICKER EXCHANGE SECTOR format, check for delistings or ticker changes |
| `#N/A N/A` (data pending) | Bloomberg is still loading or the field has no data for this security | Wait and refresh; if persistent, the field genuinely has no data for this security |
| `#NAME?` | Bloomberg add-in not loaded in Excel | Enable add-in via File > Options > Add-ins > Bloomberg |
| `#GETTING DATA...` never resolves | Bloomberg connection issue or rate limit hit | Check Bloomberg connection status, reduce concurrent formula count |
| Ticker changed (FB → META) | Old ticker returns `#N/A Security Not Found` for current data | Use current ticker; for historical BDH, old ticker may still work for pre-change dates |
| BDH prices across stock splits | Prices are split-adjusted by default, which is usually correct | For unadjusted prices use `"DPDF=N"` override; old news/filings reference unadjusted numbers |
| Bond tickers oversimplified | `IBM 4.5 2025 Corp` may not resolve; Bloomberg needs exact coupon/maturity | Use CUSIP or ISIN: `"459200101 Corp"` or look up exact identifier via SRCH on terminal |
| ADR vs local shares | `BABA US Equity` and `9988 HK Equity` return different EPS/share counts due to ADR ratio | Use `ADR_SH_PER_ADR` field to get the conversion ratio; pick one share class consistently |
| Fiscal year misalignment in comps | Apple (Sept FY) vs Microsoft (June FY) — "current year" means different calendar periods | Use `FUND_PER=CQ` for calendar quarters or `FA_PERIOD_OFFSET` to align periods manually |

---

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

Quick-reference formulas for the most common analyst requests.

**Pricing (1–5):**

1. Current stock price:
=BDP("AAPL US Equity","PX_LAST")

2. Historical daily prices (1 year):
=BDH("AAPL US Equity","PX_LAST","-1Y","")

3. 52-week high / low:
=BDP("AAPL US Equity","HIGH_52WEEK")
=BDP("AAPL US Equity","LOW_52WEEK")

4. 30-day average volume:
=BDP("AAPL US Equity","VOLUME_AVG_30D")

5. Historical price at a specific date (draggable):
=BDH("AAPL US Equity","PX_LAST",A2,A2)

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

6. Market cap:
=BDP("AAPL US Equity","CUR_MKT_CAP")

7. Market cap in billions:
=BDP("AAPL US Equity","CUR_MKT_CAP","SCALING_FORMAT=BLN")

8. Enterprise value:
=BDP("AAPL US Equity","ENTERPRISE_VALUE")

9. Shares outstanding:
=BDP("AAPL US Equity","EQY_SH_OUT")

10. Free float %:
=BDP("AAPL US Equity","EQY_FREE_FLOAT_PCT")

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

11. Annual revenue:
=BDP("AAPL US Equity","SALES_REV_TURN")

12. TTM revenue:
=BDP("AAPL US Equity","SALES_REV_TURN[TTM]")

13. EBITDA:
=BDP("AAPL US Equity","EBITDA")

14. TTM EBITDA:
=BDP("AAPL US Equity","EBITDA[TTM]")

15. Operating income:
=BDP("AAPL US Equity","IS_OPER_INC")

16. Net income:
=BDP("AAPL US Equity","NET_INCOME")

17. Diluted EPS:
=BDP("AAPL US Equity","IS_DIL_EPS")

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

18. Cash & equivalents:
=BDP("AAPL US Equity","BS_CASH_NEAR_CASH_ITEM")

19. Total debt (short-term + long-term):
=BDP("AAPL US Equity","BS_ST_BORROW")
=BDP("AAPL US Equity","BS_LT_BORROW")

20. Total assets:
=BDP("AAPL US Equity","BS_TOT_ASSET")

21. Total equity:
=BDP("AAPL US Equity","TOTAL_EQUITY")

22. Book value per share:
=BDP("AAPL US Equity","BEST_BPS")

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

23. Cash from operations:
=BDP("AAPL US Equity","CF_CASH_FROM_OPER")

24. Capital expenditures:
=BDP("AAPL US Equity","CF_CAP_EXPEND_PRPTY_ADD")

25. Free cash flow:
=BDP("AAPL US Equity","CF_FREE_CASH_FLOW")

26. Dividends paid:
=BDP("AAPL US Equity","CF_DVD_PAID")

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

27. P/E ratio (trailing):
=BDP("AAPL US Equity","PE_RATIO")

28. Forward P/E (NTM):
=BDP("AAPL US Equity","BEST_PE_RATIO")

29. EV/EBITDA (trailing 12M):
=BDP("AAPL US Equity","EV_TO_T12M_EBITDA")

30. Forward EV/EBITDA (NTM):
=BDP("AAPL US Equity","BEST_CUR_EV_TO_EBITDA")

31. Price/Book:
=BDP("AAPL US Equity","PX_TO_BOOK_RATIO")

32. Dividend yield:
=BDP("AAPL US Equity","DVD_YLD_IND")

**Profitability (33–37):**

33. Gross margin:
=BDP("AAPL US Equity","GROSS_MARGIN")

34. Operating margin:
=BDP("AAPL US Equity","OPER_MARGIN")

35. EBITDA margin:
=BDP("AAPL US Equity","EBITDA_TO_REVENUE")

36. Return on equity:
=BDP("AAPL US Equity","RETURN_COM_EQY")

37. Return on invested capital:
=BDP("AAPL US Equity","RETURN_ON_INV_CAPITAL")

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

38. FY1 EPS estimate:
=BDP("AAPL US Equity","BEST_EPS","BEST_FPERIOD_OVERRIDE=1BF")

39. FY2 EPS estimate:
=BDP("AAPL US Equity","BEST_EPS","BEST_FPERIOD_OVERRIDE=2BF")

40. FY1 revenue estimate:
=BDP("AAPL US Equity","BEST_SALES","BEST_FPERIOD_OVERRIDE=1BF")

41. FY2 revenue estimate:
=BDP("AAPL US Equity","BEST_SALES","BEST_FPERIOD_OVERRIDE=2BF")

42. FY1 EBITDA estimate:
=BDP("AAPL US Equity","BEST_EBITDA","BEST_FPERIOD_OVERRIDE=1BF")

43. Consensus free cash flow:
=BDP("AAPL US Equity","BEST_ESTIMATE_FCF")

44. Consensus target price:
=BDP("AAPL US Equity","BEST_TARGET_PRICE")

45. Analyst counts (buy / hold / sell):
=BDP("AAPL US Equity","TOT_BUY_REC")
=BDP("AAPL US Equity","TOT_HOLD_REC")
=BDP("AAPL US Equity","TOT_SELL_REC")

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

46. Spot FX rate (EUR/USD):
=BDP("EURUSD Curncy","PX_LAST")

47. Historical FX rate at date (draggable):
=BDH("EURUSD Curncy","PX_LAST",A2,A2)

48. Foreign equity price converted to USD:
=BDP("VOW3 GR Equity","CRNCY_ADJ_PX_LAST","EQY_FUND_CRNCY=USD")

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

49. Annual revenue series (5 years, in USD):
=BDH("VOW3 GR Equity","SALES_REV_TURN","01/01/2019","12/31/2023","PER=Y","CURR=USD")

50. Actuals + estimates blended EPS time series:
=BDH("AAPL US Equity","BEST_EPS","01/01/2018","12/31/2028","PER=Y","FA_ACT_EST_DATA=A+E")

---

**Final Checklist:**
- What exact data point is needed? (Price? Revenue? EBITDA? EPS? Estimate?)
- What time frame is required? (Current? Historical? TTM? Fiscal year? Forward NTM?)
- Is this a single value (BDP), time series (BDH), or dataset (BDS)?
- Is the security identifier correct? (TICKER MARKET_SECTOR)
- What currency should the data be in? (Use `EQY_FUND_CRNCY` for fundamentals, `CURR` for BDH, `CRNCY_ADJ_PX_LAST` for prices)
- Do I need to specify periodicity (daily, monthly, quarterly, annual)?
- For estimates: did I specify `BEST_FPERIOD_OVERRIDE` (1BF, 2BF, 1BQ, 2BQ)?
- Is the field a percentage type? (Don't apply Excel % format — Bloomberg returns whole numbers)
- Is there enough empty space below/right for BDH output?
- Have I checked the field mnemonic using Field Search?
- Am I within data download limits?

---

**Additional Resources:**
- Bloomberg Terminal: API <GO> - Excel Add-in tutorials
- Bloomberg Terminal: FLDS <GO> - Field search
- Bloomberg Terminal: HELP DAPI <GO> - API documentation
- Bloomberg Terminal: XATP XAPI <GO> - Interactive Excel tutorial
- Field Search in Excel: Bloomberg tab > Find Fields
