Architecture
How Asotele ingests, models, evaluates, and serves economic forecasts. This page is for engineering and data-science teams evaluating the system for integration.
System overview
┌─────────────────────────────────────────────────────────────────┐
│ DATA LAYER (17 daily scrapers, cron 04:30 UTC) │
│ oil · fx_official · fx_parallel · cbn · ngx · ngx_sectors │
│ food · fuel · cement · jobs · telecom · news · trends │
│ worldbank · tron_flows · crypto_fx · acled │
└──────────────────────────────┬──────────────────────────────────┘
│ JSON / CSV per source per day
▼
┌─────────────────────────────────────────────────────────────────┐
│ NLP LAYER │
│ FinBERT · CentralBankRoBERTa · InflaBERT · keyword fallback │
│ → sentiment scores per news item, aggregated per source │
└──────────────────────────────┬──────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ FORECAST LAYER │
│ ARIMA (univariate baselines, auto-activates ≥20 obs) │
│ Markov regime-switching + GARCH(1,1) (boom/stress/crisis) │
│ VAR + Granger causality (multi-variable, ≥30 obs) │
│ Chronos-2 · BISTRO (time-series foundation models) │
└──────────────────────────────┬──────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ INTELLIGENCE LAYER │
│ Ollama-hosted: Qwen 3 14B · Mistral Small 24B · Devstral 24B │
│ Fine-tune target: Qwen 3.6 35B-A3B · Gemma 4 26B-A4B │
│ → daily briefing · Q&A · scenario analyses │
└──────────────────────────────┬──────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ SERVING LAYER │
│ REST API · Finovamax embedded · private deployment │
└─────────────────────────────────────────────────────────────────┘
Data sources
Seventeen daily scrapers, written in Python, run from a single cron at 04:30 UTC. Each scraper writes a dated JSON to data/<source>/. Sources are intentionally redundant where possible (e.g., FX is captured from CBN, parallel market, and crypto-derived rates) so failure of any single source degrades forecasts gracefully.
Forecast engines
ARIMA
Auto-activated per series at 20 observations. Used as a univariate baseline against which more sophisticated models are evaluated. Implemented with statsmodels.
Markov regime-switching + GARCH(1,1)
Three-regime classification (boom / stress / crisis) on oil prices. GARCH(1,1) volatility modeling on FX series, with EGARCH auto-upgrade at 200+ observations to capture asymmetric shocks. Implemented with arch and statsmodels.
VAR + Granger causality
Multi-variable vector autoregression across FX, oil, NGX, and inflation. Activates at 30+ observations per series. Granger causality testing identifies which signals predict which over which horizons. Implemented with statsmodels.
Foundation model layer
Three tiers:
- Tier 1 (live): Ollama-hosted Qwen 3 14B, Mistral Small 24B, Devstral 24B for daily briefing generation and Q&A
- Tier 2 (live): Chronos-2 and BISTRO time-series foundation models running on the inference GPU
- Tier 3 (in development): Qwen 3.6 35B-A3B Mixture-of-Experts and Gemma 4 26B-A4B, fine-tuned on emerging-market economic corpus (CBN/NBS documents, NGX market reports, 10 years of Nigerian financial journalism). Compute capacity for the fine-tune is the current bottleneck.
Evaluation methodology
Every forecast is logged with its conditioning data, model version, and prediction horizon. Realized outcomes are joined back monthly. Metrics published openly: MAPE per series per horizon, regime-classification confusion matrix, sentiment-classification F1, factual recall on a published Nigerian-economy benchmark, and LLM hallucination rate measured against ground-truth source documents. The evaluation harness is part of the open-source release.
Deployment
Three integration patterns:
- REST API. Stateless HTTP endpoints, JSON in/out, API-key auth, OpenAPI spec. Forecast endpoints return point estimates, confidence intervals, and regime probabilities.
- Finovamax-embedded. Native UI and data integration inside Finovamax deployments. Zero additional integration surface for institutions already using our banking software.
- Private VPC deployment. We install the full Asotele stack inside your network. Your data stays with you. Annual support contract.
Code and licensing
Pipeline code, forecasting engines, fine-tune scripts, and evaluation harness: GitHub (Apache 2.0). Model weights and datasets: HuggingFace under permissive open licenses. Documentation includes replication guides for adapting Asotele to other emerging markets.
Hardware footprint (current)
- CPU pipeline: standard Linux server, daily cron, ~2 hours wall-clock per run
- Inference GPU: RTX 3090 (24 GB) — sufficient for Tier 1 and Tier 2 inference
- Fine-tune compute (Tier 3 target): TPU pod or 8×A100 cluster, ~2-4 weeks per model