【问题标题】:How do I go about predicting Closing Price of a Financial Symbol (EURUSD) using Machine Learning?如何使用机器学习预测金融品种 (EURUSD) 的收盘价?
【发布时间】:2017-05-07 10:02:18
【问题描述】:

我使用 EURUSD OHLC 1 天数据做了一个简单的实验。
我的特征是开盘价、低价、高价,我试图预测未来的收盘价。

代码按预期工作,但结果非常具有误导性。

我得到了 99% 的准确度分数,众所周知,这是不可能的。

1) 那我做错了什么?
2) 我怎样才能纠正我的错误?

我正在构建的官方系统将有 BoP、PPI、利率、GDP 和许多 Momentum 指标等作为特征,大约 60 多个特征。

import pandas as pd
import numpy as np
#import matplotlib.pyplot as plt
#import pickle

# 1. Read the EURUSD csv data.
# 2. Process the DataFrame, using only the Open, High, Low, Close columns.
df = pd.read_csv( 'EURUSD1440.csv', index_col= 'Date' )
df = df[['Open','High','Low','Close']]
array = df.values

# Features consist of Open, High, Low column, and stored in x.
# Label is the Close column stored in y.
x = array[:,0:3]
y = array[:,3]


# Split Data into Test and Train.
# 60% Train and 40% Test.
from sklearn.cross_validation import train_test_split
x_train, x_test, y_train, y_test = train_test_split( x, y, test_size = 0.4 )


# 1. Train the Model using .fit method.
# 2. Predict the future Closing prices using the .predict method.
# 3. Know how Accurate the Model is using the .score method.
from sklearn.linear_model import LinearRegression
from sklearn.metrics import accuracy_score

model = LinearRegression()
model.fit( x_train, y_train )
forecast = model.predict( x_test )
accuracy = model.score( x_test, y_test )

print( forecast, accuracy )

【问题讨论】:

  • 欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布代码并准确描述问题之前,我们无法有效地帮助您。尤其要包括您迄今为止所做的数据、输出和调试跟踪。
  • 我已经这样做了
  • 您可能已经意识到并且想要编辑/更新帖子,因为兼容 MCVE 的帖子也应该是 Complete + V可验证,您尚未为其发布参考 EURUSD1440.csv 数据以启用独立重新运行实验。

标签: python-3.x machine-learning time-series quantitative-finance


【解决方案1】:

序言:
在量化建模和操作一组带有 M/L 预测器的第 4 代分布式系统方面已有数十年,我可以保证即使是您的 60 个特征过于乐观。如果目标不仅仅是一篇学术论文,人们可能会假设一个数量级的高维空间,包含 技术和基本因素,以合理地训练模型。为什么?市场法则。

您的实验表现出两种类型的主要错误:

第一个 - 概念上的失误:
机器学习任务,努力预测一个连续值是回归,(没有“分类”标签,而是回归目标值),其中一个指标因为“预测成功”不是分数,而是某种绝对的 PriceDOMAIN 距离度量。 是的,距离,不是百分比,因为它通过交易执行转化为金钱奖励。

任何使用百分比的尝试都不能提供将任何两个回归模型相互比较的方法,并且与高度非线性的专业风险管理不一致。

这篇文章的足迹没有提供足够的空间来讨论定义+评估成功的交易 TruStrategy 的其他依赖项,至少在 5 维策略中运行 -{ Select, D 等,Act,A定位,T终止}-策略。如果没有完整的 TruStrategy SDAAT 模型参数定义,就没有机会计算任何正在审查的交易模型的市场表现预期。


下一步:

您的模型展示了展望未来。你让模型从价值观中学习,现实永远不会在预测的时候给你,所以除了一些清晰的洞察力,模型主要偏离训练数据集,在真实情况下永远不会提供公平的服务。


结语:

犯这个错误不必害羞,因为谷歌已经发布了他们自己的机器学习“成功”犯了同样的错误。 (如果对详细信息感兴趣,可以尝试 google Michal Illich + Google Machine Learning blogs on this,非常相似,经验)


事后:

不要放弃。如果您的官方项目资金充足,拥有合理的技术基础设施并在业务领域具有合理的基础,则可以聘请适当的专业知识组合,让外汇市场预测引擎在合理的时间和预算内工作。

在失败领域的外汇成本中,重新发明轮子的成本再高不过了

【讨论】:

    【解决方案2】:

    user3666197对概念缺陷的讨论是对的。

    经过广泛的研究,我会证明,使用机器学习的基本模型,即负载 > 转换 > 拟合 > 预测使用 sklearn 或 keras 甚至 tbot 来自动化模型参数优化的唯一选择是结合一些未来- 预测/计算“某些关系的数据”

    要为您指明正确的方向,请尝试以下方法:

    • 占星术数据,由 NASA 地平线系统提供
    • NASA 提供的太阳风和地磁数据。

    此外,将工作重点放在特征工程和选择上比模型选择更实用。

    祝你好运。

    【讨论】:

      猜你喜欢
      • 2018-11-29
      • 2018-12-23
      • 2014-10-20
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 2012-11-16
      相关资源
      最近更新 更多