Title: Excel Formulas For Financial Analysts — LearnCoachAssist

Q: NPV formula in Excel?
A: =NPV(rate, value1, value2, ...) + initial_investment — NPV discounts from period 1; include the initial outflow (often negative) separately.

Q: IRR formula?
A: =IRR(cashflows) — first cashflow usually negative (investment), then inflows.

Q: XNPV vs NPV?
A: NPV: assumes equal-period intervals.
XNPV(rate, values, dates): handles irregular dates.

Q: XIRR vs IRR?
A: IRR: equal periods.
XIRR(values, dates): irregular dates — used when actual cash flow timing varies.

Q: INDEX/MATCH pattern?
A: =INDEX(returnRange, MATCH(lookupValue, lookupRange, 0)) — more flexible than VLOOKUP.

Q: VLOOKUP vs XLOOKUP?
A: VLOOKUP: looks up by leftmost column, returns a column to the right; can't go left.
XLOOKUP: any direction, exact match default, IFNULL built in.

Q: Compute CAGR?
A: =(EndValue/StartValue)^(1/Years) - 1

Q: Loan PMT?
A: =PMT(rate/12, n_months, -principal)

Q: Bond price?
A: =PRICE(settlement, maturity, coupon_rate, yield, redemption, frequency, [basis])

Q: Convert a date to fiscal quarter?
A: =ROUNDUP((MONTH(A1) - FiscalStart + 12) MOD 12 / 3, 0) or use INT((MONTH+offset)/3).

Q: YEARFRAC use?
A: =YEARFRAC(start, end, basis) — fractional years between two dates with day-count conventions (30/360, ACT/360, etc.).

Q: Quickly sum visible cells after filter?
A: =SUBTOTAL(9, range) or =AGGREGATE(9, 5, range)

Q: AGGREGATE vs SUBTOTAL?
A: AGGREGATE supports many more functions and can ignore errors and hidden rows — newer.

Q: Convert dollar amounts to thousands without changing values?
A: Custom format: #,##0,;-#,##0,;0 — one trailing comma divides display by 1000.

Q: Lock a row in a formula?
A: Use absolute: $A$1. Lock only column or only row with single dollar sign.

Q: Excel array formula example?
A: Modern dynamic array: =SORT(UNIQUE(A1:A100)) spills automatically. No more Ctrl-Shift-Enter.

Q: Lookup last value in a column?
A: =LOOKUP(2,1/(A:A<>""),A:A)

Q: Why does =A1/0 show #DIV/0!?
A: Division by zero. Wrap: =IFERROR(A1/B1, 0).

Q: Goal Seek use case?
A: Find the input value that produces a target output — Data → What-If Analysis → Goal Seek.

Q: Data Tables (Sensitivity Analysis)?
A: Build a grid of inputs varying along rows/cols; Excel computes the output cell for each combination.

Q: Scenario Manager?
A: Save sets of input values and switch between them — Data → What-If → Scenario Manager.

Q: Pivot table 'group by month'?
A: Right-click date row → Group → choose Months/Quarters/Years.

Q: Show top 10 by SUM in pivot?
A: Row label filter → Value Filters → Top 10.

Q: Calculate weighted average?
A: =SUMPRODUCT(values, weights)/SUM(weights)

Q: Compound interest?
A: =Principal * (1 + rate/n)^(n*t) — or use FV: =FV(rate, n, 0, -principal).

Q: DCF skeleton?
A: Project FCF, discount at WACC, sum, add terminal value: TV / (1+WACC)^n, subtract debt, divide by shares for per-share value.

Q: WACC formula?
A: WACC = E/V * Re + D/V * Rd * (1 - t)

Q: CAPM formula?
A: Re = Rf + β * (Rm - Rf)

Q: How to model a debt schedule?
A: Each period: beginning balance → interest accrual (rate × avg balance) → mandatory + optional repayments → ending balance.

Q: Cash flow waterfall — top-line items?
A: Revenue → COGS → Gross Profit → OpEx → EBITDA → D&A → EBIT → Interest → Taxes → Net Income → +D&A → −ΔWC → −CapEx → FCF.

Q: Common circular reference cause?
A: Interest expense uses average debt, which depends on cash flow, which depends on interest. Resolve via iterative calculation (File → Options → Formulas).

Q: Best practice: hardcoded inputs?
A: Use a distinct fill color (e.g., yellow) for input cells; black for formulas; blue for cross-sheet references.

Q: Conditional formatting for >10% growth?
A: Home → Conditional Formatting → New Rule → 'Use a formula' → =B2/A2-1>0.1 → format green.

Q: Hide error display in cells?
A: Wrap with =IFERROR(...) or set conditional format to whiten error values.

Q: Power Query use case?
A: Connect to a source (CSV/SQL/API), transform with steps that re-run on refresh — automate repetitive cleaning.

Q: Power Pivot vs Power Query?
A: Power Query: shape/load data.
Power Pivot: build a relational model + DAX measures for analysis.

Q: DAX measure: distinct customer count?
A: Customers := DISTINCTCOUNT(Orders[CustomerId])

Q: DAX 'time intelligence' for YoY%?
A: YoY% := DIVIDE([Sales], CALCULATE([Sales], SAMEPERIODLASTYEAR('Date'[Date]))) - 1

Q: CONCAT vs TEXTJOIN?
A: CONCAT(range): joins all, no separator.
TEXTJOIN(',',TRUE,range): customizable separator, skips empties.

Q: Split a column into pieces?
A: TEXTSPLIT(text, delim) (M365) or use Power Query / Text to Columns.

Q: Lookup with multiple criteria?
A: =XLOOKUP(1, (A:A=x)*(B:B=y), C:C) — boolean AND.

Q: Stop a formula from breaking when rows insert?
A: Use structured table references (Table1[Column]) — auto-adjust as the table grows.

Q: Show change vs prior period in a pivot?
A: Value Field Settings → Show Values As → Difference From / % Difference From.

Q: Best practice: separate model from inputs from outputs?
A: Three-section sheet layout: Inputs (yellow) → Model (black formulas) → Outputs (summary).

Q: Difference between NPV and PV?
A: PV(rate, nper, pmt, [fv], [type]) discounts a single future lump sum or annuity stream. NPV discounts a series of unequal cash flows that already start at period 1; you must add the period-0 outflow manually.

Q: MIRR formula?
A: =MIRR(values, finance_rate, reinvest_rate) — addresses IRR's flaw of assuming reinvestment at the IRR itself.

Q: NPV argument order gotcha?
A: NPV discounts the first value by 1 period, the second by 2, etc. A period-0 outflow must be added outside the NPV call, not listed as the first argument.

Q: RATE function purpose?
A: =RATE(nper, pmt, pv, [fv], [type], [guess]) — solves for the periodic interest rate of an annuity (e.g., implied yield on a loan with known payment).

Q: NPER function purpose?
A: =NPER(rate, pmt, pv, [fv], [type]) — number of periods to pay off a loan or reach a savings goal.

Q: EFFECT for effective annual rate?
A: =EFFECT(nominal_rate, periods_per_year) — converts a nominal rate compounded n times into the true EAR.

Q: IPMT vs PPMT?
A: IPMT = interest portion of a single period's payment. PPMT = principal portion. Useful for interest schedules and tax shields.

Q: Calculate cumulative principal paid over a loan?
A: =CUMPRINC(rate, nper, pv, start_period, end_period, type)

Q: Calculate cumulative interest paid over a loan?
A: =CUMIPMT(rate, nper, pv, start_period, end_period, type)

Q: Future value of an annuity due?
A: =FV(rate, nper, pmt, [pv], 1) — final argument 1 marks annuity due (payments at start of period).

Q: YIELD function?
A: =YIELD(settlement, maturity, rate, pr, redemption, frequency, [basis]) — bond yield to maturity given clean price.

Q: DURATION vs MDURATION?
A: DURATION = Macaulay duration in years. MDURATION = Macaulay / (1 + yld/freq); the price-sensitivity measure used for interest-rate risk.

Q: Convexity formula in Excel?
A: =CONVEXITY(settlement, maturity, coupon, yld, frequency, [basis])

Q: DV01 / PV01 estimate?
A: =(PRICE(sett,mat,coup,yld+0.0001,freq,basis)-PRICE(sett,mat,coup,yld,freq,basis))/10000 — dollar value of a 1bp move.

Q: ACCRINT for accrued interest?
A: =ACCRINT(issue, first_interest, settlement, rate, par, frequency, [basis]) — interest accrued since last coupon.

Q: TBILLPRICE / TBILLYIELD?
A: =TBILLPRICE(settlement, maturity, discount) and =TBILLYIELD(settlement, maturity, pr) — short-dated US T-bills quoted on a discount basis.

Q: VDB for partial-period depreciation?
A: =VDB(cost, salvage, life, start_period, end_period, [factor], [no_switch]) — declining-balance with switch to straight-line.

Q: SLN vs DB vs DDB?
A: SLN: straight-line (equal each period). DB: fixed declining balance. DDB: double-declining balance. All built-ins for asset depreciation.

Q: SYD depreciation?
A: =SYD(cost, salvage, life, per) — sum-of-years'-digits; front-loads depreciation.

Q: FILTER function syntax?
A: =FILTER(array, include, [if_empty]) — spills rows where include is TRUE. Example: =FILTER(A2:D100, B2:B100="Closed").

Q: SORT and SORTBY?
A: SORT(array, [sort_index], [order]) sorts an array. SORTBY(array, by_array, [order]) sorts one array by values in another.

Q: LET function benefit?
A: =LET(x, A1*2, y, x+5, y*3) — names intermediate results; faster, cleaner, easier to debug.

Q: LAMBDA for custom reusable functions?
A: =LAMBDA(x, x*2)(5) or define a named LAMBDA in Name Manager. Replaces UDFs for many use cases.

Q: OFFSET vs INDIRECT?
A: Both return dynamic ranges, but OFFSET is volatile (recalculates on every change) and INDIRECT evaluates text as a reference. Prefer INDEX for performance.

Q: Why avoid volatile functions in big models?
A: OFFSET, INDIRECT, NOW, TODAY, RAND, RANDBETWEEN recalc on every change — they slow large workbooks. Replace with INDEX where possible.

Q: CHOOSE function for scenario picks?
A: =CHOOSE(scenario_index, case1, case2, case3) — pick the nth argument. Common in Data Table / scenario-driven models.

Q: SWITCH vs nested IF?
A: =SWITCH(value, 1, "Low", 2, "Med", 3, "High", "Other") — cleaner than nested IFs when comparing one value to a list.

Q: IFS function syntax?
A: =IFS(cond1, val1, cond2, val2, TRUE, "default") — readable replacement for nested IFs.

Q: TEXTJOIN with conditional inclusion?
A: =TEXTJOIN(", ", TRUE, IF(A2:A100="Active", B2:B100, "")) entered as a dynamic array — joins only rows where condition is TRUE.

Q: ROUND vs ROUNDDOWN vs ROUNDUP?
A: ROUND rounds to nearest. ROUNDDOWN truncates toward zero. ROUNDUP away from zero. Use MROUND for nearest multiple.

Q: INT vs TRUNC?
A: INT rounds down to the next integer (-3.5 → -4). TRUNC removes the fractional part (-3.5 → -3) toward zero.

Q: Date math: EOMONTH?
A: =EOMONTH(start_date, months) — last day of the month n months before/after a date. Months = 0 gives this month-end.

Q: NETWORKDAYS for business days?
A: =NETWORKDAYS(start, end, [holidays]) — counts weekdays between two dates, optionally excluding a holiday range.

Q: WORKDAY shift for due dates?
A: =WORKDAY(start_date, days, [holidays]) — returns the working day n days from start, skipping weekends and holidays.

Q: TEXT for date formatting in formulas?
A: =TEXT(A1, "yyyy-mm-dd") — converts a date serial to a formatted string. Use in TEXTJOIN/concat for filenames and reports.

Q: COUNT vs COUNTA vs COUNTIF?
A: COUNT counts numbers only. COUNTA counts non-blank cells (any type). COUNTIF applies a condition.

Q: COUNTIFS for multi-condition tally?
A: =COUNTIFS(region, "EMEA", year, 2025, value, ">1000") — all conditions ANDed.

Q: SUMIFS argument order?
A: SUMIFS(sum_range, criteria_range1, criteria1, ...) — sum_range comes first, a common source of bugs since it differs from SUMIF.

Q: SUMPRODUCT for conditional sum?
A: =SUMPRODUCT((region="EMEA")*(value)) — multiplies the boolean (1/0) by the value, then sums. Pre-365 portable equivalent of SUMIFS.

Q: Cross-sheet 3D SUM?
A: =SUM(Jan:Dec!B5) — sums cell B5 across every sheet from Jan through Dec. Sheet order matters.

Q: Pivot: get distinct count of customers?
A: Drag Customer to Values → Value Field Settings → choose Distinct Count (Excel 2013+). Models the COUNT DISTINCT pattern.

Q: Pivot: show running total?
A: Value Field Settings → Show Values As → Running Total In → choose the date field.

Q: Pivot Slicer for interactivity?
A: Insert → Slicer, bind to a field, place on the dashboard. Slicers filter all connected pivots and charts.

Q: GETPIVOTDATA pros and cons?
A: Returns one cell from a pivot via formula — stable against layout changes, but the formula is verbose and pivots must remain.

Q: Conditional formatting with formulas: highlight row?
A: Use =$B2="Critical" in a CF rule applied to =$A2:$Z2 — the relative row reference paints the entire row.

Q: Custom number format for negatives in red?
A: #,##0;[Red]-#,##0;0 — positive ; negative (red, minus sign) ; zero. Three sections separated by semicolons.

Q: Format for currency with parentheses?
A: #,##0_);(#,##0) — accounting style: positive numbers right-aligned, negatives in parentheses.

Q: Format to display in millions with one decimal?
A: #,##0.0,,"M" — two trailing commas divide by 1,000,000 and append M. Avoids changing the underlying value.

Q: Trace Precedents vs Trace Dependents?
A: Formulas → Trace Precedents draws arrows from cells feeding into the selected formula. Trace Dependents shows the reverse. Critical for auditing models.

Q: Evaluate Formula tool?
A: Formulas → Evaluate Formula — steps through nested calculations one operator at a time. Indispensable for debugging NPV/IRR chains.

Q: #SPILL error cause?
A: A dynamic-array formula can't spill because a non-empty cell blocks the spill range. Clear the blocking cells or wrap with @ for implicit intersection.

Q: IFNA vs IFERROR?
A: IFNA traps only #N/A (preserves other errors so you notice bugs). IFERROR traps all error types — riskier because it hides formula mistakes.

Q: XLOOKUP with wildcard match?
A: =XLOOKUP("Acme*", Customers[Name], Customers[ID], "", 2) — match_mode 2 enables * and ? wildcards.

Q: STDEV.S vs STDEV.P?
A: STDEV.S is sample standard deviation (n-1) — use for portfolios and estimates. STDEV.P is population (n) — use when you have the full universe.

Q: COVARIANCE.P vs CORREL?
A: COVAR / COVARIANCE.P measures directional co-movement. CORREL normalizes to [-1, 1] — usually what you want for diversification analysis.

Q: SLOPE and INTERCEPT for a regression?
A: =SLOPE(y_range, x_range) and =INTERCEPT(y_range, x_range) — quick OLS coefficients. RSQ returns R².

Q: What-if: two-variable Data Table?
A: Set up a table with one input along the top row, another down the left column, and a cell with the formula being evaluated. Data → What-If → Data Table.

Q: Solver for optimization?
A: Add-in: File → Options → Add-ins → Solver. Sets an objective cell to max/min/value, subject to constraints on changing cells. Use GRG Nonlinear for smooth models, LP Simplex for linear.

Q: Monte Carlo simulation in Excel?
A: Generate N random inputs with =NORM.INV(RAND(), mean, stdev), copy a model that produces an output, and record results. Data Table or VBA can iterate.

Q: Data Validation: restrict to a list?
A: Data → Data Validation → List → enter values or point to a range. Prevents bad inputs in input cells.

Q: Protection: lock formulas but allow inputs?
A: Format cells → uncheck Locked on input cells, then Review → Protect Sheet. Users can only edit unlocked cells.

Q: Clean text: TRIM / CLEAN / SUBSTITUTE?
A: TRIM: removes extra spaces. CLEAN: strips non-printable chars. SUBSTITUTE: replaces specific text — =SUBSTITUTE(A1, "$", "") strips dollar signs.

Q: Convert text date to real date?
A: =DATEVALUE("2025-12-31") or =DATE(RIGHT(A1,4), MID(A1,6,2), LEFT(A1,2)) for fixed-width strings.

Q: LEFT / MID / RIGHT for parsing?
A: =LEFT(A1, 3), =MID(A1, 5, 2), =RIGHT(A1, 4) — extract substrings. Combine with FIND/SEARCH for position-aware parsing.

Q: LEN and FIND for delimiter location?
A: =FIND("-", A1) gives the position of the first "-". =LEN(A1) gives total length — used together to split names or IDs.

Q: VALUE / NUMBERVALUE for parsing?
A: =NUMBERVALUE("$1,234.56") parses currency-formatted strings to numbers, accepting locale-specific separators. =VALUE("123") is the simpler legacy form.

Q: VSTACK in M365?
A: VSTACK stacks ranges vertically, HSTACK horizontally. Useful for stitching monthly extracts into one table.

Q: DAX: filter context vs row context?
A: Filter context is set by slicers, page filters, and CALCULATE filters — it determines which rows are aggregated. Row context is the current row iterated by a calculated column or iterator (SUMX, FILTER).

Q: CALCULATE basics?
A: CALCULATE([Sales], 'Date'[Year] = 2025) — evaluates the measure under a modified filter context. Foundation of almost every advanced DAX measure.

Q: SUMX vs SUM?
A: SUM aggregates a column. SUMX iterates a table and evaluates an expression per row — e.g., SUMX(Sales, Sales[Qty] * Sales[Price]) for revenue.

Q: AVERAGEX for line-item averages?
A: =AVERAGEX(Sales, Sales[Amount]) — averages over a derived table, e.g., per-customer or per-day averages that ordinary AVERAGE can't produce.

Q: ALL to ignore filters?
A: CALCULATE([Sales], ALL('Date')) — removes filters from the Date table. Useful for "% of grand total" measures.

Q: DIVIDE vs /?
A: DIVIDE(numerator, denominator, alternate) handles divide-by-zero by returning the alternate (often BLANK()). Use instead of / to avoid blank rows in visuals.

Q: Time intelligence: TOTALYTD?
A: TOTALYTD([Sales], 'Date'[Date]) — year-to-date total. Companion: TOTALQTD, TOTALMTD.

Q: DATEADD for prior period?
A: CALCULATE([Sales], DATEADD('Date'[Date], -1, MONTH)) — same period one month earlier, smoothing month-length differences.

Q: PARALLELPERIOD vs DATEADD?
A: PARALLELPERIOD rolls to the start of the period (e.g., -1 YEAR gives the full prior year). DATEADD shifts by exact days, preserving partial periods.

Q: Cumulative balance with DAX?
A: CALCULATE([NetFlow], FILTER(ALL('Date'), 'Date'[Date] <= MAX('Date'[Date]))) — running total across the visible date range.

Q: USERELATIONSHIP for role-playing dimensions?
A: CALCULATE([Sales], USERELATIONSHIP(Sales[OrderDate], 'Date'[Date])) — activates a non-default relationship between fact and dimension.

Q: Quick ratio from financials?
A: =(CurrentAssets - Inventory) / CurrentLiabilities — often computed from a financial-statements table.

Q: Current ratio?
A: =CurrentAssets / CurrentLiabilities

Q: Debt-to-equity?
A: =TotalDebt / TotalEquity

Q: Interest coverage?
A: =EBIT / InterestExpense

Q: DSO (days sales outstanding)?
A: =AccountsReceivable / (Revenue / 365)

Q: DIO (days inventory outstanding)?
A: =Inventory / (COGS / 365)

Q: Cash conversion cycle?
A: =DSO + DIO - DPO — should be minimized to free working capital.

Q: DuPont identity?
A: ROE = (NetIncome/Sales) * (Sales/Assets) * (Assets/Equity) — break ROE into margin, turnover, leverage.

Q: Free cash flow to firm?
A: =EBIT*(1-tax) + D&A - ΔWC - CapEx — unlevered cash flow available to all capital providers.

Q: Free cash flow to equity?
A: =NetIncome + D&A - ΔWC - CapEx + NetBorrowing — cash available to equity holders after debt service.

Q: Terminal value: Gordon growth?
A: =FinalFCF * (1+g) / (WACC - g)

Q: Terminal value: Exit multiple?
A: =FinalMetric * ExitMultiple — e.g., LTM EBITDA × 8.

Q: Implied share price from EV?
A: =(EnterpriseValue - NetDebt - Preferred) / DilutedShares

Q: EV/EBITDA multiple formula?
A: =EnterpriseValue / LTM_EBITDA — sanity-check vs comparables.

Q: Net debt computation?
A: =TotalDebt - CashAndEquivalents — subtract all interest-bearing cash to avoid inflating equity value.

Q: CAPM with size and value premiums?
A: Re = Rf + β*Mkt + s*SMB + v*HML — Fama-French 3-factor extension.

Q: Cost of equity from dividend growth?
A: Re = D1/P0 + g — Gordon model on equity cash flows.

Q: Annuity PV factor shortcut?
A: = (1 - (1+r)^-n) / r — closed form for equal-payment PV; Excel uses PV(rate, nper, -1).

Q: Break-even units?
A: =FixedCosts / (Price - VariableCost) — sales volume at zero profit.

Q: Operating leverage?
A: =ContributionMargin / OperatingIncome — % change in EBIT from a 1% change in sales.

Q: EBIT to EBITDA bridge in formulas?
A: EBITDA = EBIT + D&A — add back the period's depreciation and amortization. Watch for impairment add-backs.

Q: Ctrl+Shift+Enter legacy CSE?
A: In pre-365 Excel, multi-cell array formulas required Ctrl+Shift+Enter. The curly braces {=...} are an artifact, not something you type.

Q: Spilled range operator (#)?
A: =A2# references the entire spill range of the formula in A2. Cleaner than OFFSET for dynamic ranges.

Q: Implicit intersection with @?
A: =@A1:A10 returns the value from the row of the formula — a way to opt out of spill behavior in a single cell.

Q: Hyperlink to a specific sheet cell?
A: =HYPERLINK("#'P&L'!A1", "Open P&L") — sheet names with spaces or & require single quotes.

Q: Absolute shortcut when typing?
A: Press F4 while the cursor is in a reference to cycle through $A$1 → A$1 → $A1 → A1.

Q: DGET for database criteria?
A: =DGET(database, field, criteria) — extracts a single value from a table that matches a criteria range. Useful for ad-hoc lookups with multi-condition criteria.

Q: DSUM / DAVERAGE for multi-condition totals?
A: =DSUM(database, "Amount", criteria) — adds a top header row to a criteria block and aggregates by multiple conditions without SUMIFS.

Q: FORMULATEXT to display a formula?
A: =FORMULATEXT(A1) — returns the formula text in A1 as a string. Good for documentation tabs in complex models.

Q: ISFORMULA to highlight calculations?
A: =ISFORMULA(A1) returns TRUE if the cell contains a formula. Combine with conditional formatting to color-code calculations vs inputs.

Q: Convert serial number back to date after arithmetic?
A: Wrap in =TEXT(...) with a date format, or apply a date number format. Subtracting two dates yields days; dividing by 365 gives years only approximately.

Q: Approximate YTM with RATE on bond cash flows?
A: Build a schedule of [-Price, Coupon, Coupon, ..., Coupon+Par], then =RATE(N, Coupon, -Price) — the bond's YTM as if it were an annuity.

Q: P-value for correlation?
A: =T.DIST.2T(ABS(r)*SQRT((n-2)/(1-r^2)), n-2) with r = PEARSON(...) — two-tailed p-value for correlation significance.

Q: NPV with mid-year convention?
A: Discount each cash flow by an extra 0.5 year: =NPV(rate, FCF1/1.5, FCF2/2.5, ...) — or use XNPV with dates in the middle of each year.

Q: Sensitivity of NPV to WACC: chart?
A: Build a small table: WACC values from 7% to 12% in column A, =NPV(A2, FCFs)+InitialOutflow in column B, then line chart. A picture of the NPV curve at a glance.

Q: Monte Carlo with Data Table?
A: One column of random inputs (e.g., =NORM.INV(RAND(),mu,sig)), one cell evaluating the outcome, then a Data Table across N rows — Excel will repopulate RAND() per iteration.

Q: Workbook calculation mode: Manual?
A: Formulas → Calculation Options → Manual — disables auto-recalc. Useful in very large workbooks; remember to press F9 before viewing results.

Q: Quick age in years from a DOB?
A: =DATEDIF(DOB, TODAY(), "Y") — uses the hidden DATEDIF function. Pair with "YM" and "MD" for finer precision.

Q: Quick drawdown calculation?
A: RunningPeak = MAX(returns so far); Drawdown = (value - RunningPeak)/RunningPeak. Implement in a helper column or with SCAN/MAX in M365.

Q: Sharpe ratio (annualized)?
A: =(AVERAGE(returns) - Rf) / STDEV.S(returns) * SQRT(periods_per_year) — 252 for daily, 12 for monthly.

Q: Sortino ratio?
A: =(AVERAGE(returns) - Rf) / STDEV.S(IF(returns<Rf, returns)) * SQRT(periods_per_year) — uses downside deviation only.

Q: Beta from returns series?
A: =SLOPE(stock_returns, market_returns) — covariance over variance, equivalent to regression slope.