92 lines
3.6 KiB
Markdown
92 lines
3.6 KiB
Markdown
# Bitcoin Price Model Description
|
|
|
|
## Overview
|
|
This Bitcoin price prediction model uses a combination of log returns, cycle awareness, and Monte Carlo simulation to generate price projections with confidence intervals. The model was developed through several iterations, with each refinement aimed at improving accuracy and reliability.
|
|
|
|
## Core Components
|
|
|
|
### 1. Trend Analysis
|
|
- Uses log returns of Bitcoin prices to better handle exponential growth patterns
|
|
- Groups returns by position within the halving cycle (0-1460 days)
|
|
- Applies simple moving average smoothing to reduce noise while preserving underlying patterns
|
|
- Position within cycle is calculated linearly between known halving dates
|
|
|
|
### 2. Volatility Estimation
|
|
Uses a multi-timeframe approach:
|
|
- Short window (30 days)
|
|
- Medium window (90 days)
|
|
- Long window (180 days)
|
|
- Combines these using weighted exponential moving averages
|
|
- Applies a scaling factor of 1.2 to better calibrate confidence intervals
|
|
|
|
### 3. Price Projection
|
|
- Uses Monte Carlo simulation with 1000 paths
|
|
- Incorporates a small directional skew (0.087) based on expected returns
|
|
- Generates both point estimates and confidence intervals
|
|
- Projects forward using cycle-aware return expectations
|
|
|
|
## Key Features
|
|
|
|
### Log Returns
|
|
Instead of working directly with prices or simple returns, the model uses log returns which:
|
|
- Better handle Bitcoin's exponential price growth
|
|
- Provide more stable statistical properties
|
|
- Allow for simpler cumulative return calculations
|
|
|
|
### Cycle Awareness
|
|
- Recognizes Bitcoin's ~4 year (1460 day) halving cycle
|
|
- Maps historical returns to cycle positions
|
|
- Allows the model to capture recurring patterns around halving events
|
|
|
|
### Enhanced Monte Carlo
|
|
- Base simulation using normal distribution
|
|
- Includes small directional skew to capture trend persistence
|
|
- Generates both median projections and confidence intervals
|
|
- Well-calibrated uncertainty estimates (68% CI coverage ≈ 68.1%)
|
|
|
|
## Performance Metrics
|
|
When trained on 2016-2024 (two full cycles):
|
|
- MAPE: 19.9%
|
|
- RMSE: ~$17,000
|
|
- 68% CI Coverage: 68.1%
|
|
- 95% CI Coverage: ~99.5%
|
|
|
|
## Development History
|
|
1. Started with direct cycle analysis of returns
|
|
2. Moved to log-based analysis for better handling of exponential growth
|
|
3. Refined volatility calculation using multiple timeframes
|
|
4. Fine-tuned confidence intervals through skew adjustment
|
|
5. Simplified trend smoothing while maintaining accuracy
|
|
|
|
## Current Implementation
|
|
The model uses three main functions:
|
|
|
|
1. `analyze_trends()`: Calculates cycle-position-specific log returns with smoothing
|
|
2. `calculate_volatility()`: Computes volatility estimate using multiple timeframes
|
|
3. `project_prices()`: Generates price projections using Monte Carlo simulation
|
|
|
|
## Strengths
|
|
- Well-calibrated uncertainty estimates
|
|
- Captures both cycle effects and recent market behavior
|
|
- Handles exponential price growth naturally
|
|
- Balances complexity with interpretability
|
|
|
|
## Limitations
|
|
- Assumes future cycles will resemble past ones
|
|
- Does not explicitly model market maturity effects
|
|
- Uses simple linear interpolation between halving dates
|
|
- May not capture extreme market events well
|
|
|
|
## Possible Future Improvements
|
|
- Market maturity indicators
|
|
- Non-linear cycle progression
|
|
- Regime detection
|
|
- External factor incorporation
|
|
|
|
## Usage Notes
|
|
The model works best when:
|
|
- Trained on at least one full cycle of data
|
|
- Used for medium-term projections (months to years)
|
|
- Interpreted probabilistically rather than as point forecasts
|
|
|
|
The confidence intervals should be understood as ranges of likely outcomes based on historical patterns, not hard bounds on future prices. |