Skip to content

A comprehensive Python project for Bitcoin Cicada v14 trading strategy analysis, featuring advanced 4-metric entry signal detection and backtesting capabilities.

License

Notifications You must be signed in to change notification settings

amrikarisma/bitcoin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Bitcoin Cicada v14 Strategy

Simple Bitcoin trading strategy analysis menggunakan indikator on-chain Cicada v14. Project ini menganalisis data Bitcoin dan mengidentifikasi sinyal entry optimal berdasarkan 4 metrik utama, kemudian melakukan backtest dengan holding period 365 hari.

πŸ“‹ Daftar Isi

⭐ Fitur Utama

  • βœ… Analisis 4 metrik on-chain Bitcoin
  • βœ… Identifikasi sinyal entry optimal
  • βœ… Backtest dengan holding period 365 hari
  • βœ… Export hasil ke format CSV
  • βœ… Simple dan mudah digunakan

πŸ–₯️ Persyaratan Sistem

  • Python 3.8+ (Recommended: Python 3.9 atau lebih baru)
  • pandas >= 1.3.0
  • numpy >= 1.21.0

πŸš€ Instalasi

1. Clone Repository

git clone https://github.com/amrikarisma/bitcoin.git
cd bitcoin

2. Buat Virtual Environment (Opsional tapi Recommended)

# Untuk macOS/Linux
python3 -m venv .venv
source .venv/bin/activate

# Untuk Windows
python -m venv .venv
.venv\Scripts\activate

3. Install Dependencies

pip install -r requirements.txt

πŸ“Š Persiapan Data

Anda memerlukan 4 file CSV dengan data Bitcoin on-chain metrics. Letakkan file-file berikut di folder data/:

File yang Diperlukan:

  1. bitcoin-long-term-holder-realized-price.csv

    • Kolom: DateTime, Realized Price LTH, Bitcoin Price
  2. bitcoin-realized-hodl-ratio-(rhodl).csv

    • Kolom: DateTime, RHODL Ratio, Bitcoin Price
  3. bitcoin-mvrv-z-score (1).csv

    • Kolom: DateTime, MVRV Z Score, Bitcoin Price
  4. bitcoin-puell-multiple.csv

    • Kolom: DateTime, Puell Multiple, Bitcoin Price

Format Data CSV:

DateTime,Metric Name,Bitcoin Price
2011-09-29,123.45,0.05
2011-09-30,124.67,0.06
...

Sumber Data:

Data dapat diperoleh dari:

🎯 Cara Penggunaan

Quick Start

python main.py

Step-by-Step:

  1. Pastikan data CSV sudah ada di folder data/
  2. Jalankan analisis:
    python main.py
  3. Tunggu proses selesai (biasanya 10-30 detik)
  4. Cek hasil di folder results/

Contoh Output:

πŸš€ CICADA v14 ANALYSIS
==============================
πŸ“Š Loading data...
βœ… Data loaded
πŸ” Calculating signals...
βœ… Found 80 signals
πŸ“ Exporting...
πŸ”„ Backtesting...
βœ… 80 trades, Average Return: 88.6%
βœ… Done! Check results/ folder

πŸ“ Output Files

Setelah menjalankan analisis, Anda akan mendapatkan 4 file CSV di folder results/:

1. cicada_signals.csv

Deskripsi: Data harian lengkap dengan semua indikator dan sinyal
Isi: ~5,000+ baris data dari 2011-2025
Kolom:

  • DateTime - Tanggal
  • lth_realized_price - LTH Realized Price
  • close - Bitcoin Price
  • rhodl_ratio - RHODL Ratio
  • mvrv_z_score - MVRV Z-Score
  • puell_multiple - Puell Multiple
  • condition_1 to condition_4 - Status setiap kondisi
  • entry_signal - True jika sinyal entry

2. cicada_entry_signals.csv

Deskripsi: Hanya tanggal dengan sinyal entry
Isi: ~80 baris entry signals
Kolom: Sama seperti cicada_signals.csv tapi hanya baris dengan entry_signal = True

3. cicada_backtest.csv

Deskripsi: Hasil backtest untuk setiap trade
Isi: ~80 baris hasil trading
Kolom:

  • entry_date - Tanggal beli
  • entry_price - Harga beli
  • exit_date - Tanggal jual (1 tahun kemudian)
  • exit_price - Harga jual
  • return_percentage - Return dalam persen

4. cicada_summary.csv

Deskripsi: Statistik ringkasan dan analisis tambahan
Isi: ~95 baris berbagai statistik

πŸ“ˆ Strategi Cicada v14

Konsep Dasar

Cicada v14 adalah strategi buy-and-hold yang mengidentifikasi momen optimal untuk membeli Bitcoin berdasarkan kondisi "extreme undervaluation" dari 4 metrik on-chain.

Kondisi Entry Signal

Sinyal entry muncul ketika SEMUA kondisi berikut terpenuhi:

  1. Bitcoin Price < LTH Realized Price

    • Bitcoin diperdagangkan di bawah harga rata-rata yang dibeli oleh long-term holders
  2. RHODL Ratio < 10th Percentile

    • RHODL ratio berada di level terendah secara historis (undervalued)
  3. MVRV Z-Score < 0.5

    • Market value relatif terhadap realized value sangat rendah
  4. Puell Multiple < 0.5

    • Pendapatan miner sangat rendah (miner capitulation)

Strategi Holding

  • Holding Period: 365 hari (1 tahun)
  • Exit Strategy: Otomatis jual setelah 1 tahun
  • Filosofi: Buy during extreme fear, hold with discipline

Performance Historis

Berdasarkan backtest data 2011-2025:

  • Total Signals: 80 entry opportunities
  • Average Return: 88.6% per trade
  • Win Rate: 100% (semua trade profitable)
  • Best Trade: +182.5% return
  • Worst Trade: +29.4% return

πŸ”§ Troubleshooting

Error: "Failed to load data"

Penyebab: File CSV tidak ditemukan atau format salah
Solusi:

  • Pastikan 4 file CSV ada di folder data/
  • Cek nama file sesuai dengan yang diperlukan
  • Pastikan format CSV benar dengan kolom yang sesuai

Error: "No signals calculated"

Penyebab: Data tidak memenuhi kondisi entry signal
Solusi:

  • Pastikan data memiliki range tanggal yang cukup (minimal 2011-2025)
  • Cek kualitas data (tidak ada nilai kosong berlebihan)

Error: Import pandas/numpy

Penyebab: Dependencies belum terinstall
Solusi:

pip install pandas numpy
# atau
pip install -r requirements.txt

Warning: FutureWarning fillna

Status: Warning ini tidak mempengaruhi hasil
Akan diperbaiki: Update kode untuk kompatibilitas pandas versi baru

πŸŽ›οΈ Kustomisasi

Mengubah Holding Period

Untuk mengubah holding period dari 365 hari:

  1. Edit file src/cicada_strategy.py
  2. Cari baris: future_date = entry_date_dt + pd.Timedelta(days=365)
  3. Ganti 365 dengan nilai hari yang diinginkan

Mengubah Kondisi Entry

Untuk memodifikasi kondisi entry signal:

  1. Edit file src/cicada_strategy.py
  2. Cari method calculate_entry_signals()
  3. Modifikasi kondisi pada bagian:
    condition_1 = signals_df[btc_price_column] < signals_df['lth_realized_price']
    condition_2 = signals_df['rhodl_ratio'] < rhodl_10th_percentile
    condition_3 = signals_df['mvrv_z_score'] < 0.5
    condition_4 = signals_df['puell_multiple'] < 0.5

πŸ“š Struktur Project

bitcoin/
β”œβ”€β”€ main.py                 # Script utama
β”œβ”€β”€ requirements.txt        # Dependencies
β”œβ”€β”€ README.md              # Dokumentasi ini
β”œβ”€β”€ data/                  # Folder input CSV
β”‚   β”œβ”€β”€ bitcoin-long-term-holder-realized-price.csv
β”‚   β”œβ”€β”€ bitcoin-realized-hodl-ratio-(rhodl).csv
β”‚   β”œβ”€β”€ bitcoin-mvrv-z-score (1).csv
β”‚   └── bitcoin-puell-multiple.csv
β”œβ”€β”€ results/               # Folder output CSV
β”‚   β”œβ”€β”€ cicada_signals.csv
β”‚   β”œβ”€β”€ cicada_entry_signals.csv
β”‚   β”œβ”€β”€ cicada_backtest.csv
β”‚   └── cicada_summary.csv
└── src/                   # Source code
    β”œβ”€β”€ __init__.py
    β”œβ”€β”€ cicada_strategy.py # Logic utama strategi
    β”œβ”€β”€ data_manager.py    # Data loader
    └── utils.py          # Utilities

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘¨β€πŸ’» Author

Amri Karisma


⚠️ Disclaimer: This tool is for educational and research purposes only. Always do your own research and never invest more than you can afford to lose. Past performance does not guarantee future results.

About

A comprehensive Python project for Bitcoin Cicada v14 trading strategy analysis, featuring advanced 4-metric entry signal detection and backtesting capabilities.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages