量化python库
所属分类 quant
浏览量 13
量化python库
pandas - 数据分析核心
numpy - 数值计算基础
TA-Lib - 技术指标
import talib
# 计算MACD
macd, signal, hist = talib.MACD(data['Close'])
ta - TA-Lib的纯Python替代
import ta
# 技术指标计算
df['rsi'] = ta.momentum.RSIIndicator(df['close']).rsi()
df['bb_h'] = ta.volatility.BollingerBands(df['close']).bollinger_hband()
VectorBT - 向量化回测
速度快,支持并行计算
import vectorbt as vbt
# 简单策略回测
portfolio = vbt.Portfolio.from_holding(data['Close'])
portfolio.total_return()
Backtesting.py - 简洁回测框架
from backtesting import Backtest, Strategy
class MyStrategy(Strategy):
def init(self):
self.sma = self.I(talib.SMA, self.data.Close, 20)
def next(self):
if self.data.Close[-1] > self.sma[-1]:
self.buy()
mplfinance - 专业K线图
import mplfinance as mpf
mpf.plot(data, type='candle', volume=True)
pyfolio - 绩效分析
import pyfolio as pf
# 生成详细报告
pf.create_returns_tear_sheet(returns)
Zipline - 专业级回测
from zipline import run_algorithm
from zipline.api import order, record, symbol
def initialize(context):
context.asset = symbol('AAPL')
def handle_data(context, data):
order(context.asset, 10)
record(AAPL=data.current(context.asset, 'price'))
backtrader - 功能全面
import backtrader as bt
class MyStrategy(bt.Strategy):
params = (('maperiod', 20),)
def __init__(self):
self.sma = bt.indicators.SMA(self.data, period=self.params.maperiod)
def next(self):
if self.data.close[0] > self.sma[0]:
self.buy()
quantstats - 绩效报告
import quantstats as qs
# 生成专业报告
qs.reports.html(returns, benchmark='SPY',
output='quantstats-tearsheet.html')
qlib - 微软AI量化平台
from qlib.contrib.data.handler import Alpha158
# 专业量化平台
handler = Alpha158(instruments='csi300',
start_time='2010-01-01')
Alphalens - 因子分析
import alphalens as al
# 因子绩效分析
factor_data = al.utils.get_clean_factor_and_forward_returns(
factor, prices, quantiles=5
)
al.tears.create_full_tear_sheet(factor_data)
plotly - 交互式图表
import plotly.graph_objects as go
# 交互式K线图
fig = go.Figure(data=[go.Candlestick(x=df.index,
open=df['Open'], high=df['High'],
low=df['Low'], close=df['Close'])])
fig.show()
dash - Web仪表板
import dash
from dash import dcc, html
import plotly.graph_objs as go
# 构建量化仪表板
app = dash.Dash(__name__)
app.layout = html.Div([
dcc.Graph(id='live-graph'),
dcc.Interval(id='graph-update', interval=1000)
])
empyrical - 绩效指标
import empyrical as ep
# 计算各种绩效指标
sharpe = ep.sharpe_ratio(returns)
max_drawdown = ep.max_drawdown(returns)
calmar = ep.calmar_ratio(returns)
ARCH - 波动率建模
from arch import arch_model
# GARCH模型
am = arch_model(returns, vol='GARCH', p=1, q=1)
res = am.fit(update_freq=5)
statsmodels - 统计模型
from statsmodels.tsa.stattools import adfuller
from statsmodels.tsa.arima.model import ARIMA
# 单位根检验
result = adfuller(returns)
# ARIMA模型
model = ARIMA(returns, order=(1,1,1))
pandas-ta - 扩展技术指标
import pandas_ta as ta
# 链式调用
df.ta.rsi(length=14, append=True)
df.ta.macd(fast=12, slow=26, signal=9, append=True)
websocket-client - 实时数据
import websocket
def on_message(ws, message):
# 处理实时数据
print(message)
ws = websocket.WebSocketApp(
"wss://stream.binance.com:9443/ws/btcusdt@kline_1m",
on_message=on_message)
机器学习与AI
scikit-learn - 基础机器学习
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import StandardScaler
# 特征工程
scaler = StandardScaler()
X_scaled = scaler.fit_transform(features)
# 分类预测
clf = RandomForestClassifier()
clf.fit(X_train, y_train)
lightgbm/xgboost - 梯度提升树
import lightgbm as lgb
# 训练模型
params = {'objective': 'binary', 'metric': 'auc'}
model = lgb.train(params, train_data, valid_sets=[val_data])
pytorch-forecasting - 深度学习预测
from pytorch_forecasting import TemporalFusionTransformer
# 时间序列预测
tft = TemporalFusionTransformer.from_dataset(
training, learning_rate=0.03
)
finrl - 强化学习量化
from finrl import config
from finrl.finrl_meta.env_stock_trading import StockTradingEnv
# 强化学习环境
env = StockTradingEnv(df=df, **env_kwargs)
AI量化组合
pytorch/tensorflow
pytorch-forecasting
scikit-learn
xgboost/lightgbm
上一篇
下一篇
量化投资十八问
quantstats 简介及使用例子
QLib核心概念和术语
Flask request 对象用法