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:

  1. REST API. Stateless HTTP endpoints, JSON in/out, API-key auth, OpenAPI spec. Forecast endpoints return point estimates, confidence intervals, and regime probabilities.
  2. Finovamax-embedded. Native UI and data integration inside Finovamax deployments. Zero additional integration surface for institutions already using our banking software.
  3. 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

Schedule a technical conversation Use cases & integration