J.P.Morgan的python教程 Content
本文提出了一个基于神经网络模型的盈利性加密货币交易算法。研究者们开发了一种新的标记方案,将预测问题转化为机器学习分类问题,并在牛市、熊市和横盘市场中对三个主要加密货币进行了广泛的回测验证。最终,通过分析每个特征对分类输出的贡献,发现了一个可靠且盈利的模型,能够基于公开可用的历史数据预测加密资产价格的未来走势。
1. 引言 (Introduction)
本章内容涉及算法交易系统在金融市场中的应用,特别是在加密货币市场。算法交易依赖于计算机程序来执行基于资产预期未来价格的交易规则。这种交易方式适合高波动性市场,加密货币市场便是其中之一。本研究旨在开发一个能够预测加密资产价格未来走势的可靠和盈利模型,利用公开可用的历史数据。
随着加密货币市场接受度的提升,越来越多的投资者开始将这类资产纳入投资组合,这增加了对加密货币交易算法研究的兴趣。尽管使用复杂模型如神经网络和支持向量机在金融交易领域的应用已有广泛研究,但这些信息通常因商业机密而不为外界所知,因此,探索使用现代机器学习方法进行自动化交易具有重要意义。
论文还涉及了加密货币市场的特点,包括市场效率和投资者行为。有效市场假说认为市场价格反映了所有可用信息,而适应性市场假说则认为投资者可能因市场波动而表现出非理性行为,从而为交易算法提供了机会。此外,论文指出,加密货币交易所的低费用和免费API降低了算法交易的门槛。
论文的贡献在于开发了一个基于多层感知器的交易算法,该算法通过一个新颖的标记方案将预测问题转化为机器学习分类问题。该算法在不同的市场周期中进行了广泛的回测,包括牛市、熊市和横盘市场,以验证其盈利能力。
2. 相关工作 (Related works)
作者分析了加密货币市场趋势预测的相关研究。研究涉及从原始市场数据提取特征,使用Twitter数据进行情感分析,以及从区块链和Google Trends获取数据来预测价格。探讨了宏观经济和金融指标与加密货币价格之间的相关性,以及利用订单簿信息预测资产价格短期方向的方法。此外,还评估了季节性对加密货币市场的影响,并研究了基于价格和交易量时间序列的技术分析。在数据集标记方面,讨论了不同的方法,包括价格回归和方向预测。
3. 数据集 (The dataset)
3.1 数据收集
数据收集自一个流行的加密货币交易平台,通过该平台提供的API接口,收集了从2017年8月17日至2022年12月4日的402种不同加密货币的价格和交易量数据。这些数据以OHLC(开盘价、最高价、最低价、收盘价)加上交易量的标准格式收集,所有加密货币均与稳定币美元泰达币(USDT)配对交易。
3.2 特征提取
特征提取过程涉及从原始数据中提取有用的信息,以便于机器学习模型的训练和预测。提取的特征包括:
-
蜡烛图模式:使用23种流行的蜡烛图模式,包括单根和多根蜡烛图,如三只乌鸦、十字星、吞噬模式、锤子线等,这些模式基于过去的价格行为预测未来价格走势。
-
技术指标:包括6种常用的技术指标,如Bollinger带、ULTOSC、RSI、收盘价百分比变化、Z-Score和交易量Z-Score。这些指标通过分析过去的价格和交易量来预测未来的价格走势。
-
移动平均线交叉:考虑了4种基于不同周期的指数移动平均线(EMA)交叉,包括1和20、20和50、50和100、1和50周期的EMA交叉,用于捕捉趋势和趋势反转信号。
-
时间信息:添加了基于时间的特征,如一年中的月份、一周中的日子和一天中的样本数量,以增加统计优势。
3.3 标记算法
标记算法是将数据集划分为买入、持有、卖出三个类别的关键步骤。算法使用两个参数α和β来设定回报值的阈值,以确定是否触发交易信号。具体步骤包括:
-
定义时间窗口:定义了前向窗口和后向窗口,用于捕捉价格变动和预测价格趋势。
-
计算交易回报:计算在特定时间窗口内买入和卖出的回报,以确定交易的盈利或亏损。
-
标记样本:根据计算出的回报值和设定的阈值,将每个数据样本标记为买入、持有或卖出。如果回报值在α和β之间,根据回报的正负标记为买入或卖出;如果不在这个范围内,则标记为持有
4. MLP模型、训练和测试 (MLP models, training and testing)
4.1 多层感知器(MLP)
-
模型架构:采用了一个包含输入层、两个隐藏层和一个输出层的MLP模型。输入层有128个节点,两个隐藏层分别有64和32个节点,所有这些层都使用了LeakyReLU激活函数。输出层有3个节点,对应于买入、持有、卖出三个类别,使用了Softmax激活函数以提供概率输出。
-
设计原则:在确定MLP的层数和神经元数量时,遵循了通用逼近定理和最小化神经元数量以优化泛化能力的原则。通过逐步增加隐藏层中的神经元数量并比较训练集和测试集的准确性,选择了最小化过拟合且在测试集上表现最佳的神经元数量。
4.2 窗口大小、α和β参数
-
参数选择:前向窗口和后向窗口的大小以及α和β阈值是基于整个数据集的开-收价格百分比变化的统计分析得出的。α设置为85百分位,β设置为99.7百分位,以确定交易信号的触发阈值。
-
数据集平衡:由于使用三个标签进行分类导致数据集倾向于"持有"类别,采用了随机欠采样技术来平衡数据集中的类别分布,以提高分类模型的性能。
-
网格搜索:通过网格搜索在1到5的不同窗口大小组合中进行训练和测试,以找到最佳的窗口大小组合。选择了准确性最高的五种组合进行进一步的分析。
4.3 与其他模型的比较
-
模型比较:将MLP模型与其他几种分类器(如XGBoost、Logistic回归和SGD线性分类器)进行了比较。通过实现这些模型并进行超参数网格搜索,比较了它们在相同数据集上的性能。
-
性能评估:MLP和XGBoost在性能上优于线性模型,其中MLP略微优于XGBoost。这表明MLP在模拟高度非线性现象方面具有优势,而线性模型在准确性上仍然低于MLP和XGBoost。
-
策略选择:基于MLP模型在多个随机种子下的性能稳定性和准确性,选择了MLP作为最终的分类模型
5. 回测 (Backtesting)
本章专注于对开发的MLP模型进行历史数据测试,以评估其在实际交易场景中的性能。这一过程涉及使用历史价格数据来模拟交易策略,目的是验证模型在不同市场条件下的盈利性和稳健性。在回测中,模型的买入和卖出信号被用来执行交易,同时考虑了交易费用和滑点等实际交易因素。为了全面评估模型的表现,进行了长期和短期回测,分别模拟了不同时间段内的交易结果。长期回测旨在评估模型在持续市场变动中的稳定性和盈利能力,而短期回测则关注模型在市场剧烈波动时的表现。此外,通过设置不同的止损阈值,研究了风险管理对模型性能的影响。回测结果表明,MLP模型在多种市场条件下均能实现盈利,且相较于随机策略,展现出显著的统计优势。
5.1 Comparisons with recent papers
作者详细列出了与本研究方法相似的其他论文,并基于共同的数据集和时间段,对比了不同模型的预测准确性和交易策略的盈利能力。比较的依据包括模型的准确率、召回率、精确率以及在实际交易模拟中的回报率。此外,还考虑了不同研究中使用的数据源、特征提取技术和机器学习算法。通过这种比较,本研究展示了其MLP模型在预测加密货币价格走势方面的竞争力,以及在实际交易环境中实现盈利的潜力。
6. 特征重要性分析 (Feature importance analysis)
本章采用了SHAP(SHapley Additive exPlanations)方法来解释模型的决策过程。SHAP是一种基于博弈论的方法,用于确定每个特征对模型输出的贡献度。通过计算每个特征的SHAP值,可以量化其对模型预测的正向或负向影响。
在本章中,首先对所有特征的SHAP值进行了平均,以确定整体上哪些特征对模型的预测结果最为重要。分析结果显示,技术性指标、移动平均线交叉和时间信息等特征对模型的预测结果具有显著影响,而某些蜡烛图模式的影响相对较小。
7. 结论 (Conclusion)
本章总结了整个研究的主要发现,包括开发的MLP模型在预测加密货币价格走势方面的准确性和盈利能力,同时指出了模型在不同市场条件下的有效性。此外,本章还提出了未来研究的方向,包括探索多时间框架价格行为分析、结合额外的市场数据源以及在其他金融市场测试模型的适用性。