The dashboard reads the files in ../investor-os/. Those markdown files remain the source of truth; the app does not overwrite them.
cd financial-agent
py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
Copy-Item .env.example .env
streamlit run app.pyPython 3.11+ is required. After the first launch, run ./Start-Dashboard.ps1 for future starts.
If this Windows machine has a corporate or managed certificate chain, the launcher explicitly trusts PyPI hosts while installing dependencies.
Add your API key to .env only if you want dashboard chat. Without it, the portfolio view, risk flags, closed-position history, and downloadable morning brief work normally.
The live-price button uses Yahoo Finance as a display-only reference. It does not convert currencies or alter your records.
daily_brief.py combines curated market news with a three-horizon market map. It checks short-term risk (2Y/10Y Treasury moves, high-yield credit stress, VIX), the medium-term backdrop (yield curve, financial conditions, inflation expectations), and long-term liquidity (US M2 and the Fed balance sheet). It also filters headlines for big events, institutional moves, retail mood, earnings, sectors, breadth/options, and growth/PMI themes.
The daily report is generated by market_analysis.py, which keeps facts separate from interpretation and does not use headline word-count sentiment to decide whether markets are bullish or bearish. Its scoring currently weights macro/rates, liquidity, and credit/volatility only; earnings revisions, valuation, breadth, positioning, ETF flows, and exact technical levels remain explicitly unscored until a specialist data feed is connected.
charts.py may attach up to two charts to Telegram when rates move materially, volatility is elevated, or credit stress widens. It currently supports Treasury-curve and credit/VIX charts from FRED. No chart is sent when there is no meaningful visual signal.
- Create a Telegram bot through BotFather, message the bot once, then retrieve your chat ID.
- Add
TELEGRAM_BOT_TOKENandTELEGRAM_CHAT_IDto.env. - Test with
./.venv/Scripts/python.exe daily_brief.py. - Install the weekday 07:30 schedule with
./Install-DailyBrief.ps1. Use./Install-DailyBrief.ps1 -Time "08:00"to choose another time.
The job does not alter the Investor OS files. It saves a copy under data/briefs/ and only then sends the generated text to Telegram.
Set OPENAI_DAILY_BRIEF_ENABLED=true after adding API credits. The AI receives dated FRED observations, current cross-asset prices and moves from Yahoo Finance, plus publisher-attributed Google News headlines with timestamps and links. It must separate observed facts from implications and explain the transmission mechanism. With AI disabled or unavailable, the bot sends the deterministic data-led fallback. Exact ETF-flow, put/call, breadth, valuation, and earnings-revision numbers still require a dedicated market-data provider; the system will not invent them.
- Update the broker workbook or provide a new export.
- Update
../investor-os/financials/portfolio.mdand the applicable monthly statement. - Refresh the dashboard page.
Portfolio records, account balances, transactions, generated briefs, and credentials are local-only and excluded from Git.