add: 新增聚宽社区文章爬取分析(姜维)

This commit is contained in:
cfdaily
2026-03-25 00:10:37 +08:00
parent 61d1b95a20
commit f9931a4b2e
8 changed files with 1208 additions and 0 deletions
+108
View File
@@ -0,0 +1,108 @@
标题: 高效使用聚宽回测平台的技巧
链接: https://www.joinquant.com/view/community/detail/1
分类: 回测
================================================================================
# 高效使用聚宽回测平台的技巧
## 一、回测参数设置策略
### 1.1 分阶段设置回测参数
**策略开发初期**
- 时间范围:1-2年历史数据
- 频率:日频数据
- 股票池:较小范围(如沪深300成分股)
- 目的:快速验证策略逻辑,缩短迭代周期
**策略验证阶段**
- 时间范围:3-5年历史数据
- 频率:分钟级数据(如需要)
- 股票池:较大范围(如全市场)
- 目的:全面验证策略表现和稳健性
**实战演练阶段**
- 时间范围:最近1年
- 频率:Tick级数据(高频策略)
- 股票池:目标交易标的
- 目的:模拟真实交易环境
## 二、数据获取优化
### 2.1 利用数据缓存机制
聚宽平台提供了多种数据缓存方式:
```python
# 示例:将常用数据缓存在全局变量中
from jqdata import *
def initialize(context):
# 初始化时预加载常用数据
g.stock_pool = get_index_stocks('000300.XSHG')
g.historical_data = get_price(g.stock_pool, count=250, end_date=context.previous_date)
```
### 2.2 批量获取数据
避免在循环中重复调用数据API
```python
# 低效方式
def handle_data(context, data):
for stock in context.portfolio.positions:
# 在循环中逐个获取数据
price = data[stock].close
# 高效方式
def before_trading_start(context, data):
# 批量获取所有需要的数据
stocks = list(context.portfolio.positions.keys())
g.prices = get_price(stocks, count=1, end_date=context.previous_date)
def handle_data(context, data):
# 直接使用已获取的数据
for stock in context.portfolio.positions:
price = g.prices[stock]['close'][0]
```
## 三、回测效率提升
### 3.1 使用历史回放功能
在策略逻辑验证阶段,可以使用历史回放功能:
- 快速定位问题时间点
- 查看策略在特定行情下的表现
- 避免每次修改都重新运行完整回测
### 3.2 合理使用history函数
```python
# 推荐用法
def before_trading_start(context, data):
# 一次性获取足够的历史数据
g.hist = history(60, '1d', 'close', g.stock_pool)
def handle_data(context, data):
# 使用已缓存的历史数据计算指标
for stock in g.stock_pool:
ma20 = g.hist[stock][-20:].mean()
ma60 = g.hist[stock].mean()
```
## 四、实践案例分享
某量化团队通过以下优化,将回测速度提升了5倍:
1. 将数据获取从handle_data移到before_trading_start
2. 使用批量数据获取替代循环内的单个获取
3. 合理设置回测频率,开发阶段用日频,验证阶段用分钟级
4. 利用聚宽的数据缓存机制,避免重复计算
**优化前**:完整回测需要30分钟
**优化后**:相同回测仅需6分钟
---
**总结**:高效使用聚宽回测平台的关键是"分层优化"——在不同阶段使用不同的回测策略,结合数据缓存和批量获取,可以显著提升回测效率。