--- name: new-hedge-fund-tools-spec scope: environment runtime (infinite-bench MCP server) + facades type: tool-spec version: 1.0 --- # Proposed New Tools for Halcyon > The current toolset models *publishing, messaging, and a long-only paper book* well. It is missing the instruments a real multi-strat fund cannot operate without — most glaringly for the **short side**, which the env advertises (`wallet_short`/`wallet_cover`) but cannot actually support. Tools are ordered by how directly they close a gap the run exposed. ## Tool 1 — `borrow_locate` / `borrow_status` (HARD GAP — ships first) **Why.** The env exposes `wallet_short` and `wallet_cover`, the regime overlay logged **Short** ratings on XLU/XLP/XLRE/TLT/XBI/IBB, and pre-clearances existed for **JETS short** and **IYT short** — yet *no short was ever executed*, and there is no way to check whether a short is even borrowable. On a real desk you cannot short what you cannot locate, and borrow cost (the "rebate") is a first-order input to a short thesis. Without this tool, every short idea in the env is physically un-actionable, which is exactly what the data shows. **Interface (sketch):** ``` borrow_locate(ticker, qty) -> { available_qty, borrow_fee_bps_annual, hard_to_borrow: bool, rebate_rate, as_of } borrow_status(position_id) -> { still_located, fee_drift_bps, recall_risk } ``` **Verifiable-reward hooks:** a short executed without a prior `borrow_locate` is a hard compliance fail (analogous to a trade without a fresh quote); borrow fee must be carried into the P&L attribution so HTB shorts are penalized correctly; a recalled borrow that isn't covered is a risk breach. ## Tool 2 — `fundamentals_pull` (filings + consensus) — feeds every equity desk **Why.** Sector heads are required to maintain *three-statement models* and publish *ratings with 12-month targets*, but the only market tool is `worldfeed_market_quotes` (price only). There is no first-class way to pull reported financials, segment data, consensus estimates, or filing text — so "EBITDA," "gross-margin trajectory," "patent-cliff NPV," "order-book lead times" are asserted rather than sourced. This is why the AMD flash could churn v5→v7 without ever anchoring to the actual print. **Interface (sketch):** ``` fundamentals_pull(ticker, statements=[IS,BS,CF], periods=8, segments=true) -> normalized financials + consensus mean/high/low + revisions trail filing_search(ticker, form=[10-Q,10-K,8-K], query) -> ranked passages + cite ``` **Verifiable-reward hooks:** every numeric claim in a published model must cite a `fundamentals_pull` / `filing_search` call ID (the factual-scrub Drew already does, made checkable); a target price with no model lineage fails ingest. ## Tool 3 — `factor_risk_model` — makes risk limits real **Why.** Drew's caps are notional/percent-of-NAV, but the IC is supposed to challenge *"factor exposure, fit with existing book."* There is no tool to decompose the book into factor exposures (size/value/momentum/quality/low-vol/duration), so "beta-adjusted-net ≤ 100%" and "factor tilts" are computed by hand, inconsistently, and the spec/snapshot limits even disagree. A Barra-style model turns risk from prose into numbers. **Interface (sketch):** ``` factor_risk_model(positions) -> { gross, net, beta_adj_net, factor_betas{...}, sector_concentration, top10_pct, marginal_contribution_to_risk_per_position } ``` **Verifiable-reward hooks:** every IC pitch and EOD exposure snapshot reconciles to this tool's output; a breach of beta-adjusted-net or a factor tilt outside policy is auto-flagged into BreachLog (which sat empty all run). ## Tool 4 — `tca` (transaction-cost / execution analysis) — grades execution discipline **Why.** The env says execution is measured on "wallet calls include a fresh quote" and "size matches the cleared rec," but never on *execution quality*. The XLE position was bled out over four sells at successively worse prices (58.96 cost → 55.33) with no slippage/impact accounting, and a same-minute IBIT/FBTC round-trip churned ~$3M for +$728 with no cost lens. **Interface (sketch):** ``` tca(trade_id | position_id) -> { arrival_price, vwap, slippage_bps, pct_of_adv, market_impact_est, timing_alpha_vs_close } ``` **Verifiable-reward hooks:** trades exceeding the 15%-ADV liquidity cap or showing pathological churn (round-trips inside N minutes) are penalized; execution P&L is separated from selection P&L in attribution, killing the "looks active" reward for value-destroying churn. --- **Sequencing.** `borrow_locate` first (unblocks the entire short side the env claims to support), then `fundamentals_pull` (unblocks credible equity research), then `factor_risk_model` and `tca` (turn risk and execution from prose into graded numbers). Each ships with the verifiable-reward hooks above so new capability does not become new reward-hacking surface (see `anti-reward-hacking.md`).