Trong thị trường crypto đầy biến động, việc xây dựng một hệ thống market maker hiệu quả là chìa khóa để tạo ra lợi nhuận ổn định. Bài viết này sẽ hướng dẫn bạn chi tiết cách xây dựng mô hình order book market maker với việc tinh chỉnh thông số tối ưu, đồng thời tích hợp AI để phân tích và ra quyết định nhanh chóng. Tôi đã áp dụng chiến lược này trong 3 năm qua với portfolio hơn 50 cặp giao dịch, và sẽ chia sẻ những kinh nghiệm thực chiến quý báu.

Bảng so sánh: HolySheep vs API chính thức vs Dịch vụ Relay khác

Tiêu chí HolySheep AI API chính thức (OpenAI/Anthropic) Dịch vụ Relay khác
Chi phí GPT-4.1 $8/1M tokens $60/1M tokens $15-30/1M tokens
Chi phí Claude Sonnet 4.5 $15/1M tokens $45/1M tokens $25-35/1M tokens
Chi phí Gemini 2.5 Flash $2.50/1M tokens $7.50/1M tokens $5-10/1M tokens
Chi phí DeepSeek V3.2 $0.42/1M tokens Không hỗ trợ $1-3/1M tokens
Độ trễ trung bình <50ms 100-300ms 80-200ms
Thanh toán ¥1=$1, WeChat/Alipay Chỉ USD, thẻ quốc tế Hạn chế phương thức
Tín dụng miễn phí Có khi đăng ký $5 trial Không hoặc rất ít
API Endpoint api.holysheep.ai/v1 api.openai.com/v1 api.*.com/v1

Giới thiệu về Order Book Market Making

Market making là chiến lược giao dịch đặt lệnh mua và bán liên tục xung quanh giá thị trường, thu lợi từ spread (chênh lệch giá mua-bán). Trong thị trường crypto 24/7, việc tự động hóa quy trình này với AI là xu hướng tất yếu. Mô hình order book market maker hoạt động bằng cách phân tích sâu cấu trúc order book, dự đoán luồng order flow, và điều chỉnh quotes một cách thông minh.

Với kinh nghiệm vận hành hệ thống market maker cho nhiều sàn giao dịch từ centralized (Binance, Bybit) đến decentralized (dYdX, GMX), tôi nhận thấy việc tinh chỉnh parameters là yếu tố quyết định 80% thành công. Một model tốt mà không có parameters phù hợp sẽ không mang lại lợi nhuận, thậm chí gây thua lỗ.

Kiến trúc hệ thống Market Maker với AI

Sơ đồ luồng hoạt động

┌─────────────────────────────────────────────────────────────────┐
│                    ORDER BOOK MARKET MAKER ARCHITECTURE         │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐     │
│  │  Exchange    │───▶│  WebSocket   │───▶│  Order Book  │     │
│  │  WebSocket   │    │  Handler     │    │  Aggregator  │     │
│  └──────────────┘    └──────────────┘    └──────────────┘     │
│                                                  │              │
│                                                  ▼              │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐     │
│  │  Trade       │◀───│  Position    │◀───│  AI Decision │     │
│  │  Executor    │    │  Manager     │    │  Engine      │     │
│  └──────────────┘    └──────────────┘    └──────────────┘     │
│         │                                       │              │
│         │                                       ▼              │
│         │                            ┌──────────────────┐     │
│         │                            │  HolySheep AI    │     │
│         │                            │  (DeepSeek V3.2) │     │
│         │                            │  $0.42/1M tokens │     │
│         │                            └──────────────────┘     │
│         ▼                                                      │
│  ┌──────────────┐                                              │
│  │  Risk        │                                              │
│  │  Management  │                                              │
│  └──────────────┘                                              │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Mô hình Order Book Market Maker: Code Implementation

1. Khởi tạo cấu trúc dữ liệu Order Book

import asyncio
import aiohttp
import json
from dataclasses import dataclass, field
from typing import Dict, List, Optional, Tuple
from collections import defaultdict
import time
import numpy as np
from datetime import datetime

@dataclass
class OrderBookLevel:
    """Một mức giá trong order book"""
    price: float
    quantity: float
    order_count: int = 0

@dataclass
class OrderBook:
    """Cấu trúc order book đầy đủ"""
    symbol: str
    bids: List[OrderBookLevel] = field(default_factory=list)  # Lệnh mua
    asks: List[OrderBookLevel] = field(default_factory=list)  # Lệnh bán
    timestamp: float = field(default_factory=time.time)
    
    @property
    def mid_price(self) -> float:
        """Giá giữa: (bid cao nhất + ask thấp nhất) / 2"""
        if not self.bids or not self.asks:
            return 0.0
        return (self.bids[0].price + self.asks[0].price) / 2
    
    @property
    def spread(self) -> float:
        """Spread tuyệt đối"""
        if not self.bids or not self.asks:
            return 0.0
        return self.asks[0].price - self.bids[0].price
    
    @property
    def spread_pct(self) -> float:
        """Spread theo phần trăm"""
        if self.mid_price == 0:
            return 0.0
        return (self.spread / self.mid_price) * 100
    
    def get_depth(self, levels: int = 10) -> Dict[str, float]:
        """Tính độ sâu thị trường"""
        bid_depth = sum(level.quantity for level in self.bids[:levels])
        ask_depth = sum(level.quantity for level in self.asks[:levels])
        return {"bid_depth": bid_depth, "ask_depth": ask_depth}

class MarketMakerConfig:
    """Cấu hình market maker - ĐÂY LÀ NƠI TINH CHỈNH QUAN TRỌNG"""
    
    def __init__(self):
        # === SPREAD PARAMETERS ===
        self.base_spread_pct: float = 0.001     # Spread cơ bản 0.1%
        self.min_spread_pct: float = 0.0005      # Spread tối thiểu
        self.max_spread_pct: float = 0.005       # Spread tối đa
        
        # === POSITION PARAMETERS ===
        self.max_position_usd: float = 10000    # Vị thế tối đa USD
        self.position_limit_pct: float = 0.02   # Giới hạn % so với volume
        
        # === ORDER PARAMETERS ===
        self.order_size_base: float = 100       # Kích thước lệnh cơ bản
        self.order_size_factor: float = 1.5     # Hệ số nhân theo volatility
        self.max_orders_per_side: int = 5        # Số lệnh tối đa mỗi bên
        
        # === RISK PARAMETERS ===
        self.max_daily_loss: float = 500        # Loss tối đa mỗi ngày
        self.pnl_target_daily: float = 200       # Mục tiêu lợi nhuận
        
        # === VOLATILITY PARAMETERS ===
        self.volatility_window: int = 60         # Cửa sổ tính volatility (giây)
        self.volatility_multiplier: float = 2.0  # Hệ số nhân volatility
        
        # === AI PARAMETERS (sử dụng HolySheep) ===
        self.ai_model: str = "deepseek-v3.2"
        self.ai_api_url: str = "https://api.holysheep.ai/v1/chat/completions"
        self.ai_api_key: str = "YOUR_HOLYSHEEP_API_KEY"  # Thay thế bằng key của bạn

print("✅ Market Maker Configuration initialized")
print(f"   Base spread: {MarketMakerConfig().base_spread_pct * 100}%")
print(f"   Max position: ${MarketMakerConfig().max_position_usd}")

2. AI Decision Engine với HolySheep

import aiohttp
import json
from typing import Dict, Any, Optional
from dataclasses import dataclass

@dataclass
class AIDecisionRequest:
    """Request gửi cho AI để ra quyết định market making"""
    order_book_state: Dict[str, Any]
    current_position: float
    recent_pnl: float
    market_volatility: float
    order_flow: Dict[str, int]
    
    def to_prompt(self) -> str:
        """Tạo prompt cho AI"""
        return f"""Bạn là một market maker chuyên nghiệp. Phân tích tình trạng thị trường và đưa ra quyết định:

THÔNG TIN THỊ TRƯỜNG:
- Giá giữa (mid price): ${self.order_book_state.get('mid_price', 0):.2f}
- Spread hiện tại: {self.order_book_state.get('spread_pct', 0):.4f}%
- Độ sâu bid: {self.order_book_state.get('bid_depth', 0):.2f}
- Độ sâu ask: {self.order_book_state.get('ask_depth', 0):.2f}

VỊ THẾ HIỆN TẠI: ${self.current_position:.2f}
P&L GẦN ĐÂY: ${self.recent_pnl:.2f}
VOLATILITY: {self.market_volatility:.4f}
ORDER FLOW (buy/sell ratio): {self.order_flow}

QUYẾT ĐỊNH CẦN ĐƯA RA (JSON format):
{{
    "spread_adjustment": float (-0.5 đến +0.5, điều chỉnh spread),
    "size_adjustment": float (0.5 đến 2.0, điều chỉnh kích thước lệnh),
    "side_bias": string ("bid", "ask", hoặc "neutral"),
    "urgency": float (0.0 đến 1.0, mức độ khẩn cấp),
    "confidence": float (0.0 đến 1.0, độ tin tưởng quyết định)
}}

CHỈ trả lời JSON, không có text khác."""

class HolySheepAIClient:
    """Client kết nối HolySheep AI cho market making decisions"""
    
    def __init__(self, api_key: str, base_url: str = "https://api.holysheep.ai/v1"):
        self.api_key = api_key
        self.base_url = base_url
        self.model = "deepseek-v3.2"  # $0.42/1M tokens - tiết kiệm 85%+
        self.request_count = 0
        self.total_cost = 0.0
        
    async def get_making_decision(
        self, 
        request: AIDecisionRequest,
        timeout: float = 1.0
    ) -> Optional[Dict[str, Any]]:
        """Gọi HolySheep AI để lấy quyết định market making"""
        
        headers = {
            "Authorization": f"Bearer {self.api_key}",
            "Content-Type": "application/json"
        }
        
        payload = {
            "model": self.model,
            "messages": [
                {"role": "user", "content": request.to_prompt()}
            ],
            "temperature": 0.3,  # Low temperature cho quyết định nhất quán
            "max_tokens": 500,
            "response_format": {"type": "json_object"}
        }
        
        try:
            async with aiohttp.ClientSession() as session:
                start_time = time.time()
                
                async with session.post(
                    f"{self.base_url}/chat/completions",
                    headers=headers,
                    json=payload,
                    timeout=aiohttp.ClientTimeout(total=timeout)
                ) as response:
                    
                    latency_ms = (time.time() - start_time) * 1000
                    
                    if response.status == 200:
                        data = await response.json()
                        content = data["choices"][0]["message"]["content"]
                        
                        # Tính chi phí
                        tokens_used = data.get("usage", {}).get("total_tokens", 0)
                        cost = (tokens_used / 1_000_000) * 0.42  # DeepSeek V3.2: $0.42/1M
                        
                        self.request_count += 1
                        self.total_cost += cost
                        
                        return {
                            "decision": json.loads(content),
                            "latency_ms": latency_ms,
                            "tokens": tokens_used,
                            "cost_usd": cost
                        }
                    else:
                        error = await response.text()
                        print(f"❌ HolySheep API Error {response.status}: {error}")
                        return None
                        
        except asyncio.TimeoutError:
            print(f"⚠️ Request timeout ({timeout}s)")
            return None
        except Exception as e:
            print(f"❌ Unexpected error: {e}")
            return None
    
    def get_cost_summary(self) -> Dict[str, Any]:
        """Tổng hợp chi phí sử dụng AI"""
        return {
            "total_requests": self.request_count,
            "total_cost_usd": self.total_cost,
            "avg_cost_per_request": self.total_cost / max(self.request_count, 1),
            "model": self.model,
            "price_per_million_tokens": "$0.42"
        }

=== VÍ DỤ SỬ DỤNG ===

async def example_usage(): # Khởi tạo AI client với HolySheep ai_client = HolySheepAIClient( api_key="YOUR_HOLYSHEEP_API_KEY" ) # Tạo request với dữ liệu thị trường request = AIDecisionRequest( order_book_state={ "mid_price": 43500.00, "spread_pct": 0.12, "bid_depth": 150000.0, "ask_depth": 145000.0 }, current_position=2500.0, recent_pnl=150.50, market_volatility=0.015, order_flow={"buy": 45, "sell": 55} ) # Lấy quyết định từ AI result = await ai_client.get_making_decision(request) if result: print(f"✅ AI Decision received:") print(f" Spread adjustment: {result['decision']['spread_adjustment']}") print(f" Size adjustment: {result['decision']['size_adjustment']}") print(f" Side bias: {result['decision']['side_bias']}") print(f" Latency: {result['latency_ms']:.1f}ms") print(f" Cost: ${result['cost_usd']:.6f}") # In tổng chi phí print(f"\n💰 Cost Summary: {ai_client.get_cost_summary()}")

Chạy ví dụ

asyncio.run(example_usage())

3. Full Market Maker Engine với Parameter Optimization

import asyncio
import aiohttp
import json
import time
from typing import Dict, List, Optional, Tuple
from dataclasses import dataclass, field
from collections import deque
import statistics

class OptimizedMarketMaker:
    """
    Market Maker với tối ưu hóa parameters dựa trên AI feedback
    và real-time market analysis
    """
    
    def __init__(self, config: MarketMakerConfig, ai_client: HolySheepAIClient):
        self.config = config
        self.ai_client = ai_client
        
        # === STATE MANAGEMENT ===
        self.current_position: float = 0.0
        self.daily_pnl: float = 0.0
        self.daily_trades: int = 0
        self.active_orders: Dict[str, dict] = {}
        
        # === HISTORICAL DATA ===
        self.price_history: deque = deque(maxlen=1000)
        self.spread_history: deque = deque(maxlen=100)
        self.pnl_history: deque = deque(maxlen=100)
        
        # === PERFORMANCE METRICS ===
        self.total_pnl: float = 0.0
        self.total_trades: int = 0
        self.win_rate: float = 0.0
        
        # === PARAMETER ADAPTATION ===
        self.current_spread_multiplier: float = 1.0
        self.current_size_multiplier: float = 1.0
        
    def calculate_volatility(self) -> float:
        """Tính volatility dựa trên historical prices"""
        if len(self.price_history) < 30:
            return 0.01  # Default volatility
        
        prices = list(self.price_history)
        returns = [(prices[i] - prices[i-1]) / prices[i-1] 
                   for i in range(1, len(prices))]
        
        return statistics.stdev(returns) if len(returns) > 1 else 0.01
    
    def calculate_order_flow_imbalance(self, order_book: OrderBook) -> float:
        """
        Tính Order Flow Imbalance (OFI)
        Giá trị dương = buy pressure, âm = sell pressure
        """
        if not order_book.bids or not order_book.asks:
            return 0.0
        
        bid_volume = sum(level.quantity for level in order_book.bids[:5])
        ask_volume = sum(level.quantity for level in order_book.asks[:5])
        
        total_volume = bid_volume + ask_volume
        if total_volume == 0:
            return 0.0
        
        return (bid_volume - ask_volume) / total_volume
    
    def adjust_spread_based_on_volatility(self, base_spread: float) -> float:
        """
        Điều chỉnh spread dựa trên volatility
        Volatility cao = spread rộng hơn để bù đắp rủi ro
        """
        volatility = self.calculate_volatility()
        
        # Volatility-adjusted spread
        adjusted_spread = base_spread * (1 + volatility * self.config.volatility_multiplier)
        
        # Giới hạn trong min/max
        min_spread = self.config.min_spread_pct
        max_spread = self.config.max_spread_pct
        
        return max(min_spread, min(max_spread, adjusted_spread))
    
    def calculate_optimal_size(
        self, 
        order_book: OrderBook, 
        side: str
    ) -> float:
        """Tính kích thước lệnh tối ưu dựa trên độ sâu"""
        
        base_size = self.config.order_size_base
        
        # Điều chỉnh theo độ sâu thị trường
        if side == "bid":
            depth = sum(level.quantity for level in order_book.bids[:3])
        else:
            depth = sum(level.quantity for level in order_book.asks[:3])
        
        # Size = base * min(1, depth / (base * 10))
        depth_factor = min(1.0, depth / (base_size * 10))
        
        # Điều chỉnh theo position
        position_utilization = abs(self.current_position) / self.config.max_position_usd
        position_factor = 1.0 - (position_utilization * 0.5)
        
        # Áp dụng AI size adjustment
        final_size = base_size * depth_factor * position_factor * self.current_size_multiplier
        
        return round(final_size, 2)
    
    def generate_quotes(
        self, 
        order_book: OrderBook,
        ai_decision: Optional[Dict] = None
    ) -> Tuple[List[dict], List[dict]]:
        """
        Tạo quotes cho cả hai phía bid và ask
        Returns: (bid_quotes, ask_quotes)
        """
        
        mid_price = order_book.mid_price
        
        if mid_price == 0:
            return [], []
        
        # Điều chỉnh spread
        base_spread = self.adjust_spread_based_on_volatility(
            self.config.base_spread_pct
        )
        
        # Áp dụng AI adjustment nếu có
        if ai_decision and "decision" in ai_decision:
            ai_spread_adj = ai_decision["decision"].get("spread_adjustment", 0)
            base_spread *= (1 + ai_spread_adj)
            
            ai_size_adj = ai_decision["decision"].get("size_adjustment", 1.0)
            self.current_size_multiplier = ai_size_adj
        
        # Tính bid và ask prices
        half_spread = mid_price * base_spread / 2
        
        bid_price = mid_price - half_spread
        ask_price = mid_price + half_spread
        
        # Tạo nhiều levels
        bid_quotes = []
        ask_quotes = []
        
        for i in range(self.config.max_orders_per_side):
            level = i + 1
            price_increment = mid_price * base_spread * level
            
            # Bid levels (giảm dần)
            bid_level_price = bid_price - price_increment
            bid_size = self.calculate_optimal_size(order_book, "bid") * (1 - i * 0.1)
            
            bid_quotes.append({
                "side": "buy",
                "price": round(bid_level_price, 2),
                "quantity": round(bid_size, 4),
                "level": level
            })
            
            # Ask levels (tăng dần)
            ask_level_price = ask_price + price_increment
            ask_size = self.calculate_optimal_size(order_book, "ask") * (1 - i * 0.1)
            
            ask_quotes.append({
                "side": "sell",
                "price": round(ask_level_price, 2),
                "quantity": round(ask_size, 4),
                "level": level
            })
        
        return bid_quotes, ask_quotes
    
    async def make_market_decision(
        self, 
        order_book: OrderBook
    ) -> Dict[str, Any]:
        """
        Quyết định market making chính - kết hợp rules-based và AI
        """
        
        # Tính các metrics
        volatility = self.calculate_volatility()
        ofi = self.calculate_order_flow_imbalance(order_book)
        
        # Lấy AI decision từ HolySheep
        ai_request = AIDecisionRequest(
            order_book_state={
                "mid_price": order_book.mid_price,
                "spread_pct": order_book.spread_pct,
                "bid_depth": sum(level.quantity for level in order_book.bids[:5]),
                "ask_depth": sum(level.quantity for level in order_book.asks[:5])
            },
            current_position=self.current_position,
            recent_pnl=sum(self.pnl_history) if self.pnl_history else 0,
            market_volatility=volatility,
            order_flow={"buy": int((1 + ofi) * 50), "sell": int((1 - ofi) * 50)}
        )
        
        ai_decision = await self.ai_client.get_making_decision(ai_request)
        
        # Tạo quotes
        bid_quotes, ask_quotes = self.generate_quotes(order_book, ai_decision)
        
        return {
            "bid_quotes": bid_quotes,
            "ask_quotes": ask_quotes,
            "ai_decision": ai_decision,
            "metrics": {
                "volatility": volatility,
                "ofi": ofi,
                "position": self.current_position,
                "daily_pnl": self.daily_pnl
            }
        }
    
    def update_pnl(self, trade_pnl: float):
        """Cập nhật P&L và metrics"""
        self.daily_pnl += trade_pnl
        self.total_pnl += trade_pnl
        self.pnl_history.append(trade_pnl)
        self.total_trades += 1
        self.daily_trades += 1
        
        if len(self.pnl_history) >= 2:
            wins = sum(1 for p in self.pnl_history if p > 0)
            self.win_rate = wins / len(self.pnl_history)
    
    def get_performance_report(self) -> Dict[str, Any]:
        """Báo cáo hiệu suất chi tiết"""
        return {
            "daily": {
                "pnl": self.daily_pnl,
                "trades": self.daily_trades,
                "win_rate": self.win_rate
            },
            "total": {
                "pnl": self.total_pnl,
                "trades": self.total_trades
            },
            "ai_costs": self.ai_client.get_cost_summary(),
            "current_parameters": {
                "spread_multiplier": self.current_spread_multiplier,
                "size_multiplier": self.current_size_multiplier
            }
        }

=== VÍ DỤ SỬ DỤNG HOÀN CHỈNH ===

async def run_market_maker(): """Chạy market maker với HolySheep AI""" # Khởi tạo config = MarketMakerConfig() ai_client = HolySheepAIClient(api_key="YOUR_HOLYSHEEP_API_KEY") market_maker = OptimizedMarketMaker(config, ai_client) # Giả lập order book data mock_order_book = OrderBook( symbol="BTC/USDT", bids=[ OrderBookLevel(price=43400, quantity=2.5), OrderBookLevel(price=43350, quantity=3.2), OrderBookLevel(price=43300, quantity=5.1), ], asks=[ OrderBookLevel(price=43500, quantity=2.8), OrderBookLevel(price=43550, quantity=4.0), OrderBookLevel(price=43600, quantity=6.2), ] ) # Thêm historical prices for _ in range(100): market_maker.price_history.append( mock_order_book.mid_price * (1 + np.random.normal(0, 0.001)) ) # Lấy quyết định decision = await market_maker.make_market_decision(mock_order_book) print("=" * 60) print("📊 MARKET MAKER DECISION") print("=" * 60) print(f"\n💵 Mid Price: ${mock_order_book.mid_price:,.2f}") print(f"📐 Spread: {mock_order_book.spread_pct:.4f}%") print(f"\n📥 BID QUOTES:") for quote in decision["bid_quotes"]: print(f" Level {quote['level']}: ${quote['price']:,.2f} x {quote['quantity']}") print(f"\n📤 ASK QUOTES:") for quote in decision["ask_quotes"]: print(f" Level {quote['level']}: ${quote['price']:,.2f} x {quote['quantity']}") if decision["ai_decision"]: ai_dec = decision["ai_decision"]["decision"] print(f"\n🤖 AI DECISION:") print(f" Spread Adjustment: {ai_dec.get('spread_adjustment', 0):.2%}") print(f" Size Adjustment: {ai_dec.get('size_adjustment', 1):.2f}x") print(f" Side Bias: {ai_dec.get('side_bias', 'neutral')}") print(f" Confidence: {ai_dec.get('confidence', 0):.2%}") print(f"\n📈 PERFORMANCE:") perf = market_maker.get_performance_report() print(f" Daily P&L: ${perf['daily']['pnl']:.2f}") print(f" AI Cost: ${perf['ai_costs']['total_cost_usd']:.6f}") return decision

Chạy ví dụ

asyncio.run(run_market_maker())

Chiến lược Parameter Tuning Tối Ưu

Grid Search cho Parameters

import itertools
from typing import Dict, List, Tuple, Callable
from dataclasses import dataclass
import random

@dataclass
class ParameterSpace:
    """Không gian tham số cần tối ưu"""
    base_spread_range: Tuple[float, float, float] = (0.0005, 0.003, 0.0005)
    size_factor_range: Tuple[float, float, float] = (0.5, 2.0, 0.25)
    volatility_mult_range: Tuple[float, float, float] = (1.0, 4.0, 0.5)
    max_position_range: Tuple[float, float, float] = (5000, 20000, 2500)

class ParameterOptimizer:
    """
    Tối ưu hóa parameters sử dụng Grid Search
    với backtesting trên historical data
    """
    
    def __init__(self, parameter_space: ParameterSpace):
        self.space = parameter_space
        self.results: List[Dict] = []
    
    def generate_parameter_combinations(self) -> List[Dict]:
        """Tạo tất cả combinations của parameters"""
        
        combinations = []
        
        base_spreads = np.arange(*self.space.base_spread_range)
        size_factors = np.arange(*self.space.size_factor_range)
        volatility_mults = np.arange(*self.space.volatility_mult_range)
        max_positions = np.arange(*self.space.max_position_range)
        
        for bs in base_spreads:
            for sf in size_factors:
                for vm in volatility_mults:
                    for mp in max_positions:
                        combinations.append({
                            "base_spread_pct": round(bs, 4),
                            "order_size_factor": round(sf, 2),
                            "volatility_multiplier": round(vm, 2),
                            "max_position_usd": round(mp, 0)
                        })
        
        return combinations
    
    def simulate_backtest(
        self, 
        params: Dict, 
        historical_data: List[Dict]
    ) -> Dict[str, float]:
        """
        Backtest đơn giản với historical