Compiled research, testing results, and current development status from 9 formal investigations and 7 war room build sessions. This gives a concrete indicator of what we can and should build in the coming months.
Everything below is a proposal pending Gulli's approval. The next phase will consolidate these plans with the operational needs of Viska Crypto and Viska Macro as Gulli defines them.
What we need from Gulli:
These are the starting point. As the engagement progresses, goals adapt — new capabilities emerge, fund priorities shift, and we add deliverables at any phase boundary. The methodology section describes how we evaluate and prioritize new information.
Six capability milestones over six months. Each builds on the previous. Goals adapt to new capabilities and fund priorities as they emerge.
| Month | Goal | Outcome |
|---|---|---|
| 1 | Macro Research Intelligence | Full corpus queryable (brokers + central banks + earnings). Daily brief. MCP access from any workspace. |
| 2 | Multi-Agent Surveillance | 3 autonomous agents (crypto, macro sentiment, geopolitical risk) running 24/7. Alert pipeline. |
| 3 | Trading War Room | Paper trading operational. 4 agents, 7 pipelines, risk framework enforcing, 7-page dashboard live. |
| 4 | Investor Communications | LP letter pipeline, thought leadership (2–3/week), meeting intelligence (prep + follow-up). |
| 5 | Scenario Modeling & Signals | Overnight scenario lab. Proprietary signal generator on Viska infrastructure. |
| 6 | Distribution Intelligence & Handoff | Partner surveillance (weekly scans). Full codebase handoff. Documentation. Training. |
Nothing is adopted without evaluation. Nothing is discarded without documented rationale.
Research conducted for this build: 9 formal investigations over 2 weeks, producing 374 lines of documented findings across 9 domains.
| # | Investigation | Date | Key Finding | Decision |
|---|---|---|---|---|
| 1 | n8n node capabilities (R2, SQLite, notifications, FinBERT) | Apr 10 | S3 node supports R2 via custom endpoint. No built-in SQLite. ntfy for notifications. | R2 adopted. ntfy as primary notification. FinBERT deferred. |
| 2 | External API integration (Grok, Fed, ECB, Gemma) | Apr 10 | Grok must use Responses API (Chat Completions deprecated). grok-4-1-fast is 10x cheaper. FOMC RSS confirmed. | Responses API + fast model. CB Document Pipeline for Fed + ECB. Gemma 4 via Ollama overnight. |
| 3 | MCP & CLI tool audit (11 services) | Apr 12 | 4 new MCP servers: FRED (800k+ series), QuantOracle (63 tools), Ollama, SQLite. FRED + QuantOracle close quantitative macro layer. | All 4 wired. This finding eliminated the case for TradingView MCP. |
| 4 | TradingView MCP (2 projects) | Apr 13 | Project 1: 5 kill factors (ToS, fragile CDP, 500MB, single-agent, irrelevant Pine). Project 2: backtesting useful, sentiment weak. | Project 1 declined permanently. Project 2 selective for Phase 1D. |
| 5 | MCP vs CLI architecture | Apr 7 | MCP costs 10–32x more tokens than CLI. Reliability: CLI 100% vs MCP 72% (25 runs). | CLI-first strategy. MCP for specific guarantees only. |
| 6 | Karpathy wiki pattern | Apr 7 | Three-layer pattern (raw → wiki → schema). Index retrieval outperforms RAG at ~400K words. | Adopted for knowledge base. No vector database overhead. |
| 7 | NotebookLM pipeline | Mar 14 | Claude pipeline superior (99% vs 60% transcript success). NotebookLM audio is unique value. | Not integrated except audio. Fabric prompt patterns noted. |
| 8 | Security evaluation | Apr 12 | HIGH: @mastra-factory/config pulling from live branch tip. MEDIUM: 3 open vectors. | Pinned to SHA c339bcc. 3 vectors tracked with enforcement actions. |
| 9 | Mastra core upgrade | Apr 12 | 18 releases analyzed (v1.10 → v1.24.1). 2 breaking changes, neither affects usage. | Direct jump executed. Committed 148c93c. |
| Criterion | Threshold |
|---|---|
| Terms of Service | Must comply. Would we be comfortable if the vendor audited our usage? |
| Multi-agent compatibility | Must support simultaneous access. Single-seat tools rejected. |
| Failure mode | Must fail loudly (error), not silently (wrong data). Silent failure = hard reject. |
| Maintenance | Must be actively maintained. Stale dependencies are liabilities. |
| Resource cost | Must fit within infrastructure budget without competing with core system. |
| Replaceability | Must be substitutable. Single points of failure are unacceptable. |
Stanford and Tsinghua (March 2026): the same AI model delivers a 6x performance difference depending on orchestration. The model is a commodity. The orchestration layer is the asset.
Four-layer system. No layer reaches into another's domain.
| Agent | Role | Tools | Scope |
|---|---|---|---|
| Operator | Session coordinator, final authority | Alpaca, FRED, Ollama | Synthesizes all output. Approves/rejects orders. Writes thesis + session logs. |
| Technical Analyst | Chart analysis, trade ideas | Alpaca, FRED, QuantOracle, SQLite | TradingView alerts, quant confirmation. Does NOT make trade decisions. |
| Risk Manager | Pre-trade enforcement | Alpaca, QuantOracle, SQLite | 8-item checklist. Soft veto — unsigned trades cannot proceed. |
| Execution Agent | Order validation, submission | Alpaca, SQLite | 4 hard gates: operator_approved, buy-only, market hours, size validated. |
Sessions: Pre-market 08:30 ET, midday 12:30 ET, EOS 16:15 ET, plus alert-driven.
Every key function in a trading operation mapped to an AI agent role. Covers both Viska Crypto and Viska Macro. Gulli should review this roster and indicate which roles to prioritize, defer, or remove.
| Role | Fund | Function | Status | Notes / Questions for Gulli |
|---|---|---|---|---|
| Trading Operator | Both | Session coordination, order approval, strategy thesis | Built | Currently covers both funds. Split into fund-specific operators? |
| Technical Analyst | Both | Chart analysis, pattern detection, trade ideas | Built | Shared across funds or fund-specific views? |
| Risk Manager | Both | Position sizing, exposure limits, drawdown enforcement | Built | Same risk framework for both funds or separate parameters? |
| Execution Agent | Both | Order assembly, validation, Alpaca submission | Built | Long-only Phase 1. Crypto execution path differs from equities. |
| Macro Researcher | Macro | Deep macro analysis — central banks, fiscal policy, rates | Planned | Primary value for Viska Macro. Fed/ECB/BoJ pipeline ready. |
| Crypto Analyst | Crypto | On-chain metrics, exchange flows, DeFi monitoring | Planned | What on-chain data sources does the team currently use? |
| Sentiment Analyst | Both | NLP-based market sentiment from news + social | Planned | Replaces keyword counting. Grok for real-time X data. |
| Geopolitical Scanner | Both | Regulatory filings, sanctions, elections, policy shifts | Planned | Which jurisdictions matter most for current holdings? |
| Quant Strategist | Both | Backtesting, signal optimization, factor analysis | Planned | Proprietary signal generation in Month 5. |
| Portfolio Analyst | Both | Cross-fund exposure, correlation analysis, rebalancing signals | New | Does the team currently track cross-fund correlation? |
| LP Communications | Both | Monthly letters, performance attribution, quarterly reports | Month 4 | What's the current LP reporting cadence and format? |
| Content Producer | Both | Thought leadership — newsletters, LinkedIn, Substack | Month 4 | Continue Substack cadence? Target Nordic family offices? |
| Meeting Intelligence | Both | Pre-meeting prospect research, post-meeting follow-up | Month 4 | Family office, distribution partner, LP meetings |
| Partner Intelligence | Both | Distribution partner surveillance — regulatory, AUM, personnel | Month 6 | Arena Wealth Management — other targets? |
| Knowledge Synthesiser | Both | Weekly reflection processing, skill library updates | Planned | Needs 8 weeks of operational data first |
| Compliance Monitor | Both | Regulatory threshold monitoring, position limit checks | New | Sub-threshold AIFM limits — automated monitoring? |
We need to connect the fund's live data streams to the intelligence platform. Pending input from Gulli.
| Data Stream | Questions | Impact |
|---|---|---|
| Portfolio positions | Where held? Format? API access? | Real-time portfolio monitoring, risk enforcement |
| NAV / fund valuation | Frequency? Source system? | LP reporting, performance attribution |
| Trade execution records | Which brokers/exchanges? FIX protocol? | Trade journal, P&L attribution |
| Crypto custody | Self-custody, exchange, institutional custodian? | On-chain monitoring scope |
| Broker research access | Dropbox (current). Other channels? | Corpus expansion |
| LP registry | Where maintained? Format? | CRM agent, meeting intelligence |
| Compliance data | AUM thresholds, investor qualification records? | Compliance monitoring agent |
Once mapped, these streams feed into the Viska Portal and the research pipeline — creating a unified intelligence layer across both funds.
| Pipeline | Function | Trigger | Status |
|---|---|---|---|
| Watchdog | Position monitoring, L1/L2/L3 alerts | Every 5 min (08:00–20:00 ET) | Live |
| Market Data | Alpaca + FRED → JSON → R2 | Scheduled | Live |
| Trade Log | Agent trade files → SQLite + R2 | File trigger | Live |
| Signal Intake | TradingView webhook → validate → enrich → SQLite → R2 → notify | Webhook | Live |
| Weekly Report | QuantStats metrics, P&L attribution, narrative | Fridays | Live |
| Grok Narrative | AI market narrative from macro + price data | Scheduled | Built |
| CB Documents | Fed FOMC + ECB rate processing | Scheduled | Built |
| Rule | Limit |
|---|---|
| Max risk per trade | 1% |
| Max position size | 5% |
| Max sector exposure | 20% |
| Min risk/reward | 1.5:1 |
| Max open positions | 8 |
| Min cash reserve | 20% |
| Daily drawdown halt | −5% |
| Peak-to-trough halt | −10% (full review) |
| Consecutive losing days | 3 → mandatory reflection |
Non-negotiable: Human approval on every order (schema-enforced). 90-day paper trading before live capital (hard gate). Phase 1: long-only, no options, no leverage, no crypto.
A purpose-built web interface where all intelligence, trading data, and operational status is accessible to the entire team. Not a generic dashboard — every page is designed for the fund's workflows.
The portal already exists at boas.dev/viska/portal with live chat (Mímir), daily reports, and corpus intelligence. The trading war room adds a second portal surface at trading.boas.dev for market operations. Both move to Viska-owned domains at handoff.
| Page | Data Source | Content |
|---|---|---|
| /overview | R2 | Portfolio value, P&L, thesis, regime assessment |
| /positions | FastAPI proxy (Alpaca live) | Open positions, risk badges, drawdown gauge |
| /strategy | R2 | Current thesis, watchlist status |
| /analytics | R2 + FastAPI | Equity curve, Sharpe, win rate, P&L attribution |
| /log | R2 | Complete trade journal with decision chains |
| /alerts | R2 | Alert timeline, L1/L2/L3 hierarchy |
| /market | TradingView widgets | Live embeddable charts for 7 instruments |
| /roadmap | R2 | Development progress — shipped, in progress, coming next |
The portal expands as capabilities come online. Months 4–6 add sections for LP communications, content pipeline status, scenario analysis results, and partner intelligence feeds.
The intelligence layer is accessible from two surfaces: the portal (visual, team-wide) and Slack (conversational, immediate).
| Capability | Surface | Trigger |
|---|---|---|
| Mímir research queries | Slack | On-demand — any team member asks a question |
| Daily intelligence brief | Slack + Portal | Scheduled — delivered every morning |
| Weekly performance report | Slack + Portal | Scheduled — every Friday, QuantStats + P&L + narrative |
| L2/L3 alerts | Slack (ntfy) | Event-driven — position monitoring triggers |
| TradingView signal intake | Slack (ntfy) | Event-driven — webhook fires on alert conditions |
| Grok narrative briefing | Slack + Portal | Scheduled — AI-generated market narrative |
| Report Studio output | Slack | On-demand — /report generates formatted deliverable |
Reports run on n8n schedules. Intelligence arrives where the team already works.
| Agent | Domain | Output | Cadence |
|---|---|---|---|
| Crypto | On-chain metrics, exchange flows, funding rates | Anomaly reports, whale alerts | Continuous |
| Macro Sentiment | FX, rates, commodities, equities | Conviction scoring, divergence flags | Daily + continuous |
| Geopolitical Risk | Regulatory, sanctions, elections | Risk event alerts, jurisdiction monitoring | Continuous |
| Agent | Domain | Output | Month |
|---|---|---|---|
| Mímir | Broker research corpus | Sourced answers, cross-broker synthesis | Live |
| Daily Brief | Overnight synthesis | Themed morning report, high-impact flags | Live |
| Content Engine | Thought leadership | 2–3 pieces/week (IS + EN), newsletters, LinkedIn | 4 |
| CRM Agent | LP relationships | Meeting prep, follow-up drafts, relationship queries | 4 |
| Scenario Lab | Overnight deep analysis | Scenario reports, probability, portfolio impact | 5 |
| Signal Generator | Proprietary signals | Backtestable signals from Viska framework | 5 |
| Partner Intelligence | Distribution surveillance | Weekly: regulatory, AUM, personnel, news | 6 |
| Tool | Type | Capability | Selection Rationale |
|---|---|---|---|
| Alpaca MCP | Agent MCP | 70+ tools: account, orders, positions, market data | Official API, paper + live, no ToS concerns |
| FRED MCP | Agent MCP | 800,000+ macro data series | Official Fed data, maintained, discovered in MCP audit |
| QuantOracle | Agent MCP | 63 deterministic tools: Sharpe, Sortino, Greeks | Production-grade, 1000 free/day, discovered in audit |
| Ollama MCP | Agent MCP | Local inference (Gemma 4) | Own hardware, no API costs, synthesis tasks |
| SQLite MCP | Agent MCP | Direct SQL to trading.db | Zero-latency session access to logs/signals |
| TradingView Webhooks | Signal delivery | Alert-driven signal intake | Official, supported, no scraping |
| Cloudflare R2 | Storage | Static JSON for dashboard | Zero-cost reads, n8n writes via S3 node |
| n8n | Automation | 7 pipelines | Self-hosted, auditable, no vendor lock-in |
| alpaca-py v0.43.2 | Python | Alpaca SDK | Official (replaces deprecated alpaca-trade-api) |
| pandas-ta | Python | Technical indicators | Confirmation layer for analyst |
| PyPortfolioOpt | Python | Position sizing (mean-variance, HRP) | Risk manager tool |
| Riskfolio-Lib | Python | Tail-risk (CVaR) | Risk manager tool |
| QuantStats | Python | Performance tearsheets | Weekly report generation |
| Tool | Decision | Kill Factors |
|---|---|---|
| TradingView Chart MCP | Declined permanently | (1) ToS violation — headless browser scraping. (2) Fragile — CDP 889+ issues. (3) 500MB+ RAM. (4) Single-agent lock. (5) Pine Script irrelevant. |
| Browser-automation integrations | Policy: never adopt | Any tool automating a browser against a service's web UI creates fragile, ToS-violating dependencies. |
| Autonomous order execution | Design principle | Human approval is permanent. Schema-enforced. Not a Phase 1 limitation. |
| NotebookLM integration | Not integrated | Claude pipeline superior: 99% vs 60% transcript success. Audio noted for future. |
| Tool | Decision | Rationale |
|---|---|---|
| TradingView MCP (Python) | Selective — Phase 1D | Pure Python, no browser automation. Backtesting + screening + multi-timeframe. 8 of 30 tools installed. |
| FinBERT | Deferred — Phase 1D | Requires FastAPI sidecar. Manual news monitoring until deployed. |
| Lean CLI (QuantConnect) | Evaluate — Phase 1D | Backtesting alternative. Requires Docker. |
| Finding | Impact |
|---|---|
| FRED MCP + QuantOracle close the quantitative macro layer | Eliminated strongest argument for TradingView MCP adoption |
| MCP costs 10–32x more tokens than CLI (25 runs) | CLI-first strategy. Selective MCP tool exposure. |
| GitHub MCP burns ~55K tokens for 43 tools | Never install 30+ tools unfiltered. |
| Grok must use Responses API | Workflow uses correct API path from day one |
| Index retrieval outperforms RAG at ~400K words | Knowledge base uses index retrieval, no vector DB |
| n8n S3 node supports R2 via custom endpoint | R2 as zero-cost static data store |
| @mastra-factory/config pulling from live branch tip | Pinned to SHA. Supply chain risk eliminated. |
New information arrives constantly — new models ship, fund priorities shift, market conditions change, the team discovers capabilities they didn't know they needed.
At every phase boundary (monthly), we:
New deliverables can be added at any phase boundary. The CIO's original 10 plans are the starting point, not the ceiling.
| Principle | Implementation |
|---|---|
| Credential isolation | Keys never enter AI reasoning layer. Runtime injection via sandbox. AI uses credentials, cannot see them. |
| Scope boundaries | Each agent has defined domain, enforced mechanically. Research ≠ financial data. Communications ≠ trades. |
| Audit trails | Every decision, action, data access logged and traceable. |
| Human authority | No consequential action without approval. Permanent. |
| Browser security | Credentials never reach dashboard. FastAPI proxy handles auth server-side. Read-only frontend. |
All code on Viska GitHub. Knowledge base on Viska Supabase. Claude subscription on mimir@viskasjodir.is. Dashboard on Viska domain. Nothing locked in.
| Capability | M1 | M2 | M3 | M4 | M5 | M6 |
|---|---|---|---|---|---|---|
| Research corpus query | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Daily intelligence brief | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Central bank sources | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| MCP workspace access | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 24/7 surveillance agents | · | ✓ | ✓ | ✓ | ✓ | ✓ |
| Sentiment tracking | · | ✓ | ✓ | ✓ | ✓ | ✓ |
| Paper trading + risk enforcement | · | · | ✓ | ✓ | ✓ | ✓ |
| Live dashboard (7 pages) | · | · | ✓ | ✓ | ✓ | ✓ |
| TradingView signal intake | · | · | ✓ | ✓ | ✓ | ✓ |
| 63 quant analysis tools | · | · | ✓ | ✓ | ✓ | ✓ |
| LP letter automation | · | · | · | ✓ | ✓ | ✓ |
| Thought leadership (2–3/wk) | · | · | · | ✓ | ✓ | ✓ |
| Meeting intelligence | · | · | · | ✓ | ✓ | ✓ |
| Overnight scenario analysis | · | · | · | · | ✓ | ✓ |
| Proprietary signal generation | · | · | · | · | ✓ | ✓ |
| Partner surveillance | · | · | · | · | · | ✓ |
| Full ownership + handoff | · | · | · | · | · | ✓ |