Skip to main content
Glama
AlvisoOculus

Equity Comp Tax (ISO/NSO/RSU/QSBS), Concentration & Hedging Optimizer

protective_put_price

Read-onlyIdempotent

Price a protective put or zero-cost collar on a single-stock position, reporting annualized hedge cost, maximum loss, upside cap, and probability of protection floor hit.

Instructions

Black-Scholes pricing of a protective put or zero-cost collar on a single-stock position. Use for standalone hedge pricing on a single-stock position; for concentration-vs-hedge tax-cost comparison, use concentration_analyze with a hedgeChoice. Parameter interactions an agent should know: volatility omitted falls back to sector_stats[sector].annualVol × 1.20 (the implied-over-realized vol multiplier); supply an explicit sigma when the user provides one. For collars, omitting upsideCapPct lets the tool back-solve the cap that zeros the net premium (truly zero-cost collar); supplying upsideCapPct overrides the solver and yields a non-zero net premium when the cap is wider than zero-cost. tenorYears drives the risk-free-rate lookup AND the floor-hit / cap-hit probability metrics, so changing tenor shifts every probability output even at fixed strike. expectedReturn affects only the probability metrics (real-world drift in the floor-hit / cap-hit calculations); premium math is risk-neutral and ignores it (default 0). protectionLevel sets the put strike as (1 − protectionLevel) × spot; raising it widens the protected zone but raises premium roughly linearly. Closed-form, deterministic, offline: sector volatility table and risk-free-rate curve compiled in. Reports annualized hedge cost as a percentage of position value, maximum loss with the hedge in place, upside-participation cap (collar only, since the short call offsets the long put premium), and probability of hitting the protection floor over the tenor. Returns a top-level object with keys: inputs (echoed canonical input), riskFreeRate (used in Black-Scholes), realWorldDrift (from expectedReturn), barePut (strike, premium, annualCost, annualCostPct, maxLoss, badYearPrice, badYearDropPct, coveredLossAtBadYear, premiumToCoveredRatio, expectedProfit, premiumToExpectedProfitRatio), collar (putStrike, callStrike, netPremium, annualCost, annualCostPct, maxLoss, upsideCap, upsideCapPct, isZeroCost, capProbability), payoffTable, payoffRange, and recommended (the better of bare put vs collar given the inputs). Both barePut and collar blocks are always returned regardless of caller preference; the caller picks. Example call: {positionValue: 400000, sector: "tech_software", protectionLevel: 0.10, tenorYears: 1}. IMPORTANT: every field listed in required must come from the user's message. The model invoking this tool MUST NOT invent a value for any required field. If the user did not supply it, ask the user. For enum fields that accept unsure, pass unsure when the user does not know; do not guess yes/no.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
positionValueYesMarket value of the underlying single-stock position, USD. Premium and max-loss scale linearly with this.
sectorYesSector tag. Drives the default volatility when no explicit `volatility` is supplied. Lookup table is in lib/markets/sector-stats.ts.
volatilityNoAnnualized implied volatility (sigma) of the stock. Defaults to a sector-typical IV when omitted. The model SHOULD NOT invent this. Either pass an explicit value the user gave you, or omit it and let the sector default apply.
protectionLevelYesPut strike as (1 − this fraction) × spot. 0.10 = 10% OTM put. Range 0.05..0.50.
tenorYearsYesOption tenor in years. 1 = 12-month; 0.25 = ~90-day.
expectedReturnNoAnnual expected stock return (decimal). Drives risk-neutral drift in the cap-hit / floor-hit probability metrics. Does not affect premium math. Default 0.
tickerLabelNoOptional display string echoed back in the result. Not used in pricing.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description discloses fallback volatility behavior, back-solving for collars, and the effect of expectedReturn on probability metrics. Annotations confirm idempotency and non-destructive nature; no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is lengthy but well-structured with bullet points and clear sections. Almost every sentence adds value; slightly long but efficient for the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description details all return keys and structure. Includes example call. Fully covers usage, parameters, and behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and description adds significant value by explaining interactions (e.g., volatility default, protectionLevel effect, expectedReturn scope) beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it prices a protective put or zero-cost collar on a single-stock position. Distinguishes from sibling tool 'concentration_analyze' by noting the latter is for tax-cost comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use for standalone hedge pricing...' and provides alternative tool for other use cases. Additionally details parameter interactions and when to supply or omit fields.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AlvisoOculus/optionsahoy-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server