Skip to content

Latest commit

 

History

History
563 lines (354 loc) · 8.62 KB

File metadata and controls

563 lines (354 loc) · 8.62 KB

Feature Açıklamaları

37 teknik göstergenin detaylı açıklamaları, hesaplama formülleri ve kullanım amaçları.

📊 Feature Kategorileri

Kategori Sayı Açıklama
Returns 3 Log return hesaplamaları
Moving Averages 4 Trend göstergeleri
Momentum 7 Momentum osilatörleri
Volatility 7 Oynaklık ölçümleri
Volume 2 Hacim göstergeleri
Candlestick 6 Mum formasyonları
Price Position 2 Fiyat konumu
Lagged 6 Gecikmeli değerler
Toplam 37

📈 Returns (3)

log_return_1

Tanım: 1-bar logaritmik getiri

Formül:

log_return_1 = np.log(close / close.shift(1))

Kullanım: Kısa vadeli fiyat değişimi, model için temel input

Aralık: Tipik olarak [-0.05, 0.05] (saatlik BTC için)


log_return_4

Tanım: 4-bar logaritmik getiri

Formül:

log_return_4 = np.log(close / close.shift(4))

Kullanım: Kısa-orta vade trend göstergesi


log_return_24

Tanım: 24-bar (1 gün) logaritmik getiri

Formül:

log_return_24 = np.log(close / close.shift(24))

Kullanım: Günlük trend göstergesi


📉 Moving Averages (4)

sma_24

Tanım: 24-bar Simple Moving Average

Formül:

sma_24 = close.rolling(24).mean()

Kullanım: Günlük ortalama fiyat, trend yönü


ema_12

Tanım: 12-bar Exponential Moving Average

Formül:

ema_12 = close.ewm(span=12, adjust=False).mean()

Kullanım: Kısa vadeli trend, MACD hesaplaması için


ema_26

Tanım: 26-bar Exponential Moving Average

Formül:

ema_26 = close.ewm(span=26, adjust=False).mean()

Kullanım: Orta vadeli trend, MACD hesaplaması için


close_to_sma_24

Tanım: Close / SMA oranı

Formül:

close_to_sma_24 = close / sma_24

Kullanım: Fiyatın ortalamaya göre konumu

  • > 1.0: Ortalamanın üzerinde (bullish)
  • < 1.0: Ortalamanın altında (bearish)

🚀 Momentum (7)

rsi_14

Tanım: 14-bar Relative Strength Index

Formül:

delta = close.diff()
gain = delta.where(delta > 0, 0).rolling(14).mean()
loss = (-delta.where(delta < 0, 0)).rolling(14).mean()
rs = gain / loss
rsi_14 = 100 - (100 / (1 + rs))

Aralık: [0, 100]

Kullanım:

  • < 30: Oversold (alım fırsatı)
  • > 70: Overbought (satım fırsatı)

roc_12

Tanım: 12-bar Rate of Change

Formül:

roc_12 = (close - close.shift(12)) / close.shift(12)

Kullanım: Fiyat momentum'u, trend gücü


roc_24

Tanım: 24-bar Rate of Change

Formül:

roc_24 = (close - close.shift(24)) / close.shift(24)

Kullanım: Günlük momentum


macd

Tanım: Moving Average Convergence Divergence

Formül:

macd = ema_12 - ema_26

Kullanım: Trend değişimi sinyali


macd_signal

Tanım: MACD Signal Line

Formül:

macd_signal = macd.ewm(span=9, adjust=False).mean()

Kullanım: MACD crossover sinyalleri için


macd_hist

Tanım: MACD Histogram

Formül:

macd_hist = macd - macd_signal

Kullanım: MACD momentum'u

  • Pozitif ve artıyor: Strong bullish
  • Negatif ve azalıyor: Strong bearish

momentum_12

Tanım: 12-bar absolute momentum

Formül:

momentum_12 = close - close.shift(12)

Kullanım: Fiyat değişimi (USD cinsinden)


📊 Volatility (7)

rolling_std_24

Tanım: 24-bar rolling standard deviation

Formül:

rolling_std_24 = close.rolling(24).std()

Kullanım: Günlük volatilite (fiyat cinsinden)


atr_14

Tanım: 14-bar Average True Range

Formül:

tr = pd.concat([
    high - low,
    (high - close.shift(1)).abs(),
    (low - close.shift(1)).abs()
], axis=1).max(axis=1)

atr_14 = tr.rolling(14).mean()

Kullanım: Volatilite ölçümü, stop loss belirleme


bb_upper

Tanım: Bollinger Band Upper

Formül:

sma_20 = close.rolling(20).mean()
std_20 = close.rolling(20).std()
bb_upper = sma_20 + (2 * std_20)

Kullanım: Üst direnç seviyesi


bb_lower

Tanım: Bollinger Band Lower

Formül:

bb_lower = sma_20 - (2 * std_20)

Kullanım: Alt destek seviyesi


bb_width

Tanım: Bollinger Band Width

Formül:

bb_width = (bb_upper - bb_lower) / sma_20

Kullanım: Volatilite genişliği

  • Dar band: Düşük volatilite (breakout beklentisi)
  • Geniş band: Yüksek volatilite

realized_vol_24

Tanım: 24-bar realized volatility

Formül:

realized_vol_24 = log_return_1.rolling(24).std() * np.sqrt(24)

Kullanım: Annualize edilmemiş günlük volatilite


high_low_range

Tanım: Normalized high-low range

Formül:

high_low_range = (high - low) / close

Kullanım: Bar içi volatilite


📦 Volume (2)

volume_sma_24

Tanım: 24-bar volume SMA

Formül:

volume_sma_24 = volume.rolling(24).mean()

Kullanım: Ortalama hacim referansı


volume_ratio

Tanım: Current volume / Average volume

Formül:

volume_ratio = volume / volume_sma_24

Kullanım: Hacim spike detection

  • > 2.0: Yüksek hacim (önemli hareket)
  • < 0.5: Düşük hacim (düşük ilgi)

🕯️ Candlestick (6)

body_size

Tanım: Mum gövde büyüklüğü

Formül:

body_size = np.abs(close - open) / close

Kullanım: Hareket gücü


upper_shadow

Tanım: Üst gölge büyüklüğü

Formül:

upper_shadow = (high - np.maximum(open, close)) / close

Kullanım: Satış baskısı

  • Uzun üst gölge: Alıcılar reddedildi

lower_shadow

Tanım: Alt gölge büyüklüğü

Formül:

lower_shadow = (np.minimum(open, close) - low) / close

Kullanım: Alım baskısı

  • Uzun alt gölge: Satıcılar reddedildi

candle_range

Tanım: Toplam mum aralığı

Formül:

candle_range = (high - low) / close

Kullanım: Bar volatilitesi


body_ratio

Tanım: Body / Range oranı

Formül:

body_ratio = body_size / candle_range

Kullanım: Mum karakteri

  • Yüksek ratio: Güçlü yönlü hareket
  • Düşük ratio: Doji benzeri (kararsızlık)

direction

Tanım: Mum yönü

Formül:

direction = np.where(close > open, 1, -1)

Kullanım: Basit yön göstergesi


📍 Price Position (2)

close_position

Tanım: Close'un bar içindeki pozisyonu

Formül:

close_position = (close - low) / (high - low)

Aralık: [0, 1]

Kullanım:

  • 1.0: Close = High (bullish)
  • 0.0: Close = Low (bearish)

dist_from_high_24

Tanım: 24-bar yüksekten uzaklık

Formül:

high_24 = high.rolling(24).max()
dist_from_high_24 = (high_24 - close) / high_24

Kullanım: Günlük zirveye göre pozisyon


⏱️ Lagged Features (6)

rsi_14_lag_1

Formül: rsi_14.shift(1)

Kullanım: Önceki bar RSI değeri


rsi_14_lag_4

Formül: rsi_14.shift(4)

Kullanım: 4 bar önceki RSI


macd_hist_lag_1

Formül: macd_hist.shift(1)

Kullanım: Önceki bar MACD histogram


macd_hist_lag_4

Formül: macd_hist.shift(4)

Kullanım: 4 bar önceki MACD histogram


volume_ratio_lag_1

Formül: volume_ratio.shift(1)

Kullanım: Önceki bar volume ratio


volume_ratio_lag_4

Formül: volume_ratio.shift(4)

Kullanım: 4 bar önceki volume ratio


⚠️ Önemli Notlar

Data Leakage Koruması

Tüm feature'lar sadece geçmiş veriden hesaplanır:

# DOĞRU: Geriye bakan pencere
sma = close.rolling(24).mean()

# YANLIŞ: Merkez pencere (gelecek bilgisi içerir!)
# sma = close.rolling(24, center=True).mean()

NaN Değerler

  • İlk N bar'da rolling hesaplamalar NaN üretir
  • dropna() ile temizlenir
  • Warmup period: En az 26 bar (en uzun pencere)

Normalizasyon

  • Fiyat bazlı feature'lar (/close) normalize edilmiş
  • StandardScaler modelde uygulanıyor
  • Feature'lar aynı ölçekte

Feature Importance

LogisticRegression coefficients ile en önemli feature'lar bulunabilir:

import numpy as np

coefs = model.pipeline.named_steps['classifier'].coef_[0]
features = model.get_feature_names()

# En önemli 10 feature
importance = sorted(zip(features, np.abs(coefs)), key=lambda x: x[1], reverse=True)
for feat, imp in importance[:10]:
    print(f"{feat}: {imp:.4f}")