栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 算法交易实验21 基本流程-从数据到模型

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 算法交易实验21 基本流程-从数据到模型

说明

本篇简单讨论:假设获得了交易数据,如何构造数据,并使用建模方法评估交易信号的好坏。

内容 1 场景假设

随着时间轴前进,我们会“看见”一些机会

从信息的处理上,既有时间的,也有空间的,但是我们可以认为是这样一个顺序:

  • 1 选定了一个观察点。这个即是建模假设的时空点,所有数据的获取不可以越过这个点。(不可使用“未来”数据或“不可见”数据)
  • 2 先将时间维度的信息提取到观察点空间 ,时间特征“压扁”为空间特征
  • 3 在观察点空间构建空间特征,然后基于这些特征进行决策
  • 4 移动到下一个观察点循环这个过程
2 候选交易

通过一对信号规则来生成候选交易

既然是交易,就一定有入场和退场的时机,这个时机就是信号。所以信号分为买入信号和卖出信号,成对使用。不同于一般建模的地方是:建模的数据集有无限可能,完全由你来生成。

候选交易的数据决定了建模的基础。

有一种情况是,当你的信号质量不高,就有可能导致候选集中存在大量的随机噪声(白噪声),从而导致模型无法提升交易的水平。

当然,候选交易的信号有时候是比较简单的指标,有时候是由模型生成的复杂指标。

3 建立模型

在确定了候选交易数据后,就要着手建立模型。模型的作用是什么?

更精准的区分优质交易,提供更好的获胜区间。假设候选数据集的真实胜率是10%,模型性能理想的化我们可以找到30%的获胜区间。

关于真实胜率我是这么理解的,赢钱和亏钱就像扔硬币,随机的赢率也是50%。在现实中由于摩擦成本的存在,赢率应该天然的就低于50%。

所以真实的赢单(假设策略的持仓都是数天到数十天的),例如我们以获利5%或者10%为例,那么可以视为真实赢单。通常情况这种目标率不会高于10%。

当然,还有一种玩法是提高赢单率。简单的我觉得可以理解为,原始策略都是等到硬币落地分出胜负,然而我们可以不必等到硬币落地,在抛出一会之后就可以收割。原来的做法比较重(赢的大,但是赢率不高),而这种做法比较轻(赢的小,但是赢率高)。

3.1 无监督模型

进一步将数据分为几块,或许可以站在更好的基础上建模。

如果数据量足够,我们还可以对数据进行无监督学习。无监督学习可以进一步根据数据的不同维度,将数据分为几类,一般来说可以将原始数据进一步分开。

一开始可以使用类似KMeans这样的简单方法,甚至可以用一些欺诈检测算法/模型。比较重要的是采用哪些维度进行度量,对于类似KMeans这样的算法,最好使用类似Zscore这样的变量。用哪些维度作为无监督分类的基础是比较重要的,这反而需要对业务有理解,并衍生出合适的变量。

3.1 监督模型

提高真实胜率。

当真正的建模数据准备好了,并且确定了目标(真实赢单)后就可以开始进行监督建模了,这步的目的则是学习到一般规律,将候选订单进一步区分为高胜率区和低胜率区,至少应该提高一倍以上的真实胜率。

4 效果评估 4.1 盈利性评估

模型本身的区分力能力不提,从交易上至少要考虑一下两个指标。

一个是赢率,这个很好理解。只要是赚钱的交易就赢。
另一个是盈亏比,下面是引用过来的一段解释。
什么是盈亏比?
盈亏比是一个非常简单的概念。以抛硬币猜反正为例,猜对了赢一块,猜错了输一块,这样的盈亏比就是1:1;猜对了赢三块,猜错了输一块,这样的盈亏比就是3:1。

什么是盈亏比?-知乎

4.2 风险评估

风险方面最终要的显然是最大回撤。最好是评估期间回撤,也就是在计算执行了买入操作后的每一天的最大回撤。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/286602.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号