Algo Trade Bot modüllerinin public API dokümantasyonu.
- common - Ortak yardımcı modüller
- interfaces - Abstract base class'lar
- data - Veri ingestion ve feature engineering
- models - ML modelleri
- research - Training pipeline
- backtest - Backtest engine
- strategy - Sinyal ve risk yönetimi
- broker - Broker entegrasyonu
- live - Canlı trading runner
Merkezi konfigürasyon sınıfı.
from algo_trader.common.config import Settings
settings = Settings()Attributes:
| Attribute | Type | Default | Description |
|---|---|---|---|
DATA_DIR |
str | "data/raw" | Ham veri dizini |
ARTIFACTS_DIR |
str | "artifacts" | Artifact çıktı dizini |
REGISTRY_DIR |
str | "artifacts/registry" | Model registry |
DEFAULT_SYMBOL |
str | "BTCUSDT" | Varsayılan sembol |
DEFAULT_TIMEFRAME |
str | "1h" | Varsayılan timeframe |
LIVE_MIN_EDGE |
float | 0.02 | Minimum sinyal edge'i |
LIVE_MIN_PROB_LONG |
float | 0.55 | Long için min olasılık |
LIVE_MAX_PROB_SHORT |
float | 0.45 | Short için max olasılık |
MAX_POSITION_PCT |
float | 0.20 | Max pozisyon yüzdesi |
MAX_DRAWDOWN_PCT |
float | 0.10 | Max drawdown limiti |
ALPACA_API_KEY |
str | None | Alpaca API key (env) |
ALPACA_API_SECRET |
str | None | Alpaca API secret (env) |
ALPACA_BASE_URL |
str | "https://paper-api.alpaca.markets" | Alpaca URL |
Loguru logger instance döndürür.
from algo_trader.common.logger import get_logger
logger = get_logger(__name__)
logger.info("Message")Parameters:
name(str): Logger adı (genellikle__name__)
Returns:
Logger: Loguru logger instance
DataFrame'i parquet olarak kaydeder.
from algo_trader.common.storage import save_parquet
save_parquet(df, "data/raw/btc_1h.parquet")Parquet dosyasını DataFrame olarak yükler.
from algo_trader.common.storage import load_parquet
df = load_parquet("data/raw/btc_1h.parquet")DataFrame'i CSV olarak kaydeder.
Dizin yoksa oluşturur.
Datetime'ı UTC'ye çevirir.
String'i datetime'a parse eder.
Bar kapanış zamanını hesaplar.
Millisecond timestamp döndürür.
Timestamp'tan datetime oluşturur.
Alpaca API bilgilerini döndürür.
from algo_trader.common.secrets import get_alpaca_credentials
api_key, api_secret, base_url = get_alpaca_credentials()Paper trading URL'i doğrular. Live URL'de ValueError fırlatır.
Broker implementasyonları için abstract base class.
from algo_trader.interfaces import BaseBroker
class MyBroker(BaseBroker):
def get_account(self) -> Dict[str, Any]: ...
def get_positions(self) -> List[Dict[str, Any]]: ...
def get_position(self, symbol: str) -> Optional[Dict[str, Any]]: ...
def place_order(self, symbol: str, qty: float, side: str, ...) -> Dict[str, Any]: ...
def cancel_order(self, order_id: str) -> bool: ...
def get_bars(self, symbol: str, timeframe: str, limit: int) -> pd.DataFrame: ...Abstract Methods:
| Method | Returns | Description |
|---|---|---|
get_account() |
Dict | Hesap bilgileri |
get_positions() |
List[Dict] | Tüm pozisyonlar |
get_position(symbol) |
Dict | None | Belirli pozisyon |
place_order(...) |
Dict | Order sonucu |
cancel_order(id) |
bool | İptal sonucu |
get_bars(...) |
DataFrame | OHLCV verisi |
ML model implementasyonları için abstract base class.
from algo_trader.interfaces import ModelInterface
class MyModel(ModelInterface):
def fit(self, X: pd.DataFrame, y: pd.Series) -> "MyModel": ...
def predict(self, X: pd.DataFrame) -> np.ndarray: ...
def predict_proba(self, X: pd.DataFrame) -> np.ndarray: ...
def get_feature_names(self) -> List[str]: ...
def save(self, path: str) -> None: ...
@classmethod
def load(cls, path: str) -> "MyModel": ...
def get_params(self) -> Dict[str, Any]: ...Abstract Methods:
| Method | Returns | Description |
|---|---|---|
fit(X, y) |
Self | Model eğitir |
predict(X) |
ndarray | Class labels |
predict_proba(X) |
ndarray | Probabilities |
get_feature_names() |
List[str] | Feature isimleri |
save(path) |
None | Diske kaydet |
load(path) |
Model | Diskten yükle |
get_params() |
Dict | Parametreler |
Binance'ten OHLCV verisi çeker.
from algo_trader.data.ingest import fetch_binance_ohlcv
df = fetch_binance_ohlcv(
symbol="BTCUSDT",
interval="1h",
start_date="2024-01-01",
end_date="2025-01-01",
)Parameters:
symbol(str): Trading sembolüinterval(str): Zaman dilimi ("1h", "4h", "1d")start_date(str): Başlangıç tarihiend_date(str): Bitiş tarihi
Returns:
pd.DataFrame: timestamp, open, high, low, close, volume
OHLCV'den 37 teknik gösterge hesaplar.
from algo_trader.data.features import build_features
features = build_features(ohlcv_df)Parameters:
df(pd.DataFrame): OHLCV DataFrame
Returns:
pd.DataFrame: 37 feature column
Feature List:
- Returns: log_return_1, log_return_4, log_return_24
- MA: sma_24, ema_12, ema_26
- Momentum: rsi_14, roc_12, roc_24, macd, macd_signal, macd_hist
- Volatility: atr_14, bb_upper, bb_lower, bb_width, realized_vol_24
- Volume: volume_sma_24, volume_ratio
- Candlestick: body_size, upper_shadow, lower_shadow, candle_range, body_ratio
Target label'ları oluşturur.
from algo_trader.data.labels import build_labels
labels = build_labels(ohlcv_df, horizons=[4, 8, 24])Parameters:
df(pd.DataFrame): OHLCV DataFramehorizons(List[int]): Forward horizons (bars)
Returns:
pd.DataFrame: return_N, direction_N, vol_realized_N columns
StandardScaler + LogisticRegression pipeline.
from algo_trader.models import SklearnBaseline
model = SklearnBaseline(C=1.0, balanced=True)
model.fit(X_train, y_train)
proba = model.predict_proba(X_test)Constructor Parameters:
C(float): Regularization (default: 1.0)balanced(bool): Class weight balancing (default: True)max_iter(int): Max iterations (default: 1000)random_state(int): Random seed (default: 42)
Probability calibration wrapper.
from algo_trader.models import Calibrator
calibrator = Calibrator(method="sigmoid")
calibrator.fit(val_proba, y_val)
calibrated = calibrator.transform(test_proba)Constructor Parameters:
method(str): "sigmoid" (Platt) veya "isotonic"
Methods:
fit(proba, y_true): Calibrator'ı fit ettransform(proba): Olasılıkları kalibre etfit_transform(proba, y_true): Fit ve transformsave(path)/load(path): Serialization
ML-ready dataset oluşturur.
from algo_trader.research.dataset import build_dataset
df = build_dataset(timeframe="1h", target="direction_4")Parameters:
timeframe(str): OHLCV timeframetarget(str): Target column namedata_dir(str): Data directory
Returns:
pd.DataFrame: Features + target + meta columns
Walk-forward cross-validation splits.
from algo_trader.research.splits import walk_forward_split
splits = walk_forward_split(df, train_months=18, val_months=3, step_months=3)
for train_idx, val_idx in splits:
# ...Parameters:
df(pd.DataFrame): Datasettrain_months(int): Training periodval_months(int): Validation periodstep_months(int): Step size
Returns:
List[Tuple[DatetimeIndex, DatetimeIndex]]: (train, val) index pairs
Model eğitir ve registry'ye kaydeder.
from algo_trader.research.train import train_model
result = train_model(
timeframe="1h",
target="direction_4",
model_type="sklearn_baseline",
)Returns:
Dict: model_path, metrics, config
Performans metrikleri hesaplar.
from algo_trader.research.evaluate import compute_metrics
metrics = compute_metrics(y_true, y_pred, y_proba)Returns:
Dict: accuracy, precision, recall, f1, roc_auc, brier_score, log_loss
Model'i registry'ye kaydeder.
En son model path'ini döndürür.
Model, calibrator ve config yükler.
Backtest çalıştırır.
from algo_trader.backtest.engine import run_backtest, BacktestConfig
result = run_backtest(
model_path="artifacts/registry/sklearn_baseline/latest",
data_path="data/raw/btc_1h.parquet",
config=BacktestConfig(initial_capital=10000),
)Returns:
Dict: equity_curve, trades, metrics
| Attribute | Type | Default |
|---|---|---|
initial_capital |
float | 10000 |
fee_bps |
int | 5 |
slippage_bps |
int | 10 |
execution |
str | "NEXT_OPEN" |
max_position_pct |
float | 0.20 |
max_drawdown_pct |
float | 0.10 |
Backtest performans metrikleri.
Returns:
- total_return, cagr, sharpe_ratio, sortino_ratio, calmar_ratio
- max_drawdown, win_rate, profit_factor, total_trades
class Signal(Enum):
LONG = "long"
SHORT = "short"
FLAT = "flat"
HOLD = "hold"Olasılıktan sinyal üretir.
from algo_trader.strategy.signal_to_trade import probability_to_signal, Signal
signal = probability_to_signal(prob_up=0.65) # Signal.LONGPozisyon büyüklüğü hesaplar.
from algo_trader.strategy.position_sizing import compute_shares
shares = compute_shares(Signal.LONG, equity=10000, price=45000)Trade öncesi risk kontrolü.
from algo_trader.strategy.risk import pre_trade_check
is_allowed, reason = pre_trade_check(
signal=Signal.LONG,
equity=10000,
current_drawdown=0.05,
)Production-ready Alpaca paper broker.
from algo_trader.broker import AlpacaPaperBroker
broker = AlpacaPaperBroker()
account = broker.get_account()
positions = broker.get_positions()
bars = broker.get_bars("BTCUSD", "1Hour", 100)
order = broker.place_order("BTCUSD", 0.01, "buy")Canlı trading runner.
from algo_trader.live.runner import LiveRunner
runner = LiveRunner(
symbol="BTCUSD",
timeframe="1h",
model_path="artifacts/registry/sklearn_baseline/latest",
)
runner.run() # Sürekli çalıştır
runner.run_once() # Tek cycle
runner.get_status()
runner.flatten_and_stop()Model prediction ve sinyal üretimi.
from algo_trader.live.decision import DecisionEngine
engine = DecisionEngine(model_path=path, broker=broker, symbol="BTCUSD")
decision = engine.make_decision(current_position=None)State persistence.
from algo_trader.live.state_store import StateStore
store = StateStore(path="artifacts/live/state.json")
store.save(state)
state = store.load()Alert yönetimi.
from algo_trader.live.alerts import AlertManager, Alert, AlertLevel
manager = AlertManager(handlers=[ConsoleHandler()])
manager.send(Alert(level=AlertLevel.WARNING, title="High DD", message="..."))