# 量化策略
**Repository Path**: wezly/quantitative-strategy
## Basic Information
- **Project Name**: 量化策略
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 3
- **Created**: 2022-06-04
- **Last Updated**: 2022-06-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 量化策略选股及回测
### 量化策略框架
搭建量化策略框架,该框架将包含以下五个类(class):
- DataRead: 数据的读取和存储
- OrderManage: 订单信息存储与更新
- Strategy: 量化策略的具体步骤
- BackTesting: 回测的指标及指标的储存
- GraphPlot: 指标的可视化
#### Class1: DataRead
**支持读取自己所选时间段的股票收盘价,换手量,PE(TTM)等因子**
通过 Joinquant 平台中的get_price函数调取所选股票的相应因子
* 按照每个因子的dataframe格式形成一个csv文件(index: timeSeries, column: stock_code)
* 当进行回测时,调取每个因子的csv文件作为该因子的数据集
* **该类支持实时从Joinquant平台读取数据:在登入帐号后,可通过get_price实时调取因子值**
#### Class2: OrderManage
**支持查询持仓信息及历史订单信息**
1. 通过buy及sell函数进行持仓信息更新及订单记录
* buy函数记录股票名称、买入数量、买入价格和时间
* sell函数中记录订单量(技术性地在sell股票时记录订单),并返回当前股票市值
2. 通过历史订单信息计算指标,例如:pnl
#### Class3: Strategy
**支持给出策略名,并运行相应策略**
##### Strategy1: find_max_LSTM
1. 在股票池中挑选过去一个月收益最高的 choose_nums 支股票
2. LSTM预测这 choose_nums 支股票在接下来 predict_days 的价格走向
3. 选取涨幅最大的 hold_nums 支股票进行持仓
4. 清仓频率为每3个月一次
##### Strategy2: Drop/Rise Top K Strategy
1. 通过所有股票n天前以及1日前的股票价格计算浮动大小
2. 挑选价格下降/上升最大的前k个股票进行持仓
#### Class4: BackTesting
**支持不同策略在历史数据集的运行,并计算并可视化统计指标如市值,胜手率等**
```python
class BackTesting(object):
"""
回测函数
支持不同策略在历史数据集的运行,并计算并可视化统计指标如市值,胜手率等;
当前回测系统需要策略实现如下接口:
class StrategyInterface:
def init_strings(self):
'''
返回当前策略的名称
:return:
'''
def selected_stocks(self, data):
'''
传入历史数据,返回给回测系统相应交易信号,目前信号即策略决定的股票代码列表
:param data: 当前交易日前因子价格
:return: 策略决定的股票代码列表及状态
'''
目前回测系统支持两种交易模式:
周期清仓交易:
按固定时间间隔进行清仓,并将最新数据传给策略,由策略决定当前买入的股票,
信号买卖交易:
每天将最新数据传递给策略,由策略决定当前是否进行买入、卖出或者无操作,
两种交易模式均以 [['股票代码1','状态'], ['股票代码2', '状态'],.....] 的形式作为信号传递给回测系统
"""
def run(self):
"""
根据策略传入的多支股票买卖数和状态进行买卖,状态标记为'buy' or 'sell'
买卖基于现有的self.value等权购买
要求策略给出[['股票代码1','状态'], ['股票代码2', '状态'],.....]
并将传入值封装至selected_stock函数
:return:
"""
```
#### Class5: BackTesting
**可视化不同的统计指标如市值,胜手率等**
**市值可视化**
**胜率可视化**
