Skip to main content

LunarCrush sentiment data provider

Project description

LunarCrush FreqTrade External Data Provider

A professional-grade external data provider that integrates LunarCrush sentiment data with FreqTrade for cryptocurrency trading strategies.

Overview

This provider fetches real-time cryptocurrency sentiment and social metrics from the LunarCrush API and makes them available to FreqTrade strategies. It includes advanced features like intelligent caching, timeframe conversion, and robust error handling.

Features

  • 22 Sentiment & Market Data Fields - Complete coverage including social dominance, galaxy scores, and market metrics
  • Intelligent Caching - Efficient data storage with configurable cache management
  • Timeframe Conversion - Automatic conversion between different timeframes (1m to 1M)
  • Robust Error Handling - Graceful degradation and comprehensive logging
  • Professional Testing - 100% test coverage with 32 passing tests
  • Production Ready - Clean architecture with proper separation of concerns

Quick Start

1. Setup

# In your FreqTrade strategy
from lunarcrush import get_lunarcrush_provider

def __init__(self, config: dict):
    super().__init__(config)
    
    # Initialize LunarCrush provider
    bearer_token = os.environ.get('LUNARCRUSH_BEARER_TOKEN')
    if bearer_token:
        self.lunarcrush_provider = get_lunarcrush_provider(bearer_token)

2. Environment Variables

export LUNARCRUSH_BEARER_TOKEN="your_api_token_here"

3. Basic Usage

def feature_engineering_expand_all(self, dataframe, period, metadata):
    if self.lunarcrush_provider:
        # Get sentiment features
        sentiment_df = self.lunarcrush_provider.get_sentiment_features(
            pair=metadata['pair'],
            timeframe=metadata['tf'],
            since_ms=int(dataframe['date'].iloc[0].timestamp() * 1000)
        )
        
        # Merge with price data
        if not sentiment_df.empty:
            dataframe = pd.concat([dataframe, sentiment_df], axis=1)
    
    return dataframe

Available Data Fields

Sentiment Metrics

  • lc_sentiment - Overall sentiment score (-1 to 1)
  • lc_sentiment_absolute - Absolute sentiment strength
  • lc_sentiment_relative - Relative sentiment vs market
  • lc_social_dominance - Social media dominance percentage
  • lc_social_volume - Total social media mentions
  • lc_galaxy_score - LunarCrush proprietary score (0-100)

Market Data

  • lc_circulating_supply - Circulating token supply
  • lc_market_cap - Market capitalization
  • lc_market_dominance - Market dominance percentage
  • lc_volume_24h - 24-hour trading volume

Community Metrics

  • lc_contributors_active - Active social contributors
  • lc_interactions - Social media interactions
  • lc_posts_active - Active posts count

Ranking Data

  • lc_alt_rank - Alternative rank
  • lc_market_cap_rank - Market cap rank
  • lc_correlation_rank - Price correlation rank

Plus additional technical indicators and scores

Configuration

provider = get_lunarcrush_provider(
    bearer_token="your_token",
    cache_dir="lunarcrush/data",  # Cache location
    update_interval_hours=1,                              # Update frequency
    max_cache_age_days=30                                # Cache retention
)

Supported Timeframes

All standard FreqTrade timeframes:

  • Intraday: 1m, 3m, 5m, 15m, 30m, 1h, 4h, 12h
  • Daily+: 1d, 3d, 1w, 2w, 1M

Architecture

graph LR
    A[FreqTrade Strategy] --> B[LunarCrush Provider]
    B --> C[LunarCrush API]
    B --> D[Cache System + Converter]

Test Coverage:

  • ✅ 32 tests passed (100% success rate)
  • ⏭️ 4 tests skipped (external dependencies)
  • 🧪 Covers all core functionality, edge cases, and integrations

Test Categories

  • Converter Tests - Field extraction, timeframe conversion, NaN handling
  • Provider Tests - API integration, caching, datetime compatibility
  • Strategy Integration - End-to-end workflow validation

Troubleshooting

Common Issues

  1. Empty Data Returns

    • Verify LUNARCRUSH_BEARER_TOKEN is set correctly
    • Check that the cryptocurrency is supported by LunarCrush
    • Ensure sufficient API credits remain
  2. Cache Issues

    • Clear cache: rm -rf data/
    • Check disk space and permissions
  3. Timeframe Errors

    • Verify timeframe format (e.g., '1h', '4h', '1d')
    • Check that requested timeframe is supported

Debug Mode

Enable verbose logging:

import logging
logging.getLogger('lunarcrush').setLevel(logging.DEBUG)

API Limits

  • Rate Limit: 10 requests/minute, 2000 requests/day
  • Caching: Automatic to minimize API usage
  • Backoff: Smart retry logic for rate limit handling

License

This external data provider is designed for use with FreqTrade and requires a valid LunarCrush API subscription.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lunarcrush_provider-1.0.6.tar.gz (26.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lunarcrush_provider-1.0.6-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

Details for the file lunarcrush_provider-1.0.6.tar.gz.

File metadata

  • Download URL: lunarcrush_provider-1.0.6.tar.gz
  • Upload date:
  • Size: 26.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for lunarcrush_provider-1.0.6.tar.gz
Algorithm Hash digest
SHA256 6cfbc31763211ad86199d9188a36e97fb2514243e14259592c4da4412d0a73c2
MD5 7c995047d968879205b506b5b0d0203e
BLAKE2b-256 61a1b23b4d814862b039f705ea00c66094d43a15b3856b132441afadf66790a5

See more details on using hashes here.

File details

Details for the file lunarcrush_provider-1.0.6-py3-none-any.whl.

File metadata

File hashes

Hashes for lunarcrush_provider-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 bcfc6e0adec0655861a4cb7beef9e3b69295ecbf043e00645169044aa7e3dd3a
MD5 b463f8619c0ce94147f5538dfd1b3dfc
BLAKE2b-256 b45f9e6e5fffd145fa1233e88fe079def46d5c4b2a99b933e3bf7bb39c8b7644

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page