在金融市场中,技术指标是非常常见的交易决策辅助工具,它们是通过对市场价格和交易量等数据进行数学计算而得出的。这些指标可以帮助交易者识别市场趋势、价格波动等情况,并制定相应的交易策略。然而,技术指标的计算方法往往非常复杂,需要调整多个参数,而这些参数的选择对于指标的性能和稳定性有着很大的影响。传统的手动调整参数的方法往往较为耗时,且结果可能受到个人主观因素的影响。因此,需要一种自动化的工具来优化技术指标的参数选择。
TuneTA 的出现正是为了解决这一问题。它使用距离相关性度量来优化技术指标的参数,通过聚类技术选择指标参数,避免“峰值”或“幸运”值,并修剪彼此之间具有最大相关性的指标,从而提高机器学习模型的性能。使用 TuneTA 可以大大简化参数调整的过程,提高技术指标的性能和稳定性,同时也可以节省交易者的时间和精力。
TuneTA具有以下特性:
-
给定金融数据(OHLCV)和目标特征(例如回报率),TuneTA使用距离相关性来优化技术指标的参数。距离相关性能够捕捉线性和非线性强度,并提供比流行的Pearson相关性更显著的优势。 -
通过多步聚类过程选择最佳指标参数,避免与相邻值不一致的值,提供更稳健的参数选择。 -
修剪彼此之间具有最大相关性的指标。这对于机器学习模型很有帮助,这些模型通常在特征互相关较低的情况下表现更好。 -
支持单个或多个股票的调整指标。多个股票可以组合成一个市场组合,其中指标参数在整个组合中得到优化。 -
支持多个时间范围(例如:短期、中期、长期)和修剪预先存在的特征。 -
可以在多个数据集(训练、验证、测试)上生成相同的指标。 -
技术指标优化和相关修剪的并行处理功能,提高计算性能。 -
支持从以下包生成的技术指标:Pandas TA、TA-Lib、FinTA。 -
提供目标和特征的相关性报告,帮助交易者更好地理解市场趋势和价格波动。 -
支持提前停止功能,可以提高计算效率。
安装TuneTA
pip install -U tuneta
pip install --force-reinstall --no-cache-dir --no-deps TA-Lib
TuneTA使用示例
优化单个指标
tt = TuneTA(n_jobs=4, verbose=True)
tt.fit(X_train, y_train,
# 优化RSI指标
indicators=['tta.RSI'],
# 待优化参数的两个参数范围(时间的短期和长期):4-30和31-180
ranges=[(4, 30), (31, 180)],
# 每个时间段最多100次试验,以搜索最佳指标参数
trials=100,
# 在每个时间段持续20次试验没有改善后停止搜索参数
early_stop=20,
)
# 要查看搜索到的两个最佳参数指标与目标回报的相关性以及彼此之间的相关性
tt.report(target_corr=True, features_corr=True)
>>> Output
Indicator Correlation to Target:
Correlation
--------------------- -------------
tta_RSI_timeperiod_19 0.23393
tta_RSI_timeperiod_36 0.227434
Indicator Correlation to Each Other:
tta_RSI_timeperiod_19 tta_RSI_timeperiod_36
--------------------- ----------------------- -----------------------
tta_RSI_timeperiod_19 0 0.93175
tta_RSI_timeperiod_36 0.93175 0
# 在数据上生成搜索到的最佳指标
features = tt.transform(X_train)
>>> Output
tta_RSI_timeperiod_19 tta_RSI_timeperiod_36
Date
2011-10-03 NaN NaN
2011-10-04 NaN NaN
2011-10-05 NaN NaN
2011-10-06 NaN NaN
2011-10-07 NaN NaN
... ... ...
2018-09-25 62.173261 60.713051
2018-09-26 59.185666 59.362731
2018-09-27 61.026238 60.210235
2018-09-28 61.094793 60.241806
2018-10-01 63.384824 61.305540
优化多个指标
tt.fit(X_train, y_train,
# 指定多个指标进行参数优化
indicators=['pta.slope', 'pta.stoch', 'tta.MACD', 'tta.MOM', 'fta.SMA'],
# 待优化参数的范围
ranges=[(4, 60)],
# 每个时间段最多100次试验,以搜索最佳指标参数
trials=100,
# 在每个时间段持续20次试验没有改善后停止搜索参数
early_stop=20,
)
# 查看每个指标的优化时间
tt.fit_times()
>>> Output
Indicator Times
-- ----------- -------
1 pta.stoch 23.56
0 tta.MACD 12.03
2 pta.slope 6.82
4 fta.SMA 6.42
3 tta.MOM 5.7
# 查看每个指标与目标以及彼此之间的距离相关性
tt.report(target_corr=True, features_corr=True)
>>> Output
Indicator Correlation to Target:
Correlation
--------------------------------------------------- -------------
tta_MACD_fastperiod_43_slowperiod_4_signalperiod_52 0.236575
pta_stoch_k_57_d_29_smooth_k_2 0.231091
pta_slope_length_15 0.215603
tta_MOM_timeperiod_15 0.215603
fta_SMA_period_30 0.080596
Indicator Correlation to Each Other:
tta_MACD_fastperiod_43_slowperiod_4_signalperiod_52 pta_stoch_k_57_d_29_smooth_k_2 pta_slope_length_15 tta_MOM_timeperiod_15 fta_SMA_period_30
--------------------------------------------------- ----------------------------------------------------- -------------------------------- --------------------- ----------------------- -------------------
tta_MACD_fastperiod_43_slowperiod_4_signalperiod_52 0 0.886265 0.779794 0.779794 0.2209
pta_stoch_k_57_d_29_smooth_k_2 0.886265 0 0.678311 0.678311 0.110129
pta_slope_length_15 0.779794 0.678311 0 1 0.167069
tta_MOM_timeperiod_15 0.779794 0.678311 1 0 0.167069
fta_SMA_period_30 0.2209 0.110129 0.167069 0.167069 0
使用TuneTA产生的技术指标进行机器学习,下面对比图显示了使用TuneTA优化之后的特征会和目标更相关。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/110979
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!