PLUS会员

如何对AI量化策略进行管理?三步走

由small_q创建,最终由small_q 被浏览 597 用户

导语

大部分初学AI-量化的同学做选股策略的做法都是简单粗暴将全市场的股票数据都放入模型训练, 然后企图训练出一个万能模型-图灵机, 寄希望于仅仅只通过暴力的数据挖掘,或者某些因子,就可以打造出一个适应于 任何行情的选股模型--圣杯。

{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}但遗憾的是,A股市场中的数据噪音是很大的,不同的市场环境,不同的因子的选股效果也不一样。

各种风格不同类型的股票他们会互相形成干扰,导致我们通过正常的方法很难从中挖掘到超额收益。 通过这些少量的带有噪音的数据,我们通常非常难训练出一个良好的模型, 穷尽拟合所有可能发生的市场状态。

因此,我一般设计策略的思路 都是会将不同市场行情先做切分。将不同的市场行情做分类,开发出对适合该类市场的策略做组合投资, 以此类分散风险。

策略分类

{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}

我会做多几种不同风格,适用于不同市场行情的策略,比如单边牛市的时候,就做进攻型策略。

{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}

行情下跌的时候就做防守,做防守型策略。

{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}

震荡市场中,我就用大小情绪周期轮动的方式,将攻防策略一体化做一个策略组合。

{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}这种切分市场的做法好处是:可以使得策略池中,永远都存在适应当下市场的一种。同时也能确保策略池里的选股策略,能覆盖到大部分的市场行情。

{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}本次分享将通过简单的绩效分析管理账户策略,尤其是单股流的策略。通过本次分享, 可以思考一下如何去驾驭手中的超短策略模型。

我们的策略库中可能存在的策略:

  1. 超短进攻类型的策略:资金流追涨,上攻形态追涨,平台、箱体突破;
  2. 追涨停板 超短择时防守型策略:回踩支撑位反弹,超跌反弹,强势股回调反弹
  3. 超短攻防一体型策略:攻防策略大小周期轮动组合

匹配策略库策略

获取api_token

{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}

获取策略notebookid

路径:我的交易-模拟交易策略-策略详情页-链接里的

{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}Pandas策略绩效分析

将api_token和notebook_id导入以下代码中运行,读取数据。用pandas对策略进行绩效分析,对策略绩效的结果进行一些简单的排序评估。

爬取交易api数据

#----这里是首先要运行一次的文件
import pandas as pd
import requests
import json
def request_position_by_api_key(uname, key,notebook_id):
position_url = 'https://bigquant.com/bigwebapi/algo_info/plot_return'
r = requests.get(url=position_url, params={
'owner': uname,
'api_key': key,
'notebook_id': notebook_id,
})
return json.loads(r.text)
uname='woshisilvio'  #这里填写你的账号用户名 比如账号用户名id
#这里填写你刚才在api中获取到的的 token_id
api_token = """
api_token_id
"""
#-----  下面的 ids 填写的 是 我的交易中的策略notebook_id
ids=['策略1的notebook_id','策略2的notebook_id','策略3的notebook_id']

获取策略指标

def get_strategy_metrics(notebook_id, owner, api_token):
url = f"https://bigquant.com/bigwebapi/algo_info/plot_return?owner={owner}&notebook_id={notebook_id}&limit=-1&api_key={api_token}"
response = requests.get(url)
sharpe = response.json()["data"]["algo_info_plot_return"]["sharpe"]
return sharpe

标签

选股策略数据挖掘模型训练AI量化交易
评论
  • 谢谢分享,最近正在考虑不同市场风格下的策略切换的问题。
  • 然后获取仓位比例后怎么用代码实现调仓操作呢?还是说要手动去调?
  • 有没有可以克隆的研究一下谢谢up
  • notebookid是啥