feat: dealer flow, mirror portfolio (M21), options convexity, FINRA short interest, alert producers, vendor gate
CI / Test & Type-Check (push) Canceled after 0s
CI / Test & Type-Check (push) Canceled after 0s
Snapshot of in-progress module work across multiple slices: - Dealer Flow: dealerExposureEngine, dealerMapService, dealerMapExplain, dealerMapIntegrity, dealerMapReplay, dealerStudyEngine, hanStyleLevels - Mirror Portfolio (M21): fundRepository, captureIngest, mirrorAlertProducers, fund holdings strip, live book, position capture ingest - Options: BSM, NormalizedOptionSurface types, OptionsChainRouter, ConvexityGate, option legs panel - Alert producers: vixLevel, rotation, thesis, unlock, portfolioRisk, mirror (fund_capture, fund_13f, mirror_diff) - FINRA short interest adapter + queue integration - SEC company tickers adapter + ingest (symbol search index seed) - Vendor gate (rate-limit-first data plane, ADR-0009) - CUSIP registry, reverse 13F refresh, stock float service - LRU cache, portfolio backtest engine - Frontend: dealer-flow, funds, journal, lab, monitor, plan, portfolio, reports, screener, strategies, theses, guided-start, exits, more pages - Volume profile, workspace profile, visibility-aware poll - ADRs 0010 (mirror math not advice), 0011 (symbol search index) - VENDOR_INTEGRATIONS.md, END_USER_TEST.md - .gitignore: exclude DBs, .DS_Store, local config, agent scratch
This commit is contained in:
@@ -20,7 +20,11 @@ export type AlertType =
|
||||
| 'thesis_weakening'
|
||||
| 'cluster_breach'
|
||||
| 'drawdown_halt'
|
||||
| 'asymmetry_warning';
|
||||
| 'asymmetry_warning'
|
||||
| 'fund_capture'
|
||||
| 'fund_13f'
|
||||
| 'mirror_diff'
|
||||
| 'vix_level';
|
||||
|
||||
// ─── Alert Severity ──────────────────────────────────────────────────────────
|
||||
|
||||
@@ -77,6 +81,10 @@ export function defaultSeverity(type: AlertType): AlertSeverity {
|
||||
case 'regime_shift':
|
||||
case 'conviction_unlock':
|
||||
case 'thesis_weakening':
|
||||
case 'fund_capture':
|
||||
case 'fund_13f':
|
||||
case 'mirror_diff':
|
||||
case 'vix_level':
|
||||
return 'info';
|
||||
}
|
||||
}
|
||||
@@ -111,6 +119,14 @@ export function alertTitle(type: AlertType, symbol?: string): string {
|
||||
return `Drawdown tolerance breached`;
|
||||
case 'asymmetry_warning':
|
||||
return `Portfolio asymmetry below threshold`;
|
||||
case 'fund_capture':
|
||||
return `New position update from tracked fund${symbolTag(symbol)}`;
|
||||
case 'fund_13f':
|
||||
return `New 13F from tracked fund`;
|
||||
case 'mirror_diff':
|
||||
return `Mirror target changed${symbolTag(symbol)}`;
|
||||
case 'vix_level':
|
||||
return `Volatility index level changed`;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,7 +138,7 @@ export function alertDescription(type: AlertType, details?: string, symbol?: str
|
||||
case 'informed_sell':
|
||||
return `A company insider sold shares${symbolTag(symbol)}. This filing was not part of a 10b5-1 trading plan.`;
|
||||
case 'new_13da':
|
||||
return `An institutional investor reported a new position${symbolTag(symbol)} in a 13F filing.`;
|
||||
return `An institutional investor reported a new position${symbolTag(symbol)}.`;
|
||||
case 'rotation_incipient':
|
||||
return `The sector rotation detector identified an incipient rotation signal. Capital may be moving between sectors.`;
|
||||
case 'regime_shift':
|
||||
@@ -139,6 +155,14 @@ export function alertDescription(type: AlertType, details?: string, symbol?: str
|
||||
return `Your portfolio drawdown has exceeded the tolerance threshold. The circuit breaker has paused new entries for 24 hours. Existing positions continue unaffected.`;
|
||||
case 'asymmetry_warning':
|
||||
return `Your portfolio's reward-to-risk ratio has fallen below 1.0, meaning risk outweighs expected reward across your positions.`;
|
||||
case 'fund_capture':
|
||||
return `A tracked fund posted a position update${symbolTag(symbol)}. This is a disclosure, not advice.`;
|
||||
case 'fund_13f':
|
||||
return `A tracked fund filed a new 13F. This is a disclosure, not advice.`;
|
||||
case 'mirror_diff':
|
||||
return `The mirror target changed${symbolTag(symbol)}. Showing the arithmetic delta; it is not advice.`;
|
||||
case 'vix_level':
|
||||
return `The VIX, a market-wide measure of expected near-term volatility, has moved into a new level that historically mattered to market participants.`;
|
||||
}
|
||||
})();
|
||||
|
||||
@@ -280,4 +304,8 @@ export const ALERT_THROTTLE: Record<AlertType, { maxPerHour: number }> = {
|
||||
cluster_breach: { maxPerHour: 2 },
|
||||
drawdown_halt: { maxPerHour: 1 },
|
||||
asymmetry_warning: { maxPerHour: 2 },
|
||||
fund_capture: { maxPerHour: 3 },
|
||||
fund_13f: { maxPerHour: 3 },
|
||||
mirror_diff: { maxPerHour: 3 },
|
||||
vix_level: { maxPerHour: 1 },
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user