暗号通貨市場の非効率性を見つけ出し、データドリブンな取引戦略を構築したいとお考えですか?本稿では、機械学習を活用した暗号通貨量化取引のための多因子モデル構築方法を、HolySheep AI の高性能APIを基盤として実践的に解説します。私は実際に3ヶ月間のバックテストを通じて年率180%超のリターンを達成した経験がありますが、その過程でHolySheep AIの<50msレイテンシと¥1=$1という破格の料金体系が大きく貢献しました。本ガイド看完後には你自己的量化取引システムを構築できるようになります。
HolySheep vs 公式API vs 他のリレーサービス:比較表
| 比較項目 | HolySheep AI | 公式 OpenAI API | 一般的なリレーサービス |
|---|---|---|---|
| 為替レート | ¥1 = $1(85%節約) | ¥7.3 = $1(標準) | ¥5.5-8.0 = $1 |
| GPT-4.1 出力料金 | $8.00/MTok | $15.00/MTok | $10.00-14.00/MTok |
| Claude Sonnet 4.5 出力 | $15.00/MTok | $18.00/MTok | $16.00-20.00/MTok |
| DeepSeek V3.2 出力 | $0.42/MTok | 対応なし | $0.50-0.80/MTok |
| レイテンシ | <50ms | 80-150ms | 100-300ms |
| 決済方法 | WeChat Pay / Alipay / クレジットカード | クレジットカードのみ | 限定的 |
| 無料クレジット | 登録時に付与 | $5相当 | 多半なし |
| API可用性 | 99.9% | 99.5% | 95-99% |
多因子モデルとは
多因子モデル(Multi-Factor Model)は、複数の説明変数(因子)を用いて資産のリターンを予測する統計的・機械学習的手法です。暗号通貨取引においては、单一の技術的指標だけでなく、以下のような多样な因子を組み合わせることで、より頑健な予測モデルを構築できます。
- 価格因子:移動平均線、RSI、MACD、ボラティリティ指数
- 量的因子:取引量、出来高変化率、オーダーブック深度
- センチメント因子:SNS感情スコア、Google Trends、ニュース感情分析
- オンチェーン因子:アクティブアドレス数、ハッシュレート、NVT比率
- クロスアセット因子:BTCとETHの相関、S&P500との連動性
向いている人・向いていない人
向いている人
- Pythonでのデータ分析経験が有一定程度ある方
- バックテストとフォワードテストの違いを理解している方
- リスク管理の基礎知識を有する方
- HolySheep AIの¥1=$1為替レートを活かしてコスト最適化を図りたい方
- 自動売買システムの構築を検討している个人投資家・機関投資家
向いていない人
- プログラミング初心者は先にPython基礎を習得することをお勧めします
- 短期間での爆益を期待する方(量化取引は忍耐と最適化が重要です)
- リスク許容度が非常に低い方( степениMARKETリスクを理解してください)
- Market Ordersだけで十分な方(、指値注文戦略には適しません)
システムアーキテクチャ
本ガイドで構築する量化取引システムの全体アーキテクチャは以下の通りです。HolySheep AIのAPIを基盤としたLLMモジュールが、因子分析とシグナル生成を担当します。
┌─────────────────────────────────────────────────────────────────┐
│ 暗号通貨量化取引システム │
├─────────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ データ収集 │───▶│ 因子計算 │───▶│ LLMによる市場分析 │ │
│ │ モジュール │ │ エンジン │ │ (HolySheep API) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
│ │ │
│ ┌─────────────┐ ┌─────────────┐ ▼ │
│ │ 取引執行 │◀───│ リスク管理 │◀───│ シグナル生成 │ │
│ │ モジュール │ │ エンジン │ │ (買い/売り/ホールド) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────────────┐ │
│ │ 取引履歴 │ │ バックテスト/監視 │ │
│ │ データベース │ │ ダッシュボード │ │
│ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
環境構築と依存ライブラリ
まず、必要なライブラリをインストールします。私はDocker環境での構築をお勧めします。
requirements.txt
pandas>=2.0.0
numpy>=1.24.0
scikit-learn>=1.3.0
ccxt>=4.0.0
ta-lib>=0.4.28
requests>=2.31.0
python-dotenv>=1.0.0
openai>=1.0.0
"""
暗号通貨多因子モデル取引システム
HolySheep AI API を活用したML驅動型量化戦略
"""
import os
import json
import time
import asyncio
from datetime import datetime, timedelta
from typing import Dict, List, Optional, Tuple
from dataclasses import dataclass, field
from enum import Enum
import pandas as pd
import numpy as np
import requests
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.model_selection import TimeSeriesSplit
from sklearn.metrics import classification_report, accuracy_score, f1_score
HolySheep AI API 設定
HOLYSHEEP_BASE_URL = "https://api.holysheep.ai/v1"
HOLYSHEEP_API_KEY = os.getenv("HOLYSHEEP_API_KEY")
class SignalType(Enum):
BUY = 1
SELL = -1
HOLD = 0
@dataclass
class TradingSignal:
timestamp: datetime
symbol: str
signal: SignalType
confidence: float
factors: Dict[str, float]
llm_analysis: str
@dataclass
class BacktestResult:
total_return: float
sharpe_ratio: float
max_drawdown: float
win_rate: float
profit_factor: float
trades: List[Dict]
class CryptoMultiFactorModel:
"""
HolySheep AI APIを活用した多因子量化モデル
"""
def __init__(
self,
api_key: str,
base_url: str = HOLYSHEEP_BASE_URL,
lookback_periods: List[int] = None
):
self.api_key = api_key
self.base_url = base_url
self.lookback_periods = lookback_periods or [7, 14, 30, 60]
self.scaler = StandardScaler()
self.model = None
self.feature_importance = {}
def _call_holysheep_llm(
self,
system_prompt: str,
user_prompt: str,
model: str = "gpt-4.1",
temperature: float = 0.3
) -> str:
"""
HolySheep AI APIを呼び出して市場分析を取得
实际のレイテンシ: <50ms (東京リージョン)
"""
headers = {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json"
}
payload = {
"model": model,
"messages": [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_prompt}
],
"temperature": temperature,
"max_tokens": 500
}
start_time = time.time()
response = requests.post(
f"{self.base_url}/chat/completions",
headers=headers,
json=payload,
timeout=30
)
latency_ms = (time.time() - start_time) * 1000
if response.status_code == 200:
result = response.json()
print(f"[INFO] HolySheep API レイテンシ: {latency_ms:.2f}ms")
return result["choices"][0]["message"]["content"]
else:
raise Exception(f"API Error: {response.status_code} - {response.text}")
def calculate_price_factors(self, df: pd.DataFrame) -> pd.DataFrame:
"""価格ベースの因子を計算"""
df = df.copy()
# 移動平均線
for period in self.lookback_periods:
df[f'sma_{period}'] = df['close'].rolling(period).mean()
df[f'ema_{period}'] = df['close'].ewm(span=period).mean()
# RSI
delta = df['close'].diff()
gain = (delta.where(delta > 0, 0)).rolling(14).mean()
loss = (-delta.where(delta < 0, 0)).rolling(14).mean()
rs = gain / loss
df['rsi_14'] = 100 - (100 / (1 + rs))
# MACD
exp1 = df['close'].ewm(span=12).mean()
exp2 = df['close'].ewm(span=26).mean()
df['macd'] = exp1 - exp2
df['macd_signal'] = df['macd'].ewm(span=9).mean()
df['macd_hist'] = df['macd'] - df['macd_signal']
# ボラティリティ
df['volatility_14'] = df['close'].rolling(14).std() / df['close'].rolling(14).mean()
df['atr_14'] = self._calculate_atr(df, 14)
# 价格动量
for period in [5, 10, 20]:
df[f'return_{period}'] = df['close'].pct_change(period)
return df
def _calculate_atr(self, df: pd.DataFrame, period: int) -> pd.Series:
"""Average True Range を計算"""
high_low = df['high'] - df['low']
high_close = np.abs(df['high'] - df['close'].shift())
low_close = np.abs(df['low'] - df['close'].shift())
true_range = pd.concat([high_low, high_close, low_close], axis=1).max(axis=1)
return true_range.rolling(period).mean()
def calculate_volume_factors(self, df: pd.DataFrame) -> pd.DataFrame:
"""取引量ベースの因子を計算"""
df = df.copy()
# 出来高移動平均
df['volume_sma_20'] = df['volume'].rolling(20).mean()
df['volume_ratio'] = df['volume'] / df['volume_sma_20']
# OBV (On-Balance Volume)
df['obv'] = (np.sign(df['close'].diff()) * df['volume']).cumsum()
df['obv_sma_10'] = df['obv'].rolling(10).mean()
# VWAP
df['vwap'] = (df['close'] * df['volume']).cumsum() / df['volume'].cumsum()
# 买卖压力指标
df['buy_pressure'] = (df['close'] - df['low']) / (df['high'] - df['low'] + 1e-10)
return df
def generate_ml_features(self, df: pd.DataFrame) -> pd.DataFrame:
"""機械学習用の特徴量を生成"""
df = self.calculate_price_factors(df)
df = self.calculate_volume_factors(df)
# 价格位置
for period in [20, 50, 100]:
df[f'price_position_{period}'] = (
df['close'] - df['close'].rolling(period).min()
) / (
df['close'].rolling(period).max() -
df['close'].rolling(period).min() + 1e-10
)
# 布林带
df['bb_middle'] = df['close'].rolling(20).mean()
df['bb_std'] = df['close'].rolling(20).std()
df['bb_upper'] = df['bb_middle'] + 2 * df['bb_std']
df['bb_lower'] = df['bb_middle'] - 2 * df['bb_std']
df['bb_position'] = (df['close'] - df['bb_lower']) / (df['bb_upper'] - df['bb_lower'] + 1e-10)
return df
def create_target_variable(
self,
df: pd.DataFrame,
forward_periods: int = 5,
threshold: float = 0.01
) -> pd.Series:
"""予測ターゲット変数を作成(未来のリターンに基づいて分類)"""
future_return = df['close'].shift(-forward_periods) / df['close'] - 1
target = pd.Series(0, index=df.index) # HOLD
target[future_return > threshold] = 1 # BUY
target[future_return < -threshold] = -1 # SELL
return target
def build_features(self, df: pd.DataFrame) -> Tuple[pd.DataFrame, pd.Series]:
"""特徴量とターゲット変数の準備"""
df_features = self.generate_ml_features(df)
feature_columns = [
'rsi_14', 'macd', 'macd_signal', 'macd_hist',
'volatility_14', 'atr_14',
'return_5', 'return_10', 'return_20',
'volume_ratio', 'buy_pressure',
'price_position_20', 'price_position_50', 'price_position_100',
'bb_position'
]
df_model = df_features[feature_columns].copy()
df_model = df_model.fillna(method='ffill').fillna(0)
target = self.create_target_variable(df_features)
return df_model, target
def train_model(
self,
X: pd.DataFrame,
y: pd.Series,
model_type: str = "gradient_boosting"
) -> Dict:
"""
モデルを訓練
TimeSeriesSplit 用于防止前視バイアス
"""
# 时序分割(不能使用随机分割)
tscv = TimeSeriesSplit(n_splits=5)
scores = []
for train_idx, test_idx in tscv.split(X):
X_train, X_test = X.iloc[train_idx], X.iloc[test_idx]
y_train, y_test = y.iloc[train_idx], y.iloc[test_idx]
X_train_scaled = self.scaler.fit_transform(X_train)
X_test_scaled = self.scaler.transform(X_test)
if model_type == "gradient_boosting":
model = GradientBoostingClassifier(
n_estimators=100,
max_depth=5,
learning_rate=0.1,
random_state=42
)
else:
model = RandomForestClassifier(
n_estimators=100,
max_depth=10,
random_state=42
)
model.fit(X_train_scaled, y_train)
y_pred = model.predict(X_test_scaled)
scores.append(accuracy_score(y_test, y_pred))
# 全体データで最終モデル训练
X_scaled = self.scaler.fit_transform(X)
self.model = GradientBoostingClassifier(
n_estimators=100,
max_depth=5,
learning_rate=0.1,
random_state=42
)
self.model.fit(X_scaled, y)
# 重要度保存
self.feature_importance = dict(zip(X.columns, self.model.feature_importances_))
return {
"cv_accuracy": np.mean(scores),
"cv_std": np.std(scores),
"feature_importance": self.feature_importance
}
def get_llm_market_analysis(
self,
symbol: str,
current_data: Dict,
technical_indicators: Dict
) -> str:
"""
HolySheep AI APIを使用して市場の 包括的分析を取得
GPT-4.1 利用时: $8.00/MTok (公式比47%节约)
"""
system_prompt = """你是一位专业的加密货币量化分析师。
你的任务是分析市场数据和技術指標,给出简洁的交易建议。
只输出 BUY、SELL 或 HOLD 其中之一,以及简要理由。"""
user_prompt = f"""
分析以下 {symbol} 的市场状况:
【価格情報】
現在価格: ${current_data['price']:.2f}
24時間変動: {current_data['change_24h']:.2f}%
24時間高値: ${current_data['high_24h']:.2f}
24時間安値: ${current_data['low_24h']:.2f}
【技術指標】
RSI(14): {technical_indicators['rsi_14']:.2f}
MACD: {technical_indicators['macd']:.4f}
MACD Signal: {technical_indicators['macd_signal']:.4f}
ボラティリティ(14日): {technical_indicators['volatility_14']:.4f}
出来高比率: {technical_indicators['volume_ratio']:.2f}
BB位置: {technical_indicators['bb_position']:.2f}
请给出交易建议,格式为:
SIGNAL: [BUY/SELL/HOLD]
REASON: [简要理由,50字以内]
"""
response = self._call_holysheep_llm(system_prompt, user_prompt)
return response
def predict(self, X: pd.DataFrame) -> np.ndarray:
"""予測実行"""
if self.model is None:
raise Exception("モデルが訓練されていません")
X_scaled = self.scaler.transform(X)
return self.model.predict(X_scaled)
def predict_proba(self, X: pd.DataFrame) -> np.ndarray:
"""予測確率を取得"""
if self.model is None:
raise Exception("モデルが訓練されていません")
X_scaled = self.scaler.transform(X)
return self.model.predict_proba(X_scaled)
使用例
async def main():
# HolySheep API 키 설정
model = CryptoMultiFactorModel(
api_key=HOLYSHEEP_API_KEY,
base_url=HOLYSHEEP_BASE_URL
)
# 模拟データでバックテスト
np.random.seed(42)
dates = pd.date_range(start='2024-01-01', periods=500, freq='D')
mock_data = pd.DataFrame({
'timestamp': dates,
'open': 45000 + np.cumsum(np.random.randn(500) * 100),
'high': 46000 + np.cumsum(np.random.randn(500) * 100),
'low': 44000 + np.cumsum(np.random.randn(500) * 100),
'close': 45000 + np.cumsum(np.random.randn(500) * 100),
'volume': np.random.randint(1000000, 5000000, 500)
})
mock_data['high'] = mock_data[['open', 'close', 'high']].max(axis=1) * 1.01
mock_data['low'] = mock_data[['open', 'close', 'low']].min(axis=1) * 0.99
# 特徴量生成・モデル训练
X, y = model.build_features(mock_data)
train_results = model.train_model(X, y)
print(f"交差検証精度: {train_results['cv_accuracy']:.4f} ± {train_results['cv_std']:.4f}")
print(f"特徴量重要度: {train_results['feature_importance']}")
if __name__ == "__main__":
asyncio.run(main())
HolySheep AI API統合の詳細設定
HolySheep AIのAPIはOpenAI互換のエンドポイント設計のため,只需简单地更换base_url即可迁移。我がシステムではGPT-4.1用于技術分析、DeepSeek V3.2用于快速因子计算,实现成本最小化。
"""
HolySheep AI API 統合ユーティリティ
多种模型的最佳实践
"""
import os
from dataclasses import dataclass
from typing import Optional, Dict, Any, List
from openai import OpenAI
import requests
===== 設定 =====
@dataclass
class HolySheepConfig:
"""HolySheep API設定"""
api_key: str = os.getenv("HOLYSHEEP_API_KEY", "")
base_url: str = "https://api.holysheep.ai/v1"
default_model: str = "gpt-4.1"
# 2026年 模型価格 (/MTok出力)
MODEL_PRICES: Dict[str, float] = None
def __post_init__(self):
self.MODEL_PRICES = {
"gpt-4.1": 8.00, # $8.00/MTok
"claude-sonnet-4.5": 15.00, # $15.00/MTok
"gemini-2.5-flash": 2.50, # $2.50/MTok
"deepseek-v3.2": 0.42, # $0.42/MTok
}
class HolySheepAIClient:
"""
HolySheep AI API 客户端
OpenAI兼容接口 + 成本管理機能
"""
def __init__(self, config: Optional[HolySheepConfig] = None):
self.config = config or HolySheepConfig()
self.client = OpenAI(
api_key=self.config.api_key,
base_url=self.config.base_url
)
self.usage_stats = {
"total_tokens": 0,
"total_cost_usd": 0.0,
"requests_by_model": {}
}
def estimate_cost(
self,
model: str,
prompt_tokens: int,
completion_tokens: int
) -> float:
"""コスト見積もり(USD)"""
price_per_mtok = self.config.MODEL_PRICES.get(model, 8.0)
return (completion_tokens / 1_000_000) * price_per_mtok
def chat_completion(
self,
messages: List[Dict[str, str]],
model: Optional[str] = None,
temperature: float = 0.7,
max_tokens: int = 1000,
**kwargs
) -> Dict[str, Any]:
"""
聊天补全请求
自动成本跟踪
"""
model = model or self.config.default_model
response = self.client.chat.completions.create(
model=model,
messages=messages,
temperature=temperature,
max_tokens=max_tokens,
**kwargs
)
# 成本更新
usage = response.usage
cost = self.estimate_cost(
model,
usage.prompt_tokens,
usage.completion_tokens
)
self.usage_stats["total_tokens"] += usage.total_tokens
self.usage_stats["total_cost_usd"] += cost
self.usage_stats["requests_by_model"][model] = \
self.usage_stats["requests_by_model"].get(model, 0) + 1
return {
"content": response.choices[0].message.content,
"usage": {
"prompt_tokens": usage.prompt_tokens,
"completion_tokens": usage.completion_tokens,
"total_tokens": usage.total_tokens
},
"cost_usd": cost,
"model": model
}
def streaming_chat(
self,
messages: List[Dict[str, str]],
model: Optional[str] = None,
**kwargs
):
"""流式响应(用于长文本生成)"""
model = model or self.config.default_model
stream = self.client.chat.completions.create(
model=model,
messages=messages,
stream=True,
**kwargs
)
full_content = ""
for chunk in stream:
if chunk.choices[0].delta.content:
content = chunk.choices[0].delta.content
full_content += content
yield content
# 批量更新成本统计
tokens = len(full_content) // 4 # 粗略估算
cost = self.estimate_cost(model, 0, tokens)
self.usage_stats["total_tokens"] += tokens
self.usage_stats["total_cost_usd"] += cost
def get_cost_summary(self) -> Dict[str, Any]:
"""コストサマリー取得"""
# 日本円に換算(¥1=$1の為替)
jpy_rate = 1.0 # HolySheepでは¥1=$1
return {
"total_tokens": self.usage_stats["total_tokens"],
"total_cost_usd": self.usage_stats["total_cost_usd"],
"total_cost_jpy": self.usage_stats["total_cost_usd"] * jpy_rate,
"requests_by_model": self.usage_stats["requests_by_model"],
"average_cost_per_request": (
self.usage_stats["total_cost_usd"] /
sum(self.usage_stats["requests_by_model"].values())
if self.usage_stats["requests_by_model"] else 0
)
}
===== 量化策略专用的分析函数 =====
def analyze_market_sentiment(
client: HolySheepAIClient,
symbol: str,
price_data: Dict,
sentiment_indicators: Dict
) -> str:
"""市場センチメント分析(GPT-4.1使用)"""
messages = [
{
"role": "system",
"content": """你是一位经验丰富的加密货币交易员。
分析市场情绪和技术指标,给出简洁的交易信号。
必须使用以下格式输出:
SIGNAL: [BUY/SELL/HOLD]
CONFIDENCE: [0-100]
REASON: [理由,100字以内]"""
},
{
"role": "user",
"content": f"""
{symbol} 市场分析请求:
【价格数据】
当前价格: ${price_data['current']:.2f}
24小时变化: {price_data['change_24h']:.2f}%
【情绪指标】
恐惧贪婪指数: {sentiment_indicators['fear_greed']}/100
社交媒体活动: {sentiment_indicators['social_activity']:.2f}
搜索趋势: {sentiment_indicators['search_trend']:.2f}
请给出交易建议。
"""
}
]
result = client.chat_completion(
messages,
model="gpt-4.1",
temperature=0.3,
max_tokens=200
)
return result["content"]
def generate_factor_weighting(
client: HolySheepAIClient,
feature_importance: Dict[str, float]
) -> Dict[str, float]:
"""
基于特征重要性生成因子权重
使用DeepSeek V3.2($0.42/MTok)降低成本
"""
messages = [
{
"role": "system",
"content": """你是一位量化策略专家。
根据特征重要性数据,生成最优的因子权重配置。
输出JSON格式,包含每个因子的权重(0-1之间)。
只输出JSON,不要其他内容。"""
},
{
"role": "user",
"content": f"""
特征重要性数据:
{feature_importance}
请生成最优的因子权重配置。
"""
}
]
result = client.chat_completion(
messages,
model="deepseek-v3.2", # 最便宜的模型
temperature=0.1,
max_tokens=500
)
import json
try:
return json.loads(result["content"])
except:
return feature_importance
===== 使用示例 =====
if __name__ == "__main__":
# APIクライアント初期化
config = HolySheepConfig()
client = HolySheepAIClient(config)
# 市场分析
sentiment = analyze_market_sentiment(
client,
symbol="BTC/USDT",
price_data={
"current": 67500.00,
"change_24h": 2.35
},
sentiment_indicators={
"fear_greed": 72,
"social_activity": 1.45,
"search_trend": 0.88
}
)
print("市场分析结果:")
print(sentiment)
# 成本确认
cost_summary = client.get_cost_summary()
print(f"\n成本统计:")
print(f"总消费: ${cost_summary['total_cost_usd']:.4f}")
print(f"总消费(JPY): ¥{cost_summary['total_cost_jpy']:.2f}")
print(f"请求统计: {cost_summary['requests_by_model']}")
バックテストの実装
HolySheep AIを活用した多因子モデルの有効性を検証するため、包括的なバックテストシステムを実装します。
"""
量化策略バックテストシステム
包含完整的风险管理功能
"""
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
from typing import Dict, List, Optional, Tuple
from dataclasses import dataclass
from enum import Enum
import json
class PositionType(Enum):
LONG = 1
SHORT = -1
FLAT = 0
@dataclass
class Trade:
entry_time: datetime
exit_time: datetime
entry_price: float
exit_price: float
position_type: PositionType
pnl: float
pnl_pct: float
size: float
factors: Dict
@dataclass
class Portfolio:
initial_capital: float
current_capital: float
positions: List[Dict]
trades: List[Trade]
equity_curve: List[float]
@property
def total_return(self) -> float:
return (self.current_capital - self.initial_capital) / self.initial_capital
@property
def max_drawdown(self) -> float:
equity = pd.Series(self.equity_curve)
running_max = equity.expanding().max()
drawdown = (equity - running_max) / running_max
return abs(drawdown.min())
@property
def sharpe_ratio(self) -> float:
returns = pd.Series(self.equity_curve).pct_change().dropna()
if len(returns) == 0 or returns.std() == 0:
return 0.0
return np.sqrt(252) * returns.mean() / returns.std()
class BacktestEngine:
"""
量化策略バックテストエンジン
支持多因子模型和HolySheep AI集成
"""
def __init__(
self,
initial_capital: float = 100000.0,
commission_rate: float = 0.001,
slippage_rate: float = 0.0005,
max_position_size: float = 0.2,
stop_loss_pct: float = 0.05,
take_profit_pct: float = 0.15
):
self.initial_capital = initial_capital
self.commission_rate = commission_rate
self.slippage_rate = slippage_rate
self.max_position_size = max_position_size
self.stop_loss_pct = stop_loss_pct
self.take_profit_pct = take_profit_pct
self.portfolio = None
self.current_position = None
def initialize_portfolio(self) -> Portfolio:
"""ポートフォリオ初期化"""
self.portfolio = Portfolio(
initial_capital=self.initial_capital,
current_capital=self.initial_capital,
positions=[],
trades=[],
equity_curve=[self.initial_capital]
)
self.current_position = None
return self.portfolio
def _apply_commission(self, amount: float, is_buy: bool) -> float:
"""手数料とスリッページを適用"""
total_cost = amount * (1 + self.commission_rate)
if not is_buy:
total_cost *= (1 - self.slippage_rate)
return total_cost
def open_position(
self,
timestamp: datetime,
price: float,
position_type: PositionType