AimotoLocal research application

Aimoto brings together data preparation, daily forecasting, backtesting and result comparison in a local research interface.

Aimoto presentation montage: a historical Bitcoin forecast preview displayed on a laptop.

Overview

Experiment with Bitcoin models, then test them against historical data.

The problemEvaluating Bitcoin forecasting approaches requires preparing time series, repeating experiments and comparing results without mixing training and evaluation data.

The solutionA local application connects market data, configurable models, a backtesting engine and comparison views to support the complete experimental workflow.

User workflow

Datasets and features

Import or refresh daily series and select the features used in experiments. Feature catalogue, data providers and freshness indicators.

1 / 4: Prepare the data. Previous step / Next step

Technical architecture

The interface calls a local API that orchestrates computations and persists experiment metadata and artifacts.

Web interface

Next.js / TypeScript

Configure, track and compare experiments
HTTP / SSE

Local API

FastAPI / Python

Validate requests and expose results
Job queue

Compute engine

Python

Run experiments and backtests
Results and states

Local storage

SQLite / Parquet

Store execution states, metrics and artifacts
  • Web interface: Next.js / TypeScript. Configure, track and compare experiments HTTP / SSE.
  • Local API: FastAPI / Python. Validate requests and expose results Job queue.
  • Compute engine: Python. Run experiments and backtests Results and states.
  • Local storage: SQLite / Parquet. Store execution states, metrics and artifacts

Technical challenges

01

Avoid temporal data leakage

Constraint

Time-series backtests can be biased if future observations leak into training.

The solution

Date-based walk-forward splits and explicit availability lags for features.

02

Track long-running jobs

Constraint

Model training and calculations can outlive HTTP requests and may be interrupted.

The solution

A job queue, separate worker, states and progress tracking, with SSE updates and polling fallback in the interface.

03

Keep artifacts consistent

Constraint

An interrupted write can leave incomplete result files.

The solution

Validated temporary JSON writes followed by atomic replacement, fsync and targeted retries for I/O errors.

Main technical stack

Next.jsReactTypeScriptPythonTailwind CSSRecharts

Outcomes and learnings

Guided experiments

Run configuration flows and a batch matrix of feature and model combinations.

Backtesting and comparison

Forecasting and backtesting engines, run history, leaderboard and result visualizations.

Execution monitoring

A job queue, computation stages and status updates surfaced in the interface.