分类
外匯交易

非常流行的自动化交易

构建盈亏序列(PNL,Profit and Loss)。盈亏序列是指当前的头寸映射到对应的历史数据序列上,即此金融产品的历史收益率序列上,获得历史上的各个时间点的盈亏值。由此可知,盈亏序列的建立必须满足两个条件,1.已经处理好的历史数据2.当前的头寸。经过处理的历史数据已经经过讨论,当前头寸可以作为参数直接输入获得,当然为了更好的结构性和扩展性的考虑我们可以把头寸写入配置文件中。用数学公式PnL=Position(头寸)*()。

什么是自动交易

This website uses cookies to improve your experience while you navigate 非常流行的自动化交易 through the website. Out of these, the 非常流行的自动化交易 非常流行的自动化交易 cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.

Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
CookieDurationDescription
cookielawinfo-checkbox-analytics11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional11 monthsThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies 非常流行的自动化交易 in the category "Other.
cookielawinfo-checkbox-performance11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store 非常流行的自动化交易 the user consent for the cookies in the category "Performance".
viewed_cookie_policy11 monthsThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.

Functional cookies help to perform certain functionalities like sharing the content 非常流行的自动化交易 of the website on social media platforms, 非常流行的自动化交易 collect feedbacks, and other third-party features.

Performance cookies are used to understand and analyze 非常流行的自动化交易 the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Analytical cookies are 非常流行的自动化交易 used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.

Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.

Other uncategorized cookies are those that are being analyzed and have 非常流行的自动化交易 非常流行的自动化交易 not been classified into a category as yet.

股票自动交易软件自动下单的优势


Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.非常流行的自动化交易

非常流行的自动化交易

联系电话

83669333/23609523

公司地址

深圳市南山区粤兴四道中山大学产学研大楼1901

使用数据驱动进行配对交易:简单交易策略

coderpai 于 2018-04-28 19:49:54 发布 5911 收藏 23

作者:chen_h
微信号 & QQ:862251340
微信公众号:coderpai

使用数据驱动进行配对交易:简单交易策略

我们假设你有一对股票 X 和 Y,它们之间有一些基本的经济联系,例如这是两家生产百事可乐和可口可乐的,它们拥有相同产品的公司。你预计这两个公司的比率或者价格差异(也称为价差)随时间而保持不变。然而,由于某些愿意,比如市场变化,两个公司暂时的供求变化,一个正确机构的大量买单或者卖单,一个公司的重要消息面等等原因。这两个股票之间的价差可能会存在暂时的分歧。在这种情况下,一只股票上涨,另一只股票可能会相对下跌。如果你预计这种分歧会随着时间的推移恢复正常,那么你就可以进行配对交易。

概念解释:我们先来生成两个假股票数据

接下里,让我们生成一个伪造的数据 X ,并且通过从正太分布中绘制出它的每日收益。然后我们执行一个累积和来得到每天的 X 值。

现在我们生成与 X 有着经济关联的数据 Y ,所以 Y 的价格走势应该是与 X 相似的。我们通过对数据 X 进行建模并且添加一些从正态分布中抽取的随机噪声来建模。

协整性跟相关性非常相似,意味着两个系列之间的比值将以平均值为中心变化。我们可以将序列 X 和 Y 非常流行的自动化交易 的关系描述如下:

其中,⍺ 是一个常数比率,e 是白噪声。

我们可以使用 statsmodels.tsa.stattools 包来进行方便测试。我们应该可以看到一个特别低的 p 值,因为这是我们人为构建的两个序列,他们在物理上可能是协整的。

注:相关性和协整性

Correlation: 0.998
Cointegration test p-value: 0.258

Correlation: 0.007546
Cointegration test p-value: 0.0

相关度:0.007546
协整检验 p 值:0.0

这两个序列的相关性非常低,但 p 值却显示出完美的协整性!

如何进行配对交易?

因为两个协整时间序列是彼此偏离和分开的(比如上面的 X 和 Y),所以有时候价差会很高,而有时候价差会很低。我们可以通过购买一种证券并且卖出另一种证券来进行配对交易。这样,如果正确一起下跌或者一起上涨,我们既不赚钱也不赔钱,因为我们的策略是市场中立的。

回到上面的 X 和 Y,以及它们的线 Y = ⍺ X + e,我们可以看到它们的比率(Y/X)是围绕它的平均值 ⍺ 来进行移动的,而我们赚取的钱就是从这个平均值 ⍺ 来的。为了做到这一点,我们会格外注意 X 和 Y 的比率,即 ⍺ 太高或者太低的时候:

  • 延长比率:这是当 ⍺ 比平常小的时候,我们预计它的值会增加。在上面的例子中,我们通过购买 Y 并且出售 X 来对此进行投资。
  • 缩小比率:这是当 ⍺ 比平常大的时候,我们预计它的值会减小。在上面的例子中,我们通过出售 Y 并且购买 X 来对此进行投资。

请注意,我们总是有这样一个 “对冲仓位”:如果卖出的证券亏损了,那么空头就会赚钱;如果证券的价值升高了,那么多头仓位就会赚钱,所以我们不受整体市场波动的影响。如果证券 X 和 Y 彼此相对移动,那么我们只会赚钱或者亏钱。

使用数据分析的方法来找到拥有如此规律的证券

做到这一点的最佳方式是从我们怀疑可能是拥有协整关系的证券开始,并进行统计测试。如果你只是对所有对进行统计测试,那么你将会受到多重比较偏差的影响。

多重比较偏差只是一个事实,即在运行多次测试时,错误的生成重要 p 值的机会增加了,因为我们正在进行大量测试。如果对随机数据运行 100 词测试,我们应该看到 5 个 p 值低于 0.05 的值。如果你将 n 只证券进行协整比较,你将执行 n(n-1)/2 次比较,并且你应该会看到很多不正确的 p 值,随着你测试次数的增加,这个数量也会增加。为了避免出现这种情况,我们可以选择一小部分,我们认为可能是协整的然后进行单独测试。这将帮助我们减少暴露在多重比较偏差风险之中。

所以我们试着找一些具有协整关系的证券。让我们从标普 500 指数中 —— 一篮子的美国大盘科技股中找一些具有协整关系的股票吧。这些股票运行在类似的细分市场,并可能具有协整价格。我们通过扫描这些股票,然后计算两两之间的协整,最后我们可以得到一个协整检验得分矩阵,一个 p 值得分矩阵,以及可以计算出 p 值小于 0.05 的任何配对。这种方法容易出现多重比较偏差,实际上证券应该经过第二次验证。但是在这里,为了这个例子,我们先忽略这个。

从图中我们可以看出股票 ‘ADBE’ 和 ‘MSFT’ 是最具有协整的。为了更加放心,我们来看看它们的价格变化,以确保它确实是具有意义的。

这个比例看起来好像是为让着一个稳定的平均值移动的。绝对比率在统计学上并不是很有用,我们通过 z-score 来标准化我们的数据,会对我们的数据处理更有帮助。z-score 的定义如下:

Z Score (Value) = (Value — Mean) / Standard Deviation

  • 收集可靠的数据并且进行数据清洗
  • 从数据中来选择一些数据特征来识别交易信号
  • 特征可以选择移动平均值活价格数据,相关性或更加复杂信号 —— 或者结合一些新创建的特征来生成特征
  • 使用这些特征来生成交易信号,即哪些指令是买入的,哪些指令是卖出的,哪些指令是中性的。

第一步:定义我们的问题

在这里,我们试图创建一个信号,告诉我们下一个时间点的比值是买入还是卖出,即我们的预测变量 Y 值:

第二步:收集可靠和准确的数据

我们可以使用雅虎的 API 来使用过去 10 年的交易日内(大约 2500 个数据点):开盘价,收盘价,最高价,最低价和交易量。

第三步:分割数据

  • 采用 7 年的数据作为训练集,也就是 70% 的数据;
  • 采用 3 年的数据作为测试集,也就是 30% 的数据;

第四步:特征工程

  • 60天移动平均比率:滚动平均值的测量
  • 5天移动平均比率:平均值的当前值的测量
  • 60天标准差
  • z-score:(5d MA - 60d MA)/ 60d SD

第五步:模型选择

让我们从一个非常简单的模型开始。查看 z-score 图标,我们可以看到,无论 z-score 特征变得太高还是太低,它都趋于恢复。让我们使用 +1 和 -1 来作为我们的阈值太高或者太低,然后我们可以使用以下模型来生成交易信号:

  • 当 z-score 低于 -1.0 时,比率就是购买的信号(+1),因为我们预计 z-score 会回升到 0 ,因此比率会增加;
  • 当 z-score 高于 1.0 时,比率就是卖出的信号(-1),因为我们预计 z-score 会回落到 0,因此比率会下降;

第六步:训练,验证和优化

我们对训练数据的信号反馈还是很满意的。我们来看看这个信号那个可以产生怎么样的利润。当比率较低时,我们可以制作一个购买 1 比率(购买 1 个 ADBE 股票和卖出比率 x 个 MSFT股票)的简单策略。当卖出 1 比率(卖出 1 个 ADBE 股票和买入比率 x 个 MSFT 比率)时,计算这些比率的 PnL 交易。

我们也可以尝试更加复杂的模型,如 Logistics 回归,支持向量机等来做出我们的 +1(-1)预测。

第七步:对测试数据进行回测

回测是非常简单的,我们可以使用我们上面的函数来查看测试数据上的 PnL(profit and loss)。

y_1,x_2,x_3,\cdots,x_n

构建盈亏序列(PNL,Profit and Loss)。盈亏序列是指当前的头寸映射到对应的历史数据序列上,即此金融产品的历史收益率序列上,获得历史上的各个时间点的盈亏值。由此可知,盈亏序列的建立必须满足两个条件,1.已经处理好的历史数据2.当前的头寸。经过处理的历史数据已经经过讨论,当前头寸可以作为参数直接输入获得,当然为了更好的结构性和扩展性的考虑我们可以把头寸写入配置文件中。用数学公式PnL=Position(头寸)*()。

避免过拟合

在我们的模型中,我们使用滚动参数估计,并可能希望优化窗口长度。我们可能决定简单的迭代所有的可能,合理的窗口长度,并根据我们的模型的最佳表现来选择长度。下面我们编写一个简单的循环来根据 PnL 值选择一个最佳的长度。