Turning stocks and prices into understandable risks
RiskSpeak is a portfolio risk analysis platform that helps investors understand what could go wrong — before it does. Instead of raw metrics or opaque scores, RiskSpeak translates portfolio data into structured, explainable risk insights so that everyone can understand.
Modern investors have access to more data than ever, yet risk remains poorly communicated. Volatility numbers, beta values, and exposure tables often fail to answer the real question:
What risks am I actually exposed to — and why do they matter?
RiskSpeak was built to close this gap. The project was inspired by the disconnect between quantitative finance tools and how humans reason about risk. Whether you’re a student investor, analyst, or fintech builder, understanding risk should be clear, interpretable, and actionable — not buried in spreadsheets.
RiskSpeak ingests portfolio data and generates structured risk insights across multiple dimensions:
- Portfolio-level risk
- Concentration risk
- Exposure by sector, broker, and asset
- Market & volatility signals
- Asset-level and aggregate volatility indicators
- Sentiment-driven risk
- News sentiment signals tied to holdings
- Explainable outputs
- Human-readable summaries instead of black-box scores
The goal is not just to flag risk, but to explain it in plain language.
- Python
- FastAPI
- Pydantic
- Uvicorn
- Market data ingestion
- News sentiment analysis
- Cached data pipelines for performance
- Modular service-based architecture
- Clean API routing
- Swagger / OpenAPI documentation
git clone https://github.com/tanvibatchu/RiskSpeak.git
cd RiskSpeakpython3 -m venv venv
source venv/bin/activate # macOS / Linux
# venv\Scripts\activate # Windowspip install -r requirements.txtor
Create a .env file from the template:
cp .env.example .envFill in required values (News API key, broker id's if needed).
python app/main.pyOr with hot reload:
uvicorn app.main:app --reloadThe API will be available at:
http://127.0.0.1:8000Interactive API docs:
http://127.0.0.1:8000/docs- POST
/portfolio– Submit a portfolio for analysis - GET
/portfolio– Retrieve the currently stored portfolio
- POST
/analysis– Generate risk insights for a portfolio- Body: Portfolio holdings (e.g., tickers and weights)
- Returns: Structured risk analysis including concentration, exposure, and volatility signals
- GET
/brokers– Retrieve broker-level exposure and metadata
- GET
/health– API health check
- GET
/docs– OpenAPI documentation