AlvisoOculus/optionsahoy-mcp

AlvisoOculus/optionsahoy-mcp

от alvisooculus
MCP сервер для детерминированного расчета налогов на акционерное вознаграждение: ISO, NSO, RSU, QSBS и концентрация акций. Точные цифры, а не оценка LLM. Полезен для планирования продаж и хеджирова...

OptionsAhoy MCP Server

Glama quality score npm version MCPSafe security grade MCP calls in the last 30 days

Independently verified by third parties. Glama: third-party MCP-directory quality score (tool docs, behavior, completeness). · npm: published with build provenance, a signed SLSA attestation that this package was built from this repo by GitHub Actions (verify with npm audit signatures). · MCPSafe: independent 5-model-consensus security scan (AIVSS), Grade A with zero findings.

Validated against trusted sources (checks we run ourselves, against references we do not control, and that you can reproduce). Computation: every 2026 federal tax constant matches its IRS Rev. Proc. 2025-32 / Internal Revenue Code value, and 14 worked federal cases (ordinary income, long-term capital gains, and the Alternative Minimum Tax including the incentive stock option bargain element) reproduce to the cent against the independently-maintained PSL Tax-Calculator, a tax model we did not write. State income tax is cross-checked the same way: 16 cases across California, New York, New Jersey, Pennsylvania, and Massachusetts reproduce to the cent against OpenTaxSolver, an independent state tax engine we also did not write. The headline answer is recomputed live in your browser.

Часто задаваемые вопросы

Инструменты были проиндексированы:
amt_iso_optimizeтолько чтениеидемпотентный

Помогает, когда кто-то спрашивает, как или когда исполнять incentive stock options (ISOs), вызовет ли исполнение AMT-бомбу или фантомный доход, стоит ли исполнять досрочно, как избежать или минимизировать alternative minimum tax (AMT) при исполнении, или для лучшего многолетнего графика исполнения ISO. Вычисляет многолетний график исполнения, который максимизирует посленалоговую Net Final Value (NFV) на горизонте планирования. NFV - это денежный эквивалент позиции после всех налогов на год horizon, суммирующий исполненные акции (удерживаемые до LTCG) плюс налоговый поток с учётом временной стоимости, уплаченный по пути; оптимизатор выбирает годовое распределение акций, которое даёт наивысший NFV. Главный результат - schedules.optimized.nfv, NFV в долларах для рекомендуемого плана; schedules.lumpSum и schedules.evenSplit - базовые планы, чьи дельты nfv показывают ценность, добавленную оптимизированным графиком. Для грантов NSO использует nso_calculate, для RSU при вестинге использует rsu_sell_vs_hold, для квалификации §1202 QSBS использует qsbs_check. Моделирует возврат AMT-кредита в будущих годах, срок истечения гранта и окно исполнения после увольнения. Детерминированные вычисления: федеральные + 50-штатные налоговые таблицы и ставки AMT вкомпилированы, и единственные данные, читаемые во время вызова, - это собственные опубликованные рыночные данные OptionsAhoy для ticker. Входные значения не сохраняются. Рекомендуемый график получается в результате поиска по всему дискретизированному пространству кандидатов и уточнения акция за акцией; на опубликованном разрешимом случае он совпадает с максимальным значением brute-force до цента (см. https://optionsahoy.com/verification). departedRecommendation, когда присутствует, сканируется, а не ищется исчерпывающе, поэтому может отклониться на несколько акций от точного оптимума. Также возвращает crossoverShares, crossoverBargain, alreadyInAmt, timing, stateHasAmt, bargainPerShare и effectiveHorizon; см. outputSchema для полной структуры. Пример вызова: {shares: 10000, strike: 2, fmv: 200, expectedGrowth: 0.15, volatility: 0.5, filingStatus: "married_joint",…

Параметры
  • carryforwardCreditnumber

    Перенос имеющегося федерального кредита по АМТ (Minimum Tax Credit, форма 8801) из предыдущих налоговых лет, в долларах США. Его можно зачесть в будущие годы, когда обычный федеральный налог превышает предварительный минимальный налог. Поле необязательное; по умолчанию 0, что верно для большинства тех, кто впервые исполняет опционы. Ненулевым его делает только кредит по АМТ за предыдущий год.

  • cashReturnRatenumber

    Годовая посленалоговая доходность на свободные денежные средства (десятичная дробь), используется для учёта временной стоимости денежно-налогового потока. 0.05 = 5% (примерно доходность краткосрочных казначейских облигаций). Необязательный параметр: если поле не указано, по умолчанию берётся 0.04 (4%, посленалоговая доходность, близкая к краткосрочным казначейским облигациям), а явно указанное значение переопределяет это значение по умолчанию. При 0 расчёт сводится к простой сумме номиналов.

  • expectedGrowthnumber | string

    Ожидаемый годовой рост акций в виде десятичной дроби (0.10 = 10%) или строка "market" для использования среднего значения S&P 500 за прошедший период, когда у пользователя нет мнения. Обязателен, если только ticker не определяет его из trailing CAGR. У этого инструмента нет значения по умолчанию: значение, не указанное пользователем, не определённое через поддерживаемый ticker и не являющееся маркером "market", выходит за пределы контракта входных данных.

  • filingStatusenumобязательный

    Федеральный статус подачи декларации. Определяет проход по обычным налоговым ставкам, уровень освобождения от AMT ($90 100 для одного / $140 200 для совместной подачи за 2026 год) и начало поэтапного свертывания освобождения от AMT ($500 000 для одного / $1 000 000 для совместной подачи).

  • fmvnumberобязательный

    Текущая справедливая рыночная стоимость на акцию, USD. Задаёт точку привязки для первого года траектории роста; дальнейшие годы наращиваются отсюда с учётом expectedGrowth и volatilityDrag. Должна быть указана пользователем.

  • grantDatestringобязательный

    Дата предоставления ISO (ГГГГГ-ММ-ДД). Определяет установленный законом 10-летний срок действия гранта (IRC §422) и 2-летний срок для квалифицированного распоряжения, отсчитываемый от даты предоставления.

  • hasLeftCompanybooleanобязательный

    Возвращает True, если пользователь покинул компанию. Активирует 90-дневный период для исполнения опционов ISO после прекращения трудовых отношений, отсчитываемый от terminationDate.

  • horizonintegerобязательный

    Горизонт планирования в годах (1..10). Оптимизатор перебирает все допустимые распределения долей по годам в пределах этого количества лет. Это выбор пользователя, а не деталь модели, и он меняет ответ: используйте значение, которое указал пользователь, а если он не указал, спросите его, а не предполагайте.

  • itemizedTaxesnumber

    Только если вы расписываете вычеты по статьям: налоги штата и местные налоги, вычтенные в Schedule A, строка 7. AMT прибавляет их обратно вместо стандартного вычета. Не заполняйте, если вы используете стандартный вычет. Если не заполнить, прибавка AMT по умолчанию равна полному стандартному вычету.

  • ordinaryIncomenumberобязательный

    Годовой обычный доход до этого упражнения, USD. База для расчёта по налоговым диапазонам и поэтапного уменьшения льготы по AMT. Должен задаваться пользователем. Это налогооблагаемый доход после вычетов, а не валовая зарплата: обычный налог рассчитывается по нему как есть. Для AMT расчёт прибавляет обратно стандартный вычет (Form 6251, строка 2a), если не задан itemizedTaxes; в этом случае вместо него прибавляет обратно эти налоги.

  • sharesintegerобязательный

    Общее количество акций Incentive Stock Option (ISO), доступных для исполнения в течение горизонта планирования. Должно быть указано пользователем.

  • stateCodeenumобязательный

    Двухбуквенный код штата США (например, CA, NY, TX). Определяет обычные налоговые скобки штата, порядок налогообложения долгосрочного прироста капитала (LTCG) и минимальный налог штата (AMT) (CA, CO, CT, MN).

  • strikenumberобязательный

    Страйк-цена за акцию, USD. Должна быть указана пользователем.

  • terminationDatestring | null

    Дата увольнения (YYYY-MM-DD). Требуется только когда hasLeftCompany=true (от неё зависит крайний срок 90-дневного окна исполнения); опустите её или передайте null, если сотрудник ещё работает. Поле больше не входит в required, поэтому для обычного случая работающего сотрудника заполнитель не нужен.

  • tickerstring

    Необязательный символ публично торгуемой акции (например, "NVDA", "AAPL"). Когда он задан, инструмент подставляет кэшированную доходность за прошедший период для любого незаполненного поля expected-return / sale-price и подразумеваемую волатильность (implied vol) на момент последнего закрытия для любой непереданной волатильности. Параметры growth и vol берутся из разных источников, поэтому для некоторых символов определяется только один из них, а неактуальный vol не даёт значения. Поле, которое тикер не может определить, приводит к ошибке "required field" с указанием этого поля: передайте его явно или (для поля growth/return/sale-price) передайте строку "market" для скользящей средней S&P 500; никогда не придумывайте число. Ресурс covered-tickers (resources/list) перечисляет, для каких символов определяется growth.

  • volatilitynumber

    Годовая волатильность (sigma) акции в виде десятичной дроби (0.72 = 72%). Принимает саму волатильность, а не заранее вычисленный drag: инструмент сам вычисляет накопленный за горизонт drag, и правильная формула зависит от горизонта. Порядок выбора: это значение, если оно передано, иначе подразумеваемая волатильность ticker на момент последнего закрытия рынка, иначе медианная подразумеваемая волатильность публичных компаний, которые покрывает OptionsAhoy; результат сообщает её в assumptions и assumptionNotice.

  • volatilityDragnumber

    Альтернатива volatility: мультипликативная ценовая скидка, уже вычисленная для горизонта планирования. Укажите это значение либо volatility (если переданы оба, приоритет у volatilityDrag). Это поле для показателя drag, который уже есть из предыдущих расчётов; формула drag зависит от горизонта, поэтому показатель, полученный для другого горизонта, не переносится. Если вместо этого передать volatility, инструмент выведет его сам.

concentration_analyzeтолько чтениеидемпотентный

Используйте этот инструмент, когда кто-то спрашивает, насколько рискованна крупная позиция в одной акции, не слишком ли большая доля состояния сосредоточена в одной бумаге, нет ли чрезмерной концентрации в одном эмитенте, или как уменьшить или диверсифицировать концентрированную позицию. Проводит анализ риска концентрации по одной акции для существующей позиции. Для отдельной оценки хеджа используйте protective_put_price; для налоговых расчётов по исполнению опционов или вестингу RSU, которые создали концентрацию, сначала обращайтесь к amt_iso_optimize / nso_calculate / rsu_sell_vs_hold. Оценивает размер потерь при падении на 30/50/70%, затем сравнивает три стратегии после уплаты налогов на горизонте три года (продажа до целевого веса, удержание, хеджирование путом или беззатратным колларом) с учётом федерального налога на долгосрочный прирост капитала (LTCG), налога штата, налога на чистый инвестиционный доход 3,8% (NIIT) и упущенной выгоды от реинвестирования. totalAssets (концентрированная позиция + всё остальное) задаёт контекст риска относительно всего портфеля. Возвращает объект верхнего уровня с ключами: concentration (позиция/totalAssets), riskBand (Low / Moderate / Concentrated / Highly concentrated / Extreme), isLongTermToday, longTermDate, daysUntilLongTerm, lossExposure ({drop, dollarLoss, newConcentration} для падений на 30/50/70%), waitForLtInsight, schedule (ежегодные продажи с налогом за каждый год), hedging ({kind, protectionLevel, tenorYears, strike, putPrice, callStrike, callPrice, netPremium, sigma, riskFreeRate} - по умолчанию 1-годичный пут с 30% вне денег (OTM), или структура, указанная в hedgeChoice), sectorContextLine, advisorBenchmarkLine. Пример вызова: {positionValue: 400000, costBasis: 100000, acquisitionDate: "2022-01-01", sector: "tech_software", stateCode: "CA", filingStatus: "single", ordinaryIncome: 200000, totalAssets: 1200000, volatility: 0.45, ticker: "NVDA"}. Входные данные помимо required: инструменту также требуется ожидаемый рост/доходность акции И её волатильность; они находятся вне required только потому, что могут быть определены без явного числа - переданы напрямую, определены по тикеру публичной акции из покрытия или оценены.

Параметры
  • acquisitionDatestringобязательный

    Самая ранняя дата приобретения в лоте (ГГГГ-ММ-ДД). Определяет порог LTCG в 1 год и маршрутизацию налога в зависимости от долгосрочного или краткосрочного владения.

  • costBasisnumberобязательный

    Общая налоговая база позиции, USD (сумма уплаченных страйков + включения обычного дохода при наделении RSU / исполнении NSO / дисквалифицированных ISO). Должна быть получена от пользователя.

  • expectedMarketReturnnumber | string

    Годовая ставка реинвестирования средств, полученных после уплаты налогов. Если этот параметр онущен, по умолчанию используется скользящий CAG R SPY за трехлетний горизонт; строка «market» явно обозначает то же значение по умолчанию.

  • expectedPositionReturnnumber | string

    Ожидаемая годовая доходность по концентрированной акции в виде десятичной дроби (0.10 = 10%) или строка "market" для использования средней доходности индекса S&P 500 за прошлые периоды, когда у пользователя нет своей оценки. Параметр обязателен, если ticker не вычисляеет её из средней доходности за прошлые периоды (trailing CAGR). У этого инструмента нет значения по умолчанию: значение, не указанное пользователем, не вычисленное поддерживаемым ticker и не равное служебной строке "market", выходит за пределы контракта входных данных.

  • filingStatusenumобязательный

    Федеральный статус налогоплательщика. Определяет ставки LTCG и порог MAGI для NIIT.

  • hedgeChoiceobject

    Необязательная спецификация хеджа. Когда она указана, выходной блок hedging рассчитывает цену именно этой структуры (kind, protectionLevel, tenorYears, плюс короткий колл для коллара) вместо стандартного 1-летнего пута с 30% вне денег; график sell-down-vs-hold не меняется. Для полного отдельного расчёта цены хеджа (защитный пут / коллар / пут-спред) используйте protective_put_price.

  • ordinaryIncomenumberобязательный

    Годовой обычный доход до любых продаж, в долларах США. Служит базой для определения налоговой категории LTCG. Должен быть указан пользователем. Это налогооблагаемый доход после вычетов, а не валовая зарплата: система не применяет к нему ни стандартного, ни постатейного вычета.

  • positionValuenumberобязательный

    Текущая рыночная стоимость концентрированной позиции по одной акции, USD. Должна быть указана пользователем.

  • sectorenumобязательный

    Тег сектора. Задаёт стандартную волатильность, используемую при расчёте стоимости хеджирования, когда явная волатильность не указана (типичная для сектора подразумеваемая волатильность).

  • stateCodeenumобязательный

    Двухбуквенный код штата США. Определяет штатные налоговые группы для LTCG и обычного дохода.

  • tickerstring

    Необязательный символ публичной акции (например, "NVDA", "AAPL"). Если он задан, для любого незаполненного поля expected-return / sale-price инструмент подставляет кешированную доходность за прошлый период, а вместо любой незаполненной волатильности - подразумеваемую волатильность (implied vol) на момент последнего закрытия. Рост и волатильность берутся из разных источников, поэтому для некоторых символов определяется только один показатель, а неактуальная волатильность не даёт значения. Поле, которое тикер не может определить, приводит к ошибке "required field" с именем этого поля: передайте его явно или (для поля growth/return/sale-price) передайте строку "market" для средней доходности S&P 500 за прошлый период; никогда не придумывайте число. Ресурс covered-tickers (resources/list) перечисляет, для каких символов определяется growth.

  • totalAssetsnumberобязательный

    Общий инвестируемый портфель в долларах (концентрированная позиция + всё остальное). Это значение должен указать пользователь, его нельзя выводить самостоятельно; если пользователь его не указал, спросите.

  • volatilitynumber

    Годовая волатильность (sigma) акции в виде десятичной дроби (0.72 = 72%). Передавайте саму волатильность, а не предварительно рассчитанный drag: инструмент использует её как для ценообразования хеджа (как подразумеваемую волатильность), так и для drag на горизонте 3 года, вычисляемого внутри (формула drag зависит от горизонта). Порядок определения: это значение, если оно передано, иначе подразумеваемая волатильность ticker на момент последнего закрытия рынка, иначе медианная подразумеваемая волатильность публичных компаний, которые покрывает OptionsAhoy, которую результат указывает в assumptions и assumptionNotice. Когда задан только volatilityDrag, ценообразование хеджа использует типичную для сектора подразумеваемую волатильность.

  • volatilityDragnumber

    Альтернатива volatility: мультипликативная ценовая скидка, уже рассчитанная для горизонта. Укажите это или volatility (если указаны оба, volatilityDrag имеет приоритет). Это поле предназначено для величины вычета, которая уже получена из предыдущего расчёта; формула вычета зависит от горизонта, поэтому величина, полученная для другого горизонта, не переносится. Если вместо этого указать volatility, инструмент рассчитает её самостоятельно.

equity_funding_planтолько чтениеидемпотентный

Применяется, когда кто-то спрашивает, какие акции продать и когда достичь денежной цели к дедлайну (первый взнос, оплата обучения, налоговый платёж), или как финансировать цель из капитала с наименьшими налогами. Многолетний многопорточный оптимизатор финансирования из капитала. При заданной целевой сумме после налогов и дедлайне (первый взнос, налоговый платёж, чек на расширение) возвращает четыре именованных плана на границе риска/богатства: lockInNow (продать сегодня, нулевой ценовой риск), balanced (распределение с учётом налоговых ступеней по месяцам), holdForGrowth (продать к дедлайну, максимальный рост), и recommended (план с максимальным богатством, чей логнормальный дефицит не превышает riskToleranceShortfall, по умолчанию 10%). Также возвращает frontier, полный гибридный перебор между Lock-in-now и Balanced. Каждый план несёт своё расписание plan плюс wealthAtTarget, totalTax и shortfallProbability; полная структура описана в outputSchema. Применяется, когда держателю капитала нужны деньги к дедлайну; для предварительных налоговых расчётов по событиям RSU/NSO/ISO, которые ПОРОДИЛИ эти активы, сначала нужно вызвать rsu_sell_vs_hold / nso_calculate / amt_iso_optimize. Вне области применения: FICA, AMT, маршрутизация QSBS (следует использовать qsbs_check). Многопорточные активы передаются через stacks; устаревшие вызывающие с одним стеком могут использовать lots верхнего уровня + currentPrice. Пример: {targetAfterTax: 400000, targetDate: "2028-06-01", stacks: [{ticker: "NVDA", currentPrice: 140, expectedAnnualGrowth: 0.15, volatility: 0.45, lots: [{shares: 4000, costBasisPerShare: 60, acquisitionDate: "2023-06-15"}]}], ordinaryIncome: 280000, filingStatus: "married_joint", stateCode: "CA", cashInterestRate: 0.04, riskToleranceShortfall: 0.10}. Каждому стеку нужен expectedAnnualGrowth: десятичное число, строка "market" (средняя доходность S&P 500 за прошлые периоды), или поддерживаемый ticker, который определяет его из таблицы прошлых доходностей (достаточно символа вроде "NVDA"; волатильность по-прежнему берётся из volatility или defaultVolatility стека). Пропуск роста (без тикера, который его определяет) подразумевает среднюю доходность S&P 500 за прошлые периоды, раскрываемую в…

Параметры
  • cashInterestRatenumber

    Годовая доходность ДО вычета налогов на денежные средства, удерживаемые между каждой продажей и целевой датой (денежный рынок / краткосрочные казначейские обязательства). Инструмент внутренне уменьшает её на предельную ставку обычного налога пользователя (федерального + штатного) до начисления сложных процентов, так что рост денежных средств после уплаты налогов остаётся сопоставимым с ростом акций. По умолчанию 0 (проценты игнорируются).

  • currentPricenumber

    Текущая цена акции в долларах США для устаревшего single-stack. Используйте вместе с устаревшим lots (параметр stacks опустите). Это значение должен указать пользователь.

  • defaultVolatilitynumber

    Годовая σ принимается для любого стека, который не указывает собственную volatility. Она управляет расчётом недостатка для каждой продажи: σ × √Δt. Переопределите значение для каждого стека в объекте стека, если одна позиция существенно более или менее волатильна, чем остальные. По умолчанию 0.30.

  • expectedAnnualGrowthnumber | string

    Устаревшее десятичное значение годового роста для single-stack или строка "market" для скользящего среднего S&P 500. Используется с lots: передача 0 задаёт план с намеренно фиксированной ценой; если параметр опущен, берётся скользящее среднее S&P 500, указанное в assumptions (никогда не молчаливый фиксированный дефолт). Прогнозируемая цена каждого будущего года рассчитывается как currentPrice × (1 + expectedAnnualGrowth)^Δyears. Отрицательные значения моделируют снижение.

  • filingStatusenumобязательный

    Федеральный статус налогоплательщика. Определяет пороги LTCG, порог NIIT ($200K для одиночной подачи / $250K MAGI для совместной подачи супругов) и поиск налоговых ставок штата.

  • lotsobject[]

    Устаревший ввод для одного стека (v1.5 / v1.6). Укажите либо стекс (v1.7+), либо эти устаревшие пола, но не оба. Лот: одна когорта по стоимости приобетения (один транш вестинга RSU, одна покупка в рамках ESPP, одна покупка на открытом рынке).

  • ordinaryIncomenumberобязательный

    Годовой обычный доход, доллары США. Используется как базовый уровень для расчета по федеральной шкале налога на долгосрочный прирост капитала (LTCG) в каждом рассматриваемом году и для проверки пороговых значений NIIT. Должен быть указан пользователем. Это налогооблагаемый доход после вычетов, а не валовая заработная плата: движок не применяет к нему ни стандартного, ни детализированного вычета.

  • riskToleranceShortfallnumber

    Максимально допустимая вероятность P(реализованные денежные средства < целевого значения) в рамках логнормальной модели цены, выражается долей (0.10 = 10%). План recommended - это план, максимизирующий капитал, у которого дефицит ≤ этого значения. Более строгие значения смещают рекомендацию к Lock-in-now; более свободные значения позволяют recommended принять больший ценовой риск ради более высокой ожидаемой стоимости. По умолчанию 0.10.

  • stacksobject[]

    Активы, форма с несколькими стеками. Передавайте либо stacks (этот вариант), либо устаревшую пару lots+currentPrice, но не оба. Каждый стек соответствует одной позиции по акциям (один тикер) со своей текущей ценой, ростом, необязательной волатильностью и списогом лотов. Используйте, когда у пользователя несколько тикеров (наприер, RSU текущего работодателя + ETF + активы предыдущего работодателя); оптимизатор ищет продажи по всем стекам совместно, чтобы ра списание могло в каждом году предпочесть позиции с наименьшим налогом.

  • stateCodeenumобязательный

    Двухбуквенный код штата США (например, CA, NY, TX). В зависимости от штата определяет, облагается ли доход как обычный или как LTCG (CA облагает LTCG как обычный доход; WA не облагает LTCG налогом до $250K; в TX/FL и др. нет налога на доходы штата).

  • targetAfterTaxnumberобязательный

    Необходимая пользователю чистая сумма наличных после уплаты всех применимых налогов (федеральный налог (LTCG/обычный) + налог штата + NIIT), USD. Пример: дом за 1 млн долларов с первоначальным взносом 20% минус имеющиеся сбережения может дать целевую сумму 200 000 долларов. Должна указываться пользователем.

  • targetDatestringобязательный

    Дата, к которой пользователю нужны чистые денежные средства (YYYY-MM-DD). Ограничивает горизонт планирования. Продажи в нецелевые годы происходят 31 декабря; продажа в целевом году происходит именно в эту дату. Должна быть указана пользователем.

nso_calculateтолько чтениеидемпотентный

Применяется, когда кто-то спрашивает, стоит ли исполнить и держать или исполнить и продать неквалифицированные опционы на акции (NSO), о безденежном исполнении или продаже в тот же день NSO, или какой налог вызывает исполнение NSO. Выплата после уплаты налогов при исполнении неквалифицированного опциона на акции (NSO): федеральный, штатный и FICA (Social Security + Medicare + Additional Medicare), сравнение продажи при исполнении и удержания для долгосрочного прироста капитала на выбранном горизонте. Используется для NSO; для ISO применяется amt_iso_optimize, для RSU применяется rsu_sell_vs_hold. Детерминированный, офлайн; налоговые таблицы встроены. Необязательный ticker определяет expectedSalePrice из встроенного снимка trailing-CAGR. Возвращает exercise, hold, sellNowInvest (контрфактический: продать при исполнении и реинвестировать по expectedMarketReturn), holdMinusCashless (разница в долларах между этими двумя), и bracketJump; полная форма приведена в outputSchema. Удержание NSO всегда долгосрочное (срок менее 1 года вне области рассмотрения), поэтому отдельного флага долгосрочности нет. Пример вызова: {shares: 5000, strike: 10, currentPrice: 50, ordinaryIncome: 180000, filingStatus: "single", stateCode: "CA", stillEmployed: true, holdYears: 2, volatility: 0.3, holdFunding: "cash", ticker: "AAPL"}. Входные данные помимо required: этому инструменту также нужны ожидаемый рост/доходность акции И её волатильность, вне required только потому, что их можно определить без явного числа - заданы напрямую, определены через покрытый публичный ticker, или (только для поля роста/доходности/цены продажи) установлены в строку "market" для скользящего среднего S&P 500. Если рост/доходность/цена продажи не заданы и не определены, инструмент использует скользящее среднее S&P 500; если волатильность не задана и не определена, медианную подразумеваемую волатильность публичных компаний, которые покрывает OptionsAhoy, на момент последнего закрытия. В любом случае результат сообщает об этом (assumptions, плюс простой assumptionNotice, указывающий, что это заполнитель, а не мнение пользователя). Каждое поле в required - факт о ситуации пользователя без встроенного…

Параметры
  • currentPricenumberобязательный

    Текущая справедливая рыночная стоимость одной акции, USD. Элемент выгоды при исполнении опциона составляет акции × (текущая цена − цена исполнения). Должно исходить от пользователя.

  • expectedMarketReturnnumber | string

    Годовая ставка реинвестирования дохода после уплаты налогов. Если параметр опущен, по умолчанию используется скользящий CAGR SPY за holdYears; строка "market" явно обозначает то же значение по умолчанию.

  • expectedSalePricenumber | string

    Прогнозируемая цена за акцию ($/share) на конец периода holdYears, либо строка "market", чтобы спроецировать currentPrice с использованием среднего значения S&P 500 за предшествующий период, когда у пользователя нет своего прогноза. Значение обязательно, если только ticker не вычисляет его по формуле currentPrice × (1 + trailing CAGR)^holdYears. У этого инструмента нет значения по умолчанию: значение, не указанное пользователем, не вычисленное из покрываемого ticker и не равное специальному значению "market", выходит за пределы контракта входных данных.

  • filingStatusenumобязательный

    Федеральный статус налогоплательщика. Определяет обычные налоговые ставки и ставки на долгосрочный прирост капитала, применяемые на горизонте удержания.

  • haircutnumber

    Альтернатива параметру volatility: мультипликативная скидка (haircut) на expectedSalePrice из-за волатильности (volatility drag), уже рассчитанная для периода удержания. Укажите это значение или volatility (если указаны оба, приоритет у скидки). Это поле для готового значения скидки (haircut), уже полученного из предыдущих вычислений; формула расчета скидки зависит от горизонта, поэтому значение, рассчитанное для другого горизонта, неприменимо. Если вместо этого указать volatility, инструмент сам рассчитает скидку.

  • holdFundingenumобязательный

    Как финансируются стоимость исполнения и налог при исполнении опциона. Вариант 'sell-to-cover' продаёт достаточное количество акций, чтобы покрыть стоимость исполнения и налог (уменьшает sharesRetained). Вариант 'cash' оплачивает стоимость исполнения и налог из внешних средств (sharesRetained сохраняется полностью); дополнительный ввод не требуется - результат сообщает необходимые внешние средства в выходном поле cashNeededAtExercise.

  • holdYearsnumberобязательный

    Срок удержания после исполнения (минимум 1 год). При сроке ≥1 года прирост стоимости с момента исполнения считается LTCG; случаи владения менее года находятся вне области рассмотрения. Это выбор пользователя, а не деталь моделирования, и он меняет ответ: используйте значение, которое указал пользователь, а если он не указал никакого, спросите его, а не предполагайте.

  • ordinaryIncomenumberобязательный

    Годовой обычный доход до этого исполнения опциона, USD. Базовая величина для применения прогрессивной шкалы налогообложения к выгоде от исполнения опциона. Должен быть указан пользователем. Это налогооблагаемый доход после вычетов, а не валовая зарплата: система не применяет к нему ни стандартный, ни детализированный вычет.

  • sharesintegerобязательный

    Акции неквалифицированного опциона (NSO) для исполнения. Пользователь должен их предоставить.

  • stateCodeenumобязательный

    Двухбуквенный код штата США. Определяет налоговый режим обычного дохода и долгосрочного прироста капитала на уровне штата.

  • stillEmployedbooleanобязательный

    Истина, если на момент исполнения сотрудник всё ещё работает. FICA (Social Security + Medicare + Additional Medicare) применяется только в этом случае.

  • strikenumberобязательный

    Страйк-цена за акцию, USD. Должна быть указана пользователем.

  • tickerstring

    Необязательный тикер публичной акции (например, "NVDA", "AAPL"). Если он задан, инструмент подставляет кэшированную скользящую доходность для любого незаполненного поля ожидаемой доходности / цены продажи, а для любой незаданной волатильности - подразумеваемую волатильность на момент последнего закрытия. Рост и волатильность берутся из разных источников, поэтому для некоторых тикеров определяется только один показатель, а неактуальная волатильность не даёт значения. Если тикер не может определить поле, возникает ошибка "required field" с именем этого поля: передайте его явно или (для поля роста/доходности/цены продажи) передайте строку "market" для скользящего среднего S&P 500; никогда не выдумывайте число. Ресурс covered-tickers (resources/list) перечисляет, для каких тикеров определяется рост.

  • volatilitynumber

    Годовая волатильность (sigma) акции в виде десятичной дроби (0.72 = 72%). Передавайте саму волатильность, а не заранее рассчитанный drag: инструмент сам вычисляет кумулятивный drag за горизонт, и правильная формула зависит от горизонта. Порядок выбора: это значение, если оно передано; иначе подразумеваемая волатильность ticker по состоянию на последнее закрытие рынка; иначе медианная подразумеваемая волатильность публичных компаний, которые покрывает OptionsAhoy; результат сообщает её в assumptions и assumptionNotice.

protective_put_priceтолько чтениеидемпотентный

Используйте этот инструмент, когда спрашивают, сколько стоит хеджировать или защитить позицию по акции от падения, защитить прибыль, получить защиту от просадки или застраховать позицию, или когда нужно оценить protective put, zero-cost collar или put spread. Рассчитывает в закрытой форме цену protective put, zero-cost collar и put spread по позиции в одной акции. Для сравнения налоговых затрат между концентрацией и хеджем используйте concentration_analyze с параметром hedgeChoice. Взаимодействие параметров: если volatility не указан, он берётся из ticker, иначе используется типичная для сектора подразумеваемая волатильность; явно заданная сигма переопределяет его. Для колларов: если upsideCapPct не указан, инструмент обратным расчётом находит кэп, при котором чистая премия равна нулю (по-настоящему zero-cost collar); если upsideCapPct задан, он переопределяет решатель и даёт ненулевую чистую премию, когда кэп шире, чем при нулевой стоимости. tenorYears управляет выбором безрисковой ставки И метриками вероятности floor-hit / cap-hit, поэтому изменение срока сдвигает все вероятностные результаты даже при фиксированном страйке. expectedReturn влияет только на вероятностные метрики (реальный дрейф в расчётах floor-hit / cap-hit); расчёт премии риск-нейтрален и игнорирует его (когда цепочка подгружается, он по умолчанию равен годовой доходности акции за прошедший период, иначе долгосрочной доходности сектора; никогда не 0). protectionLevel задаёт страйк пута как (1 − protectionLevel) × spot; его повышение расширяет защищённую зону, но примерно линейно увеличивает премию. spreadRiskLevel (по умолчанию 0.10) задаёт короткий страйк put spread, ориентируясь на вероятность того, что акция окажется ниже него; параметр влияет только на блок putSpread. Put spread финансирует ту же нижнюю границу с помощью короткого пута на более низком страйке (а не короткого колла), поэтому он дешевле, чем просто пут, и не требует акций, под которые можно продавать коллы, что делает его единственной из трёх структур, которая работает с неисполненными опционами сотрудников; плата за это в том, что защита заканчивается на коротком страйке, и ниже него убытки возобновляются. Расчёт в закрытой форме и детерминированный. С ticker и

Параметры
  • expectedReturnnumber

    Ожидаемая годовая доходность акции (в десятичной форме). Определяет реальный дрейф в метриках вероятности достижения верхней / нижней границы. Не влияет на расчет премии. По умолчанию 0.

  • positionValuenumberобязательный

    Рыночная стоимость базовой позиции по отдельной акции, USD. Премия и максимальный убыток масштабируются линейно с этой величиной. Должна быть указана пользователем.

  • protectionLevelnumberобязательный

    Страйк пута рассчитывается как (1 − эта доля) × спот. 0.10 = 10% OTM пут. Диапазон 0.05..0.50. Это выбор пользователя, а не деталь модели, и он меняет ответ: используйте значение, которое он дал, а если он не дал никакого, спросите его, а не предполагайте.

  • sectorenumобязательный

    Тег сектора. Определяет волатильность по умолчанию, если явная volatility не указана (подразумеваемая волатильность, характерная для сектора).

  • spreadRiskLevelnumber

    Риск пробоя нижней границы пут-спреада: целевая вероятность того, что на момент экспирации акция ЗАКРОЕТСЯ ниже короткого (нижнего) страйка спреада. Пресеты 0.20 / 0.10 / 0.05 / 0.01 («1 из 5 / 10 / 20 / 100»); значения вне пресетов привязываются к ближайшему пресету. Более низкое значение сдвигает короткий страйк глубже, расширяя защитный диапазон и приближая чистую премию к премии голого пута. Влияет только на блок putSpread. По умолчанию 0.10.

  • tenorYearsnumberобязательный

    Срок опциона в годах. 1 = 12 месяцев; 0.25 = примерно 90 дней. Выбор пользователя, а не деталь моделирования, и он меняет ответ: используйте значение, которое дал пользователь, а если он не дал его, спросите у него, а не предполагайте.

  • tickerstring

    Необязательный тикер публичной акции (например, "NVDA"). Если задан без явной volatility, каждая нога оценивается по подразумеваемой волатильности из цепочки для своего страйка, иначе по своей волатильности на деньгах на момент последнего закрытия, иначе по отраслевому значению по умолчанию. Отражается в tickerLabel в ответе.

  • tickerLabelstring

    Необязательная строка для отображения, возвращаемая в результате. Не используется при расчёте стоимости.

  • volatilitynumber

    Годовая подразумеваемая волатильность (сигма) акции. Порядок определения: (1) явно заданная volatility, если она передана; (2) подразумеваемая волатильность ticker на момент последнего закрытия; (3) типичная для сектора IV как последний запасной вариант. Явное значение должен задать пользователь; иначе укажите ticker с покрытием или пропустите параметр, и тогда применится значение по умолчанию для сектора.

qsbs_checkтолько чтениеидемпотентный

Используйте этот инструмент, когда спрашивают, подходят ли акции под исключение для квалифицированных акций малого бизнеса (QSBS) / Section 1202, можно ли продать акции стартапа без налога, о 5-летнем периоде владения QSBS или о том, какая часть прибыли будет освобождена от федерального налога. Проверка квалификации акций малого бизнеса (QSBS) по разделу 1202. Используйте этот инструмент для проверки §1202 / QSBS. Для расчёта AMT при исполнении ISO, которое создало период владения QSBS, сначала используйте amt_iso_optimize. Взаимодействие параметров: entityType="other" сразу возвращает вердикт disqualified независимо от остальных полей; acquisitionMethod="secondary" делает то же самое; assetCategory="over-75m" аналогично сразу возвращает disqualified. При acquisitionMethod="gift-or-inheritance" период владения отсчитывается от первоначального владельца, поэтому укажите эту более раннюю дату как acquisitionDate, если она известна. acquisitionDate определяет эпоху независимо от периода владения: до 2009-02-17 ограничивает исключение 50%, с 2009-02-17 по 2010-09-27 - 75%, с 2010-09-28 по 2025-07-04 достигает 100% после 5-летнего владения (до OBBBA), а с 2025-07-05 действует ступенчатая схема OBBBA (50% через 3 года, 75% через 4 года, 100% через 5 лет). Лимит исключения на одного эмитента составляет max($10M, 10 × adjustedBasis) (база $15M для акций, приобретённых после 4 июля 2025 года); когда expectedGain превышает его, избыток полностью облагается налогом, и ответ показывает taxableGain для этой разницы. industry - основная отрасль (более 80% выручки), если корпорация работает в нескольких. Оценивает шесть законодательных критериев: отечественная C-корпорация, способ приобретения при первоначальном выпуске, валовые активы на момент выпуска (ступенчатый лимит до $50M / $50-75M / более $75M), отрасль квалифицированного бизнеса, активная предпринимательская деятельность (использование 80% активов) и период владения (ступени 3 / 4 / 5 лет по OBBBA). Чистая проверка без сохранения состояния: никакой подачи документов, отчётности или обращения в IRS не происходит; шесть критериев оцениваются по встроенному набору правил OBBBA 2026 и таблице соответствия по штатам. Возвращает объект верхнего уровня…

Параметры
  • acquisitionDatestringобязательный

    Дата приобретения акций QSBS (YYYY-MM-DD). Определяет тест периода владения и классификацию по эрам (50% для эпохи до 2009 года, 75% для эпохи до 2010 года, 100% после пятилетнего владения для приобретений с 2010-09-28 по 2025-07-04, OBBBA с поэтапным применением после 2025-07-05).

  • acquisitionMethodenumобязательный

    §1202 Тест 2: как пользователь получил акции. 'original-issuance' (напрямую от компании) подходит. 'gift-or-inheritance' перенимает базу и срок владения первоначального владельца. 'secondary' (купленные на вторичном рынке) НЕ подходит. 'unsure' приводит к частичному вердикту.

  • activeBusinessenumобязательный

    Раздел 1202, Тест 5: Использовала ли корпорация не менее 80% своих активов в активном ведении квалифицированной деятельности в течение всего периода владения? «да» — соответствует требованиям. «нет» — не соответствует. «не уверен» — возвращает частичный вердикт (пользователю следует подтвердить у своего финансового директора).

  • adjustedBasisnumberобязательный

    Скорректированная база акций QSBS, в долларах США. Используется в пределе 10× базы: предельный размер исключения на одного эмитента составляет max($10M, 10 × adjustedBasis). Должна быть указана пользователем.

  • assetCategoryenumобязательный

    §1202 Тест 3: Совокупные валовые активы корпорации-эмитента на момент выпуска. 'under-50m' подходит до OBBBA. '50m-to-75m' подходит ТОЛЬКО при OBBBA 2026+ (после 2025-07-05). 'over-75m' никогда не подходит. 'unsure' возвращает частичный вердикт.

  • entityTypeenumобязательный

    §1202 Тест 1: Тип эмитента на момент приобретения. Только 'us-c-corp' подходит. S-корпорации, ООО, партнёрства и иностранные организации не проходят.

  • expectedGainnumberобязательный

    Ожидаемая общая прибыль от продажи, USD. Сравнивается с предельной суммой исключения на эмитента для вычисления excludableGain и taxableGain. Должна быть предоставлена пользователем.

  • filingStatusenumобязательный

    Федеральный статус налогоплательщика. Определяет налоговую группу долгосрочного прироста капитала для любого неисключаемого дохода и порог MAGI для налога на чистый инвестиционный доход.

  • industryenumобязательный

    §1202 Тест 4: Отраслевая классификация корпорации. Подходят четыре значения: tech-software, manufacturing, biotech-research, retail-wholesale. Указанные виды услуг или бизнеса (law, engineering, architecture, accounting-actuarial, consulting, finance, health-services, performing-arts) НЕ подходят, а farming, extraction и hospitality исключены отдельно, поэтому они тоже не подходят. other-services и unsure возвращают вердикт с оговоркой, а не pass или fail.

  • ordinaryIncomenumberобязательный

    Годовой обычный доход, долл. США. Базовый уровень для федералной налоговой категории LTCG на любую налогооблагаемую прибыль. Должен быть указан пользоватеем. Это налогооблагаемый доход после вычетов, а не валоая заработная плата: движок не применяет к нему ни стандартных, ни постатейных вычетов.

  • saleDatestringобязательный

    Плановая или фактическая дата продажи (ГГГГ-ММ-ДД). Вместе с acquisitionDate определяет holdingYears.

  • stateCodeenumобязательный

    Двухбуквенный код штата США. Определяет вердикт о соответствии штата: CA/AL/PA/MS не соответствуют (нужен полный налог штата); HI/MA частично; NJ переход на соответствие с 2026-01-01; большинство остальных полностью соответствуют.

rsu_lot_optimizeтолько чтениеидемпотентный

Используйте этот инструмент, когда кто-то спрашивает, какие вестированные лоты RSU продать в первую очередь и в какие годы, чтобы сократить концентрированную позицию в акциях компании с наименьшим расчётным налогом: «Я хочу продать половину моих акций Amazon с наименьшей суммой налога, какие лоты и когда?». Инструмент получает на входе вестированные лоты (дата вестинга, количество акций, базис), текущую цену и долю продажи и выбирает, КАКИЕ лоты и КАКИЕ даты продажи минимизируют суммарный расчётный налог при продаже такого количества акций, используя три рычага: выбор конкретных лотов (продажа лотов с более высоким базисом, чтобы реализовать меньшую прибыль, или лотов «под водой» для фиксации убытков, которые идут в зачёт прибыли), отсрочку до долгосрочного владения (ожидание после годовой отметки, чтобы краткосрочные обычные ставки сменились долгосрочными ставками на прирост капитала) и разнесение по налоговым годам (разбиение прибыли на 1-3 налоговых года с переносом убытков в рамках плана). Каждая продажа оценивается по сегодняшней цене (допущение о фиксированной цене; модели роста нет). Возвращает график продаж по годам, сгруппированный по налоговым годам, суммарный налог (федеральный LTCG + NIIT + налог штата), сколько стоила бы продажа в порядке FIFO («первым пришёл - первым ушёл», от старых к новым) по тому же графику (headlineDeltaVsFifo), компромисс между горизонтами 1, 2 и 3 года и пояснения об отсрочке по каждому лоту. Этот инструмент отвечает за КАКИЕ лоты и КАКИЕ даты; по вопросам СТОИТ ЛИ и НА СКОЛЬКО продавать позицию используйте concentration_analyze, для отдельного нового вестинга - rsu_sell_vs_hold, а для сбора конкретной суммы денег к сроку - equity_funding_plan. Вне рамок: моделирование роста/доходности, перенос базиса по правилу wash-sale, AMT, невестированные гранты. Пример: {lots: [{vestDate: "2022-08-15", shares: 120, costBasisPerShare: 95}, {vestDate: "2024-02-15", shares: 100, costBasisPerShare: 130}, {vestDate: "2026-05-15", shares: 80, costBasisPerShare: 210}], currentPrice: 180, divestFraction: 0.5, horizonYears: 2, ordinaryIncome: 200000, filingStatus: "single", stateCode: "CA"}. Каждое поле из списка required отражает факт о ситуации пользователя и не имеет встроенного значения по умолчанию: вызов без обязательного поля возвращает…

Параметры
  • currentPricenumberобязательный

    Текущая цена акции, USD. Каждая продажа на любую дату оценивается по этому значению (предположение о фиксированной цене). Это значение должен указать пользователь.

  • divestFractionnumberобязательный

    Доля от ОБЩЕГО количества акций, которую нужно продать, в виде десятичной дроби (0.5 = продать половину). Диапазон: от 0.10 до 1.0. ПРИМЕЧАНИЕ: это десятичная дробь, а НЕ процент, поэтому передавайте 0.5, а не 50. Инструмент продаёт round(divestFraction x totalShares) акций, но не менее одной. Это выбор пользователя, а не деталь моделирования, и он меняет ответ: возьмите значение, которое указал пользователь, а если он его не дал, запросите его, а не предполагайте сами.

  • filingStatusenumобязательный

    Федеральный статус подачи декларации. Определяет ставки долгосрочного прироста капитала, порог NIIT и поиск налоговых ставок по штатам.

  • horizonYearsintegerобязательный

    Налоговые годы, которые может охватывать план: 1 = продать всё сейчас, 2 или 3. Большее число лет позволяет плану распределять прибыль по налоговым категориям и откладывать краткосрочнные лоты до перехода в долгосрочные, ценою более длителного сохранения позиции в акциях. Это выбор пользователя, а не детал моделирования, и он меняет ответ: используйте значение, которое дал пользователь, а если он не дал его, спросите, а не предполагайте.

  • lotsobject[]обязательный

    Перешедшие пакеты RSU, которые всё ещё на руках (после продажи для покрытия налогов), по одной записи на транш. Инструмент сам решает, какие из них продавать и когда. Неперешедшие гранты не входят в область действия. Максимум 20 пакетов за вызов, тот же лимит, что и в веб-калькуляторе. Если траншей больше, объединяйте те, у которых совпадают дата перехода и стоимость приобретения.

  • ordinaryIncomenumberобязательный

    Общий обычный доход домохозяйства за год, в дolларах США, из всех источников. Определяет нижнюю границу федеральной шкалы долгосрочного прироста капитала (LTCG), ставку обычного налога на крatкосрочный доход и пороговый тест для налога на чистый инвестицionный доход (NIIT). Это налогооблагаемый доход после вычетов, а не валовaя зарплата: движок не прмменяет к нему ни стандартных, ни детализированных вычетов. Предологается постояным на все годы плана. Должен быть получен от пользователя.

  • stateCodeenumобязательный

    Двухбуквенный код штата США (например, CA, NY, TX). Определяет порядок налогообложения прироста капитала на уровне штата (в CA прирост облагается как обычный доход; в WA/TX/FL налог на большинство приростов капитала отсутствует).

rsu_sell_vs_holdтолько чтениеидемпотентный

Применяется, когда спрашивают, продавать ли RSU в момент вестинга или держать их, продавать ли уже завестившиеся акции или диверсифицироваться из акций компании, либо когда речь идёт о налогах и удержаниях при вестинге restricted stock unit (RSU). Анализ вестинга RSU после уплаты налогов: продажа в момент вестинга против удержания до долгосрочного прироста капитала (LTCG) на протяжении holdYears. Учитывает федеральный налог по обычным ставкам, налог штата, FICA (Social Security + Medicare + Additional Medicare) и разницу между обязательным 22% удержанием по дополнительным ставкам и предельной ставкой пользователя. Применяется для RSU в момент вестинга; для ISO/AMT используйте amt_iso_optimize, для NSO - nso_calculate. Работает детерминированно и офлайн; налоговые таблицы встроены. Возвращает vest, hold, sellNowInvest, holdMinusSell и bracketJump; полная структура - в outputSchema. Пример вызова: {shares: 1000, currentPrice: 100, ordinaryIncome: 200000, filingStatus: "single", stateCode: "CA", stillEmployed: true, holdYears: 2, volatility: 0.3, ticker: "MSFT"}. Входные данные помимо required: инструменту также нужны ожидаемый рост/доходность акции И её волатильность. Они вынесены за пределы required только потому, что их можно определить без явного числа: задать напрямую, получить по ticker покрытой публичной акции или (только для поля роста/доходности/цены продажи) указать строку "market" для скользящего среднего S&P 500. Если рост/доходность/цена продажи не заданы и не определены, инструмент берёт скользящее среднее S&P 500; если волатильность тоже не задана, берётся медианная подразумеваемая волатильность публичных компаний, которые покрывает OptionsAhoy, на момент последнего закрытия. В любом случае результат это отражает (assumptions плюс написанный простым языком assumptionNotice, где сказано, что это заглушка, а не мнение пользователя). Каждое поле в required - факт о ситуации пользователя, и встроенного значения по умолчанию у него нет; число из любого другого источника принимается как есть, потому что синтаксически корректная цифра проходит валидацию без проверки происхождения и молча меняет результат. Сам налоговый расчёт (проход по ступеням ставок, пороги отмены AMT и NIIT, многолетний кредит…

Параметры
  • currentPricenumberобязательный

    Справедливая рыночная стоимость одной акции на дату перехода права, USD. Также налоговая база по удержанным акциям. Эти значения вводит пользователь.

  • expectedMarketReturnnumber | string

    Годовая ставка реинвестирования дохода после уплаты налогов. Если параметр опущен, по умолчанию используется скользящий CAGR SPY за holdYears; строка "market" явно обозначает то же значение по умолчанию.

  • expectedSalePricenumber | string

    Прогнозируемая цена за акцию ($/share) на конец периода holdYears, либо строка "market", чтобы спроецировать currentPrice с использованием среднего значения S&P 500 за предшествующий период, когда у пользователя нет своего прогноза. Значение обязательно, если только ticker не вычисляет его по формуле currentPrice × (1 + trailing CAGR)^holdYears. У этого инструмента нет значения по умолчанию: значение, не указанное пользователем, не вычисленное из покрываемого ticker и не равное специальному значению "market", выходит за пределы контракта входных данных.

  • filingStatusenumобязательный

    Федеральный статус налогоплательщика.

  • haircutnumber

    Альтернатива параметру volatility: мультипликативная скидка (haircut) на expectedSalePrice из-за волатильности (volatility drag), уже рассчитанная для периода удержания. Укажите это значение или volatility (если указаны оба, приоритет у скидки). Это поле для готового значения скидки (haircut), уже полученного из предыдущих вычислений; формула расчета скидки зависит от горизонта, поэтому значение, рассчитанное для другого горизонта, неприменимо. Если вместо этого указать volatility, инструмент сам рассчитает скидку.

  • holdYearsnumberобязательный

    Лет удержания после вестинга (0.25..5). Если срок меньше года, срабатывает порог краткосрочного прироста капитала: прирост облагается по обычным ставкам. Это выбор пользователя, а не деталь моделирования, и он меняет ответ: используйте указанное им значение, а если он его не указал, спросите его, а не предполагайте.

  • ordinaryIncomenumberобязательный

    Годовой обычный доход до этого вестинга, в долларах США. Базовое значение для расчета налоговых диапазонов (bracket walk) от суммы вестинга. Это значение должен указать пользователь. Это налогооблагаемый доход после вычетов, а не валовая зарплата: движок не применяет к нему ни стандартных, ни детализированных вычетов.

  • sharesintegerобязательный

    Акции Restricted Stock Unit (RSU), переходящие в собственность в этом транше. Должны поступить от пользователя.

  • stateCodeenumобязательный

    Двухбуквенный код штата США.

  • stillEmployedbooleanобязательный

    Истина, если сотрудник всё ещё трудоустроен на момент вестинга. Определяет применимость FICA и то, применяется ли правило дополнительного удержания 22%.

  • tickerstring

    Необязательный символ публичной акции (например, "NVDA", "AAPL"). Когда он задан, инструмент подставляет кэшированную trailing return для любого незаданного поля expected-return / sale-price и implied vol на момент последнего закрытия для любой незаданной волатильности. Growth и vol берутся из разных источников, поэтому для некоторых символов определяется только один, а неактуальный vol не даёт ничего. Поле, которое тикер не может разрешить, приводит к ошибке "required field" с указанием этого поля: передайте его явно или (для поля growth/return/sale-price) передайте строку "market" для скользящего среднего S&P 500; никогда не выдумывайте число. Ресурс covered-tickers (resources/list) перечисляет, для каких символов определяется growth.

  • volatilitynumber

    Годовая волатильность (sigma) акции в виде десятичной дроби (0.72 = 72%). Принимает саму волатильность, а не заранее вычисленный drag: инструмент сам вычисляет накопленный за горизонт drag, и правильная формула зависит от горизонта. Порядок выбора: это значение, если оно передано, иначе подразумеваемая волатильность ticker на момент последнего закрытия рынка, иначе медианная подразумеваемая волатильность публичных компаний, которые покрывает OptionsAhoy; результат сообщает её в assumptions и assumptionNotice.

1.11.0основная
1.10.3
1.10.2
1.10.1
1.9.8
1.9.7
1.9.6
1.9.5
1.9.4
1.9.3
1.9.2
1.9.1
1.9.0

Выберите клиент, чтобы установить AlvisoOculus/optionsahoy-mcp:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "alvisooculus-optionsahoy-mcp-tkcemo7xxy": {
      "args": [
        "-y",
        "optionsahoy-mcp"
      ],
      "command": "npx"
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "alvisooculus-optionsahoy-mcp-tkcemo7xxy": {
      "args": [
        "-y",
        "optionsahoy-mcp"
      ],
      "command": "npx"
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "alvisooculus-optionsahoy-mcp-tkcemo7xxy": {
      "type": "stdio",
      "args": [
        "-y",
        "optionsahoy-mcp"
      ],
      "command": "npx"
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"alvisooculus-optionsahoy-mcp-tkcemo7xxy\",\"type\":\"stdio\",\"args\":[\"-y\",\"optionsahoy-mcp\"],\"command\":\"npx\"}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "alvisooculus-optionsahoy-mcp-tkcemo7xxy": {
      "args": [
        "-y",
        "optionsahoy-mcp"
      ],
      "command": "npx"
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add alvisooculus-optionsahoy-mcp-tkcemo7xxy -- npx -y optionsahoy-mcp

Либо через JSON-конфиг:

claude mcp add-json alvisooculus-optionsahoy-mcp-tkcemo7xxy "{\"args\":[\"-y\",\"optionsahoy-mcp\"],\"command\":\"npx\"}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add alvisooculus-optionsahoy-mcp-tkcemo7xxy -- npx -y optionsahoy-mcp

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.alvisooculus-optionsahoy-mcp-tkcemo7xxy]
command = "npx"
args = ["-y", "optionsahoy-mcp"]
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите AlvisoOculus/optionsahoy-mcp, а в поле команды запуска — строку ниже:
npx -y optionsahoy-mcp

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "alvisooculus-optionsahoy-mcp-tkcemo7xxy": {
      "args": [
        "-y",
        "optionsahoy-mcp"
      ],
      "command": "npx"
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "alvisooculus-optionsahoy-mcp-tkcemo7xxy": {
      "args": [
        "-y",
        "optionsahoy-mcp"
      ],
      "command": "npx",
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например alvisooculus-optionsahoy-mcp-tkcemo7xxy.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: alvisooculus-optionsahoy-mcp-tkcemo7xxy
    command: npx
    args:
      - "-y"
      - "optionsahoy-mcp"
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "alvisooculus-optionsahoy-mcp-tkcemo7xxy": {
      "args": [
        "-y",
        "optionsahoy-mcp"
      ],
      "command": "npx"
    }
  }
}

Похожие MCP-сервера

arifur9993/attendance-engine-mcp

arifur9993/attendance-engine-mcp

от arifur9993

MCP-сервер для точного учёта рабочего времени и проверки соблюдения трудового законодательства. Даёт AI-агенту детерминированные инструменты: расчёт перерывов, сверхурочных, ротаций смен. Подходит ...

TypeScript⭐ 1
OSOJDJD/deeplook

OSOJDJD/deeplook

от osojdjd

MCP сервер DeepLook избавляет LLM от выдумывания финансовых данных, подставляя реальные цифры из 8 API: курсы акций, крипту и новости. Полезен для аналитиков и инвесторов, кому нужна точность.

Python⭐ 12
AgentModule/mcp

AgentModule/mcp

от agentmodule

MCP-сервер предоставляет агентам детерминированные правила и директивы EU AI Act для runtime-проверки compliance, собирает audit-прозрачные доказательства и помогает избегать штрафов. Полезен разра...

JavaScript⭐ 2
vatnode/vatnode-mcp

vatnode/vatnode-mcp

от vatnode

MCP-сервер для проверки VAT и данных по НДС в ЕС. AI-агенты могут узнать ставки НДС, проверить формат номера и валидировать VAT ID через VIES - бесплатно или с API-ключом для расширенной валидации.

TypeScript⭐ 1
@czagents/cnb

@czagents/cnb

от martinhavel

MCP сервер для доступа к чешским и европейским госданным: ARES, ČNB, ADIS, санкции, банкротства. Встроенный агрегатор due diligence оценивает риски и строит цепочку собственников. Для комплаенса, KYC.

TypeScript⭐ 6
Bitget-AI/agent-mcp

Bitget-AI/agent-mcp

от bitget-ai

MCP сервер для криптотрейдинга на Bitget через ИИ-агентов. Позволяет торговать, управлять балансом, кредитами и налогами на естественном языке в Claude, Cursor, ChatGPT. 14 команд покрывают 89 операций — без лишних инструментов.

TypeScript⭐ 1
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин