I built Veto Sentinel to give trading bots an independent, news-based risk signal. Rather than attempting to predict prices or make trading decisions, it acts as a second line of defence: when conditions become concerning, it tells connected bots to become more cautious or stop placing new orders.
Veto Sentinel monitors financial news from GDELT and central-bank RSS feeds, with optional support for NewsAPI. It cleans and deduplicates incoming headlines, then measures three warning signals:
Negativity: FinBERT (a specialized financial AI model), estimates how negative recent financial headlines are.
Topic drift: MiniLM sentence embeddings measure how much the news narrative has changed compared with the previous seven days.
News volume: The system detects unusual increases in headline volume relative to the same time of day on previous days.
Each signal is compared with its recent historical baseline using robust z-scores. The system combines them into a risk score, applies a CUSUM change-point detector, and uses a deterministic state machine with hysteresis and a cooling-off period to determine the current risk level.
The result is communicated as All clear, Be careful, or Stop. A fourth level, Emergency, is reserved for a human operator.
The most important part is what happens next. Every second, Veto Sentinel broadcasts sequenced state and heartbeat messages over ZeroMQ. Python and C++ client SDKs enforce those states locally inside connected trading bots. If a heartbeat disappears, a message is malformed, a sequence number is missing, or the monitor is not ready, the client fails safe and blocks new orders without waiting for a network request.
Veto Sentinel never connects to a broker, submits trades, or liquidates positions automatically.
Built With
- c++20
- cmake
- duckdb
- fastapi
- financial-technology
- finbert
- gdelt
- google-gemini-api
- html/css
- hugging-face-transformers
- javascript
- machine-learning
- natural-language-processing
- newsapi
- numpy
- pydantic
- pytest
- python
- pytorch
- sentence-transformers
- sqlite
- uv
- zeromq
Log in or sign up for Devpost to join the conversation.