S.a. arkadaşlar,

Eğer BTC iyi çalışan bir indikatörüm var bunu nasıl değerlendirebilirim diyorsanız aşağıdaki python kodu ile tarama yapıp uygun olan çiftlerde ticaret yapabilirsiniz. BTC %1 yükselince %5 yükselen coinleri tespit edebilirsiniz mesela.



Beta Katsayısı:
Beta = 2.0 → BTC %1 yükselince coin %2 yükselir
Beta = 5.0 → BTC %1 yükselince coin %5 yükselir
Beta = -2.0 → BTC %1 yükselince coin %2 düşer

Api anahtarına filan gerek yok. Gerekli kütüphaneleri yükleyin ve kullanın. Yatırım tavsiyesi filan değildir. Ayrıca Kolerasyon sayısı çok önemli. Kolerasyon > 0.5 olması daha iyidir.

Örnek bir çıktı:





Kodu claude yazdırdım, biraz düzenleme yaptım. İşine yarayan varsa alsın kullansın helali hoş olsun.
r10 da Kodlar düzgün çıkmıyor. Buradan indirebilirsiniz. https://dosya.co/3u5ib7mm0tgx/beta.py.html
Hadi iyi geceler hoşça kalın, komşuda pişer bize de düşer.

import ccxt
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
import time
from scipy import stats
import warnings
warnings.filterwarnings('ignore')

class CryptoBetaAnalyzer:
    def __init__(self, exchange_name='binance'):
        """
        Kripto para beta analizi için sınıf (BTC'ye göre kaç kat hareket ediyor)
        """
        self.exchange = getattr(ccxt, exchange_name)({
            'rateLimit': 1200,
            'enableRateLimit': True,
        })
        
    def get_kline_data(self, symbol, timeframe='15m', limit=100):
        """
        Belirli bir coin için 15 dakikalık kline verilerini alır
        """
        try:
            ohlcv = self.exchange.fetch_ohlcv(symbol, timeframe, limit=limit)
            df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
            df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
            df['price_change_pct'] = df['close'].pct_change() * 100  # Yüzde olarak
            return df
        except Exception as e:
            print(f"Hata {symbol}: {e}")
            return None
    
    def get_popular_coins(self, base_currency='USDT', limit=50):
        """
        Popüler coinlerin listesini alır
        """
        try:
            markets = self.exchange.load_markets()
            usdt_pairs = [symbol for symbol in markets.keys()
                         if symbol.endswith(f'/{base_currency}') and
                         not any(x in symbol for x in ['UP', 'DOWN', 'BULL', 'BEAR', 'USDC', 'BUSD', 'TUSD'])]
            
            # Volume'a göre sırala (yaklaşık)
            popular_coins = usdt_pairs[:limit]
            return popular_coins
        except Exception as e:
            print(f"Market verileri alınırken hata: {e}")
            return []
    
    def calculate_beta_and_volatility(self, btc_data, coin_data):
        """
        Beta katsayısı ve volatilite oranını hesaplar
        BTC %1 hareket ettiğinde coin kaç % hareket ediyor?
        """
        if btc_data is None or coin_data is None:
            return 0, 0, 0, 0
        
        # Temiz veri
        btc_clean = btc_data.dropna(subset=['price_change_pct'])
        coin_clean = coin_data.dropna(subset=['price_change_pct'])
        
        if len(btc_clean) < 10 or len(coin_clean) < 10:
            return 0, 0, 0, 0
        
        # Zaman damgalarına göre eşleştir
        merged = pd.merge(btc_clean[['timestamp', 'price_change_pct']],
                         coin_clean[['timestamp', 'price_change_pct']],
                         on='timestamp', suffixes=('_btc', '_coin'))
        
        if len(merged) < 10:
            return 0, 0, 0, 0
        
        try:
            # Beta hesaplama (regresyon eğimi)
            slope, intercept, r_value, p_value, std_err = stats.linregress(
                merged['price_change_pct_btc'],
                merged['price_change_pct_coin']
            )
            
            beta = slope  # BTC %1 değiştiğinde coin ne kadar değişiyor
            correlation = r_value
            
            # Ortalama volatilite oranı
            btc_moves = merged['price_change_pct_btc'][merged['price_change_pct_btc'].abs() > 0.1]
            coin_moves = merged['price_change_pct_coin'][merged['price_change_pct_btc'].abs() > 0.1]
            
            if len(btc_moves) > 0:
                avg_volatility_ratio = (coin_moves.abs().mean() / btc_moves.abs().mean())
            else:
                avg_volatility_ratio = 0
                
            return beta, correlation, p_value, avg_volatility_ratio
            
        except:
            return 0, 0, 0, 0
    
    def analyze_beta_coins(self, timeframe='15m', limit=100, top_coins=40):
        """
        Ana beta analizi fonksiyonu
        """
        print("🚀 BETA ANALİZİ BAŞLATIILIYOR...")
        print("📊 BTC'nin %1 hareketiyle coinlerin kaç kat hareket ettiği hesaplanıyor...\n")
        
        # BTC verilerini al
        print("📈 Bitcoin verilerini alıyor...")
        btc_data = self.get_kline_data('BTC/USDT', timeframe, limit)
        if btc_data is None:
            print("❌ Bitcoin verileri alınamadı!")
            return None
        
        # Popüler coinleri al
        print(f"🎯 Top {top_coins} coin listesi alınıyor...")
        popular_coins = self.get_popular_coins(limit=top_coins)
        
        beta_results = []
        
        print(f"⚡ {len(popular_coins)} coin için beta hesaplanıyor...\n")
        
        for i, symbol in enumerate(popular_coins):
            if 'BTC' in symbol:
                continue
                
            print(f"  📊 {i+1:2d}/{len(popular_coins)}: {symbol:<15}", end=" ")
            
            coin_data = self.get_kline_data(symbol, timeframe, limit)
            beta, correlation, p_value, volatility_ratio = self.calculate_beta_and_volatility(btc_data, coin_data)
            
            # Anlamlı sonuçları filtrele
            if abs(beta) > 0.5 and abs(correlation) > 0.3 and p_value < 0.1:
                beta_results.append({
                    'symbol': symbol.replace('/USDT', ''),
                    'beta': beta,
                    'correlation': correlation,
                    'p_value': p_value,
                    'volatility_ratio': volatility_ratio,
                    'risk_level': self.get_risk_level(beta, volatility_ratio)
                })
                print(f"✅ Beta: {beta:+.2f}x | Korelasyon: {correlation:.3f}")
            else:
                print("⚪ Düşük anlamlılık")
            
            time.sleep(0.1)  # Rate limit
        
        # Sonuçları beta'ya göre sırala
        beta_results.sort(key=lambda x: abs(x['beta']), reverse=True)
        
        return beta_results, btc_data
    
    def get_risk_level(self, beta, volatility_ratio):
        """Risk seviyesi belirle"""
        if abs(beta) > 3:
            return "🔥 Aşırı Yüksek"
        elif abs(beta) > 2:
            return "⚡ Yüksek"
        elif abs(beta) > 1.5:
            return "📈 Orta-Yüksek"
        elif abs(beta) > 1:
            return "📊 Orta"
        else:
            return "🔵 Düşük"
    
    def display_beta_results(self, beta_results, btc_data):
        """
        Beta sonuçlarını göster
        """
        if not beta_results:
            print("❌ Anlamlı beta bulunamadı!")
            return
        
        # BTC'nin son durumu
        btc_last_change = btc_data['price_change_pct'].iloc[-1]
        btc_trend = "📈 Yükseliş" if btc_last_change > 0 else "📉 Düşüş" if btc_last_change < 0 else "➡️ Yatay"
        
        print(f"\n{'='*80}")
        print(f"🎯 BITCOIN BETA ANALİZİ - KAÇ KAT HAREKET EDİYOR? (15dk)")
        print(f"{'='*80}")
        print(f"📊 BTC Son Değişim: {btc_last_change:+.2f}% ({btc_trend})")
        print(f"⏱️  Analiz Zamanı: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
        print(f"📋 Toplam Analiz Edilen: {len(beta_results)} coin")
        
        # Yüksek Beta'lı coinler (BTC ile aynı yöne ama daha fazla)
        print(f"\n{'='*80}")
        print("🚀 YÜKSEK BETA COİNLER - BTC'den FAZLA HAREKET EDENLER")
        print(f"{'='*80}")
        print("💡 BTC %1 yükseldiğinde bu coinler daha fazla yükselir!")
        print("💡 BTC %1 düştüğünde bu coinler daha fazla düşer!")
        print(f"{'Sıra':<4} {'Coin':<8} {'Beta':<8} {'Açıklama':<25} {'Risk':<15} {'Korelasyon':<12}")
        print("-" * 80)
        
        high_beta = [c for c in beta_results if c['beta'] > 1][:15]
        for i, coin in enumerate(high_beta, 1):
            explanation = f"BTC %1 → {coin['symbol']} %{coin['beta']:+.1f}"
            print(f"{i:<4} {coin['symbol']:<8} {coin['beta']:>+.2f}x   {explanation:<25} {coin['risk_level']:<15} {coin['correlation']:.3f}")
        
        # Negatif Beta'lı coinler (BTC'nin tersi)
        negative_beta = [c for c in beta_results if c['beta'] < -0.5]
        if negative_beta:
            print(f"\n{'='*80}")
            print("🔄 NEGATİF BETA COİNLER - BTC'nin TERSİ HAREKET EDENLER")
            print(f"{'='*80}")
            print("💡 BTC düştüğünde bu coinler yükselir!")
            print("💡 BTC yükseldiğinde bu coinler düşer!")
            print(f"{'Sıra':<4} {'Coin':<8} {'Beta':<8} {'Açıklama':<25} {'Risk':<15} {'Korelasyon':<12}")
            print("-" * 80)
            
            for i, coin in enumerate(negative_beta[:10], 1):
                explanation = f"BTC %1 → {coin['symbol']} %{coin['beta']:+.1f}"
                print(f"{i:<4} {coin['symbol']:<8} {coin['beta']:>+.2f}x   {explanation:<25} {coin['risk_level']:<15} {coin['correlation']:.3f}")
        
        # En volatil coinler
        print(f"\n{'='*80}")
        print("⚡ EN VOLATİL COİNLER - BÜYÜK HAREKETLER")
        print(f"{'='*80}")
        volatil_coins = sorted(beta_results, key=lambda x: x['volatility_ratio'], reverse=True)[:10]
        print(f"{'Sıra':<4} {'Coin':<8} {'Vol. Oranı':<12} {'Beta':<8} {'Açıklama':<30}")
        print("-" * 80)
        
        for i, coin in enumerate(volatil_coins, 1):
            explanation = f"{coin['volatility_ratio']:.1f}x daha fazla hareket ediyor"
            print(f"{i:<4} {coin['symbol']:<8} {coin['volatility_ratio']:>8.1f}x    {coin['beta']:>+.2f}x   {explanation:<30}")
        
        # Pratik öneriler
        print(f"\n{'='*80}")
        print("💰 PRATİK YATIRIM STRATEJİLERİ")
        print(f"{'='*80}")
        
        if btc_last_change > 0.5:
            print("📈 BTC YÜKSELİŞ TRENDİNDE:")
            top_positive = [c for c in high_beta if c['beta'] > 0][:5]
            print("   🎯 LONG İÇİN ÖNERİLER:")
            for coin in top_positive:
                print(f"      • {coin['symbol']}: BTC %1 yükselirse ~%{coin['beta']:.1f} yükselir")
                
        elif btc_last_change < -0.5:
            print("📉 BTC DÜŞÜŞ TRENDİNDE:")
            if negative_beta:
                print("   🎯 LONG İÇİN ÖNERİLER (Ters korelasyon):")
                for coin in negative_beta[:3]:
                    print(f"      • {coin['symbol']}: BTC %1 düşerse ~%{abs(coin['beta']):.1f} yükselir")
            
            print("   🎯 SHORT İÇİN ÖNERİLER:")
            top_positive = [c for c in high_beta if c['beta'] > 0][:3]
            for coin in top_positive:
                print(f"      • {coin['symbol']}: BTC %1 düşerse ~%{coin['beta']:.1f} düşer")
        
        print(f"\n⚠️  ÖNEMLİ UYARILAR:")
        print("   • Beta katsayıları geçmiş verilere dayanır, gelecekte değişebilir")
        print("   • Yüksek beta = Yüksek risk & Yüksek getiri potansiyeli")
        print("   • Pozisyon büyüklüklernizi risk toleransınıza göre ayarlayın")
        print("   • Stop-loss kullanmayı unutmayın!")

def main():
    """
    Ana çalıştırma fonksiyonu
    """
    analyzer = CryptoBetaAnalyzer()
    
    try:
        # Beta analizini çalıştır
        beta_results, btc_data = analyzer.analyze_beta_coins(
            timeframe='15m',    # 15 dakikalık
            limit=96,          # Son 24 saat
            top_coins=500       # Top 60 coin analiz et
        )
        
        # Sonuçları göster
        analyzer.display_beta_results(beta_results, btc_data)
        
        return beta_results
        
    except Exception as e:
        print(f"❌ Analiz sırasında hata oluştu: {e}")
        return None

# Örnek kullanım
if __name__ == "__main__":
    # Gerekli kütüphaneler: pip install ccxt pandas numpy scipy
    results = main()
    
    # Sonuçları daha detaylı görmek isterseniz:
    if results:
        print(f"\n📋 ÖNE ÇIKAN SONUÇLAR:")
        print(f"✅ En yüksek Beta: {max(results, key=lambda x: x['beta'])['symbol']} ({max(results, key=lambda x: x['beta'])['beta']:.2f}x)")
        print(f"📊 En volatil: {max(results, key=lambda x: x['volatility_ratio'])['symbol']} ({max(results, key=lambda x: x['volatility_ratio'])['volatility_ratio']:.1f}x)")