npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@neural-trader/example-energy-forecasting

v1.0.0

Published

Self-learning energy forecasting with conformal prediction and swarm-based ensemble models

Readme

@neural-trader/example-energy-forecasting

Self-learning energy forecasting with conformal prediction and swarm-based ensemble models.

Features

  • Multi-Model Ensemble: ARIMA, LSTM, Transformer, and Prophet models
  • Conformal Prediction: Guaranteed coverage prediction intervals with @neural-trader/predictor
  • Swarm-Based Optimization: Parallel hyperparameter exploration for optimal model selection
  • Adaptive Learning: Online model updates and horizon-specific model weighting
  • Seasonal Pattern Detection: Automatic detection and modeling of seasonal components
  • Dual Implementation: Pure TypeScript with automatic WASM/Native acceleration via @neural-trader/predictor
  • Uncertainty Quantification: Statistically rigorous prediction intervals with configurable confidence levels

Supported Domains

  • ☀️ Solar Generation: Photovoltaic power forecasting with daily cycles
  • 💨 Wind Power: Wind turbine generation with high variability
  • Electricity Demand: Load forecasting with multi-seasonal patterns
  • 🌡️ Temperature: Weather prediction with seasonal trends

Installation

npm install @neural-trader/example-energy-forecasting

Quick Start

import { EnergyForecaster, EnergyDomain, ModelType } from '@neural-trader/example-energy-forecasting';

// Create forecaster
const forecaster = new EnergyForecaster(EnergyDomain.SOLAR, {
  alpha: 0.1,              // 90% confidence intervals
  horizon: 48,             // 48-hour forecast
  seasonalPeriod: 24,      // Daily seasonality
  enableAdaptive: true,
  ensembleConfig: {
    models: [ModelType.ARIMA, ModelType.LSTM, ModelType.PROPHET]
  }
});

// Train with historical data
const historicalData = [
  { timestamp: Date.now(), value: 150 },
  // ... more data points
];
await forecaster.train(historicalData);

// Generate forecast
const forecast = await forecaster.forecast(48);

// Access predictions with confidence intervals
forecast.forecasts.forEach(f => {
  console.log(`Time: ${new Date(f.timestamp).toISOString()}`);
  console.log(`Forecast: ${f.pointForecast}`);
  console.log(`Interval: [${f.interval.lower}, ${f.interval.upper}]`);
  console.log(`Confidence: ${f.confidence * 100}%`);
});

Architecture

Core Components

1. EnergyForecaster

Main forecasting system that orchestrates ensemble models and conformal prediction.

const forecaster = new EnergyForecaster(EnergyDomain.SOLAR, config);
await forecaster.train(data);
const forecast = await forecaster.forecast(48);

2. EnsembleSwarm

Swarm-based hyperparameter optimization and adaptive model weighting.

const ensemble = new EnsembleSwarm({
  models: [ModelType.ARIMA, ModelType.LSTM],
  adaptiveLearningRate: 0.05,
  retrainFrequency: 100
});
await ensemble.trainEnsemble(trainingData, validationData);

3. EnergyConformalPredictor

Wrapper around @neural-trader/predictor for uncertainty quantification.

const predictor = new EnergyConformalPredictor(ModelType.ARIMA, {
  alpha: 0.1,
  calibrationSize: 2000
}, true); // adaptive mode

await predictor.initialize();
await predictor.calibrate(historicalData, predictions);

Model Implementations

All models implement the ForecastingModel interface:

  • ARIMAModel: Exponential smoothing with trend
  • LSTMModel: Recurrent patterns with attention-like weights
  • TransformerModel: Self-attention mechanism
  • ProphetModel: Trend + seasonality decomposition

Examples

Run the included examples:

# Solar generation forecasting
npm run example:solar

# Wind power forecasting
npm run example:wind

# Electricity demand forecasting
npm run example:demand

# Temperature prediction
npm run example:temperature

Configuration

ForecasterConfig

interface ForecasterConfig {
  alpha?: number;                    // Conformal prediction miscoverage rate (default: 0.1)
  calibrationSize?: number;          // Max calibration samples (default: 2000)
  horizon?: number;                  // Default forecast horizon (default: 24)
  seasonalPeriod?: number;           // Seasonal period in hours (default: 24)
  enableAdaptive?: boolean;          // Enable adaptive conformal prediction (default: true)
  ensembleConfig?: EnsembleConfig;   // Ensemble configuration
  weatherIntegration?: WeatherConfig; // Weather API integration
}

EnsembleConfig

interface EnsembleConfig {
  models: ModelType[];                              // Models to include in ensemble
  horizonWeights?: Map<number, Map<ModelType, number>>; // Custom horizon weights
  adaptiveLearningRate?: number;                    // Learning rate for weight updates (default: 0.05)
  retrainFrequency?: number;                        // Retraining frequency (default: 100)
  minCalibrationSamples?: number;                   // Min samples for calibration (default: 50)
}

Conformal Prediction

This package uses @neural-trader/predictor for statistically rigorous uncertainty quantification:

  • Split Conformal Prediction: Distribution-free prediction intervals
  • Adaptive Conformal Inference: Dynamic alpha adjustment for target coverage
  • Multiple Implementations: Pure TypeScript with automatic WASM/Native acceleration

Coverage Guarantees

With conformal prediction, the forecaster provides mathematically guaranteed coverage:

P(y_true ∈ [lower, upper]) ≥ 1 - α

For α = 0.1, at least 90% of true values will fall within the prediction intervals.

Performance

Model Selection by Domain

Recommended models for each domain based on empirical performance:

  • Solar: Prophet, ARIMA (strong daily seasonality)
  • Wind: LSTM, Transformer (high variability)
  • Demand: Prophet, LSTM (multi-seasonal patterns)
  • Temperature: Prophet, Transformer (seasonal trends)

Computational Complexity

  • Training: O(n·m·k) where n=samples, m=models, k=hyperparameter candidates
  • Prediction: O(h·m) where h=horizon, m=models in ensemble
  • Calibration: O(n log n) for conformal predictor
  • Update: O(log n) for online learning

Parallel Execution

The swarm exploration runs hyperparameter search in parallel:

// All model types explored concurrently
const explorationPromises = models.map(modelType =>
  ensemble.exploreHyperparameters(modelType, data, validation)
);
await Promise.all(explorationPromises);

Testing

Comprehensive test suite with >90% coverage:

npm test                 # Run all tests
npm run test:watch      # Watch mode
npm run test:coverage   # Coverage report

API Reference

Main Classes

  • EnergyForecaster: Main forecasting system
  • EnsembleSwarm: Swarm-based ensemble learning
  • EnergyConformalPredictor: Conformal prediction wrapper
  • ARIMAModel, LSTMModel, TransformerModel, ProphetModel: Model implementations

Types

  • TimeSeriesPoint: Time series data point
  • ForecastResult: Single forecast with prediction interval
  • MultiStepForecast: Multi-step forecast results
  • ModelPerformance: Model performance metrics
  • EnergyDomain: Energy domain enum
  • ModelType: Model type enum

Advanced Usage

Custom Model Weights

const horizonWeights = new Map([
  [1, new Map([[ModelType.LSTM, 0.6], [ModelType.ARIMA, 0.4]])],
  [24, new Map([[ModelType.PROPHET, 0.5], [ModelType.LSTM, 0.5]])],
]);

const forecaster = new EnergyForecaster(domain, {
  ensembleConfig: {
    models: [ModelType.LSTM, ModelType.ARIMA, ModelType.PROPHET],
    horizonWeights
  }
});

Online Learning

// Initial training
await forecaster.train(historicalData);

// Generate forecast
const forecast = await forecaster.forecast(24);

// Update with new observations as they arrive
for (const observation of newData) {
  await forecaster.update(observation);
}

Accessing Statistics

const stats = forecaster.getStats();

console.log('Domain:', stats.domain);
console.log('Training points:', stats.trainingPoints);
console.log('Models:', stats.ensembleStats.modelCount);
console.log('Seasonal strength:', stats.seasonalPattern?.strength);

// Per-model performance
stats.ensembleStats.performances.forEach(({ model, performance }) => {
  console.log(`${model}: MAPE=${performance.mape}%, RMSE=${performance.rmse}`);
});

Integration with Neural Trader

This package integrates seamlessly with the Neural Trader ecosystem:

  • @neural-trader/predictor: Conformal prediction core
  • agentdb: Memory-persistent model performance tracking (optional)
  • claude-flow: Swarm orchestration (optional)
  • openrouter: Weather pattern interpretation (optional)

Contributing

Contributions welcome! Please ensure:

  • Tests pass: npm test
  • Linting passes: npm run lint
  • Types check: npm run typecheck
  • Coverage >90%: npm run test:coverage

License

MIT

See Also