搞了个机器学习买卖系统,5000 美元投资变成了 20 万
作者头像
  • 六络水
  • 2019-12-08 09:01:35 7

最近,我开发了一个加密货币自动买卖系统。凭借科研和软件工程背景,我在开发过程中并未过多关注市场营销。经过多次迭代,我的机器学习(ML)买卖系统在一年内将5000美元的投资增值至20万美元,最佳战绩是在连续四个月实现盈利。尽管偶尔会有亏损,但总体上交易日基本都是盈利的。

本文将分享在开发该系统过程中遇到的问题及经验教训。

系统的关键特性

买卖活动涉及多方参与者,有人盈利,有人亏损。如何在众多竞争者中获得竞争优势?在交易领域,这种优势被称为“edge”。主要可以从以下几个方面入手: - 交易延迟:确保与交易平台的连接速度更快,从而更快获取市场数据并抢先提交订单。 - 基础设施:构建更稳定、更高效的基础设施,更好地处理各种突发情况。 - 数据质量:获取更可靠、更完整、更干净的数据。 - 模型优化:利用最新深度学习技术,优化函数、特征和训练算法。 - 市场准入:进入那些非所有人都能进入的市场,如特定国家的交易平台。

然而,过度依赖复杂的机器学习模型往往会导致失败。许多开发者希望通过深度学习算法构建交易系统,但忽视了其他重要因素,如基础设施优化和数据质量提升。

市场选择

选择合适的市场至关重要。理想的市场应具备高流动性、低交易手续费、快速且安全可靠的交易环境。流动性好的市场价差低、滑点小、交易成本低,适合大额交易。然而,目前尚无公开的评价体系来评估交易平台的可靠性。

唯一可靠的评估方法是自行收集和分析数据,包括检查交易的真实性、价差和滑点的分布情况等。一些交易平台可能会通过算法伪造交易数据,因此需要谨慎甄别。

具体实现

为了确保交易获利,必须使交易收益高于所有交易成本的总和。对于大多数交易者来说,交易手续费占据了主要部分,而滑点往往被忽视,但实际上同样重要。假设我们买入了某个数量的比特币,并在稍后卖出,净交易成本可以表示为:

[ text{交易成本} = (2 times text{数量} times text{交易所手续费}) + (text{数量} times text{价差}) + text{买入滑点} + text{卖出滑点} ]

交易成本的重要性取决于交易频率。如果交易频率较高,那么这些成本就显得尤为重要。

时间维度问题

如何确定是进行高频交易还是每日交易?这需要权衡两种极端情况。时间跨度越短,市场波动越小,但交易成本可能吞噬掉微小的利润。另一方面,长时间交易可以忽略交易成本,但需要应对更多随机事件的影响。

因此,我们需要在覆盖交易成本、拥有足够数据集和识别数据模式之间找到平衡。时间跨度越小,模式和样本越多,但也需要注意交易成本和延迟问题。

优化函数

在训练机器学习模型时,我们需要选择合适的目标数据。通常,我们会对收益而非价格进行建模。收益可以表示为:

[ text{收益} = left( frac{text{当前价格}}{text{前一时刻价格}} right) - 1 ]

另一种方法是对数收益,它更符合正态分布,便于机器学习算法训练。此外,还可以考虑使用微价格(microprice)等其他价格类型。

回测与实时交易

回测是指使用训练好的模型基于历史数据进行模拟交易。虽然回测软件可以模拟延迟、非标准订单类型、交易佣金和滑点,但它们与真实交易环境仍有差距。回测主要用于过滤或作为悲观估计。

其他问题

除了上述问题外,我们还需要处理诸如非独立同分布(non-IID)数据、订单重建、最小化延迟、构建特征、订单管理等问题。此外,还需要考虑容错机制,确保系统在故障时能够恢复正常运行。

相关资源

金融交易行业充满神秘色彩,网上充斥着各种劣质内容。对于新手来说,这一领域显得异常复杂。实际操作是最好的学习方式。加密货币市场的数据对所有人开放,可以作为学习之用。推荐一些有用的资源,如《金融机器学习进展》、《高频金融交易入门》等书籍,以及arXiv q-fin上的最新研究论文。

总结

本文分享了构建自动化交易系统的一些关键经验和教训。复杂的问题通常没有通用解决方案,重要的是充分了解每个细节,并根据实际情况做出合理决策。

    本文来源:图灵汇
责任编辑: : 六络水
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
变成机器买卖美元投资学习系统500020
    下一篇