[Feature] Custom portfolio and watchlist panels for stocks, ETFs, and broker imports #37

Open
opened 2026-05-17 14:32:25 +00:00 by MrSphay · 1 comment
Owner

Summary

Add custom market panels so operators can track their own stocks, ETFs, crypto, cash positions, and broker portfolios next to the existing global market section.

The first version should support local-first manual/watchlist panels and file imports. Trade Republic and other brokers should be handled through importer/adapters, not by storing broker login credentials in the dashboard.

Why This Matters

The current market section is useful for broad macro context, but it is not personal. Operators want to see how live OSINT, conflict, macro, energy, and volatility signals affect their actual portfolio or watchlist. This turns the market area from a generic quote board into a personal risk cockpit.

Scope

  • Bug fix: No
  • New source: Optional, only for portfolio import adapters
  • Dashboard/UI change: Yes
  • LLM/provider change: Optional, for portfolio-aware brief context
  • Other: Local portfolio/watchlist persistence and import workflow

Proposed Behavior

  • Add a dashboard area for multiple custom market panels.
  • Each panel can represent a theme, portfolio, broker account, watchlist, ETF basket, sector list, or risk hedge list.
  • Operators can add symbols manually, for example AAPL, MSFT, VWCE.DE, SXR8.DE, BTC-USD, XAUUSD, or Yahoo-compatible tickers.
  • Panels can show price, daily change, position size, cost basis, unrealized P/L, allocation, currency, and notes when available.
  • Support local import formats:
    • generic CSV/JSON position import
    • Trade Republic transaction/portfolio CSV import where fields can be mapped safely
    • future adapter hooks for other brokers such as Scalable Capital, IBKR, Degiro, Portfolio Performance, Parqet exports, or manual spreadsheets
  • Imported data is stored locally under gitignored runtime state, never committed.
  • Existing Yahoo Finance market quotes can provide live prices for supported symbols.
  • Dashboard should allow hiding/showing panels and reordering them.
  • Briefings can optionally include portfolio exposure context, for example "energy shock scenario affects X% of tracked portfolio".

Acceptance Criteria

  • Default market section continues to work unchanged when no custom panels exist.
  • Operators can create at least one custom panel through config or dashboard UI.
  • Manual symbol watchlists work without any broker integration.
  • Generic CSV import is supported before any direct broker sync is attempted.
  • Trade Republic support is implemented as an import adapter, with clear documentation that direct broker API sync is optional/future work and must not require storing raw login credentials.
  • Unsupported or unmapped CSV fields produce useful diagnostics instead of silently corrupting positions.
  • Imported values distinguish between watched symbols and actual holdings.
  • Multi-currency positions are displayed with clear currency labels; no hidden conversion assumptions.
  • Dashboard rendering sanitizes all imported names/notes/text.
  • Unit tests cover symbol normalization, panel config loading, CSV parsing, malformed rows, duplicate symbols, and missing live quotes.
  • README documents manual panels, CSV import, data storage path, privacy expectations, and example formats.

Maintenance Impact

This adds a user-owned finance layer. Treat portfolio data as private runtime data: no logs with raw holdings by default, no committed examples with realistic private positions, and no broker credentials in .env unless a future read-only official integration justifies it.

Direct Trade Republic integration is risky as a first milestone because public evidence points mainly to CSV/export workflows and third-party/unofficial tools rather than a stable official developer API. The implementation should therefore start with import/export compatibility and keep direct broker sync behind a later adapter decision.

Additional Context

Related existing code paths:

  • apis/sources/yfinance.mjs already fetches live market quotes.
  • dashboard/inject.mjs and dashboard/public/jarvis.html already build the market cards.
  • Telegram/Discord /portfolio commands currently say portfolio integration requires an external Alpaca MCP connection; this feature can replace that placeholder with local portfolio summaries.

Suggested phases:

  1. Custom watchlist panels using manual symbols and existing Yahoo Finance quotes.
  2. Local holdings model with position size, cost basis, allocation, and notes.
  3. CSV/JSON importers, starting with generic format and Trade Republic-compatible mappings.
  4. Portfolio-aware briefing and alert context.
  5. Optional broker adapters only when a safe read-only path is available.
## Summary Add custom market panels so operators can track their own stocks, ETFs, crypto, cash positions, and broker portfolios next to the existing global market section. The first version should support local-first manual/watchlist panels and file imports. Trade Republic and other brokers should be handled through importer/adapters, not by storing broker login credentials in the dashboard. ## Why This Matters The current market section is useful for broad macro context, but it is not personal. Operators want to see how live OSINT, conflict, macro, energy, and volatility signals affect their actual portfolio or watchlist. This turns the market area from a generic quote board into a personal risk cockpit. ## Scope - Bug fix: No - New source: Optional, only for portfolio import adapters - Dashboard/UI change: Yes - LLM/provider change: Optional, for portfolio-aware brief context - Other: Local portfolio/watchlist persistence and import workflow ## Proposed Behavior - Add a dashboard area for multiple custom market panels. - Each panel can represent a theme, portfolio, broker account, watchlist, ETF basket, sector list, or risk hedge list. - Operators can add symbols manually, for example `AAPL`, `MSFT`, `VWCE.DE`, `SXR8.DE`, `BTC-USD`, `XAUUSD`, or Yahoo-compatible tickers. - Panels can show price, daily change, position size, cost basis, unrealized P/L, allocation, currency, and notes when available. - Support local import formats: - generic CSV/JSON position import - Trade Republic transaction/portfolio CSV import where fields can be mapped safely - future adapter hooks for other brokers such as Scalable Capital, IBKR, Degiro, Portfolio Performance, Parqet exports, or manual spreadsheets - Imported data is stored locally under gitignored runtime state, never committed. - Existing Yahoo Finance market quotes can provide live prices for supported symbols. - Dashboard should allow hiding/showing panels and reordering them. - Briefings can optionally include portfolio exposure context, for example "energy shock scenario affects X% of tracked portfolio". ## Acceptance Criteria - Default market section continues to work unchanged when no custom panels exist. - Operators can create at least one custom panel through config or dashboard UI. - Manual symbol watchlists work without any broker integration. - Generic CSV import is supported before any direct broker sync is attempted. - Trade Republic support is implemented as an import adapter, with clear documentation that direct broker API sync is optional/future work and must not require storing raw login credentials. - Unsupported or unmapped CSV fields produce useful diagnostics instead of silently corrupting positions. - Imported values distinguish between watched symbols and actual holdings. - Multi-currency positions are displayed with clear currency labels; no hidden conversion assumptions. - Dashboard rendering sanitizes all imported names/notes/text. - Unit tests cover symbol normalization, panel config loading, CSV parsing, malformed rows, duplicate symbols, and missing live quotes. - README documents manual panels, CSV import, data storage path, privacy expectations, and example formats. ## Maintenance Impact This adds a user-owned finance layer. Treat portfolio data as private runtime data: no logs with raw holdings by default, no committed examples with realistic private positions, and no broker credentials in `.env` unless a future read-only official integration justifies it. Direct Trade Republic integration is risky as a first milestone because public evidence points mainly to CSV/export workflows and third-party/unofficial tools rather than a stable official developer API. The implementation should therefore start with import/export compatibility and keep direct broker sync behind a later adapter decision. ## Additional Context Related existing code paths: - `apis/sources/yfinance.mjs` already fetches live market quotes. - `dashboard/inject.mjs` and `dashboard/public/jarvis.html` already build the market cards. - Telegram/Discord `/portfolio` commands currently say portfolio integration requires an external Alpaca MCP connection; this feature can replace that placeholder with local portfolio summaries. Suggested phases: 1. Custom watchlist panels using manual symbols and existing Yahoo Finance quotes. 2. Local holdings model with position size, cost basis, allocation, and notes. 3. CSV/JSON importers, starting with generic format and Trade Republic-compatible mappings. 4. Portfolio-aware briefing and alert context. 5. Optional broker adapters only when a safe read-only path is available.
MrSphay added the enhancementproductresearch labels 2026-05-17 14:32:26 +00:00
Author
Owner

Pausiert, keinder darf hierdran arbeiten kar!

Pausiert, keinder darf hierdran arbeiten kar!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MrSphay/intelligence-terminal#37