{UI_STRINGS.noCandleData}
-+ Unable to load filings. Please verify the CIK number and try again. +
++ No filings found for CIK {cikInput}. This may indicate the CIK is invalid or has no recent filings. +
+| handleSort("form")} tabIndex={0} aria-label="Sort by Form" role="columnheader"> + Form {sortField === "form" && (sortDir === "asc" ? "↑" : "↓")} + | +handleSort("dateReporter")} tabIndex={0} aria-label="Sort by Filing Date" role="columnheader"> + Filing Date {sortField === "dateReporter" && (sortDir === "asc" ? "↑" : "↓")} + | +Accession No. | +handleSort("reportDate")} tabIndex={0} aria-label="Sort by Report Date" role="columnheader"> + Report Date {sortField === "reportDate" && (sortDir === "asc" ? "↑" : "↓")} + | +Actions | +
|---|---|---|---|---|
| handleCellClick(rowIdx, 0)} + aria-label={`Form ${filing.form}, filing date ${filing.dateReporter}`} + > + + {filing.form} + + | + {/* Filing Date cell */} +handleCellClick(rowIdx, 1)} + aria-label={`Filing date: ${filing.dateReporter}`} + > + {filing.dateReporter} + | + {/* Accession No. cell */} +handleCellClick(rowIdx, 2)} + aria-label={`Accession number: ${filing.accessionNumber}`} + > + {filing.accessionNumber} + | + {/* Report Date cell */} +handleCellClick(rowIdx, 3)} + aria-label={`Report date: ${filing.reportDate}`} + > + {filing.reportDate} + | + {/* Actions cell */} + handleCellClick(rowIdx, 4)}
+ aria-label="Actions"
+ >
+
+
+ View
+
+ {(filing.form === "13F-HR" || filing.form === "Form 4" || filing.form === "4") && (
+
+ )}
+
+ |
+
{summary}
+Loading holdings...
} + {detailError &&{detailError}
} + {detailData && "holdings" in detailData && ( +| CUSIP | +Issuer | +Value ($) | +Shares | +
|---|---|---|---|
| {h.cusip} | +{h.issuerName} | +{formatCurrency(h.value)} | +{formatShares(h.sshPrnamt)} | +
Loading transactions...
} + {detailError &&{detailError}
} + {detailData && "transactions" in detailData && ( +| Reporter | +Relationship | +Security | +Date | +Code | +Shares | +Price | +
|---|---|---|---|---|---|---|
| {tx.reporter} | +{tx.relationship} | +{tx.securityTitle} | +{tx.transactionDate} | +{tx.transactionCode} | +{tx.shares.toLocaleString()} | +${tx.price.toFixed(2)} | +
+ Educational Note: SEC filings are public records + available through the EDGAR database. This panel displays filing metadata for informational + purposes. Always consult the original filing documents for complete information. +
+Loading rollup...
+ ) : error ? ( +Error loading rollup data.
+ ) : rows.length === 0 ? ( +No symbols in watchlist or portfolio.
+ ) : ( +| Symbol | +handleSort('convictionDelta')}> + Conviction Δ {sortField === 'convictionDelta' ? (sortDir === 'asc' ? '↑' : '↓') : ''} + | +handleSort('insiderRecencyDays')}> + Insider Recency {sortField === 'insiderRecencyDays' ? (sortDir === 'asc' ? '↑' : '↓') : ''} + | +handleSort('classRollFlag')}> + Class Roll {sortField === 'classRollFlag' ? (sortDir === 'asc' ? '↑' : '↓') : ''} + | +Alert | +
|---|---|---|---|---|
| {row.symbol} | ++ {(() => { + const badge = DELTA_BADGE[row.convictionDelta]; + return ( + + {badge.label} + + ); + })()} + | ++ {row.insiderRecencyDays !== null ? `${row.insiderRecencyDays}d` : '—'} + | ++ {row.classRollFlag ? ( + Yes + ) : ( + — + )} + | ++ {/* AlertEngine stub (slice 17) — wire later. */} + — + | +
+ Summary will be provided via the rollup query. +
+No IV data available
++ Rank: {data.rank} | Current IV: {(data.currentIV * 100).toFixed(1)}% + (52w: {(data.iv52wLow * 100).toFixed(1)}%–{(data.iv52wHigh * 100).toFixed(1)}%) +
+{getLabel(data.rank)}
+No greeks data available
+No OI data available
+Insufficient data
+${maxPain}
++ The strike where options expire with maximum total value (theory) +
+No chain data to render
++ Shows P&L at expiration for a {atmRow.right} option with strike ${atmRow.strike}. + The curve illustrates the convex payoff mechanic — gains accelerate as the stock moves + in your favor past the strike. +
+Defined-Risk Spread
+Max loss is known upfront
+Advanced Only
+Undefined risk — potential for significant losses
+Error: {error}
+No options data available for {symbol}
++ This panel is educational. It does not recommend any specific trade. Options involve + risk and are not suitable for all investors. Past performance does not guarantee future results. +
+Loading...
+ ) : holdings.length === 0 ? ( +{UI_STRINGS.emptyPortfolio || "No holdings yet."}
+ ) : ( +{UI_STRINGS.primaryRuleFooter}
+Loading...
+ ) : entries.length === 0 ? ( +{UI_STRINGS.emptyWatchlist || "Your watchlist is empty."}
+ ) : ( +{UI_STRINGS.primaryRuleFooter}
+