计算股票交易中的信号

问题描述

前言

我正在分析股票价格。

  • 价差值是一对的值。
  • 一对是两只股票,例如 Amazon_Tesla
  • 如果信号为 1,则表示必须出售该股票。
  • 如果信号为 0,则表示必须买入该股票。

enter image description here

输入

  1. 标准值:浮动
  2. 传播:列表或熊猫系列

输出

  1. 信号 1
  2. 信号 2

信号如何变化?

信号根据传播阈值而变化。在本例中,阈值是标准偏差(值=1)。在指数#2 中,我们出售亚马逊股票并购买特斯拉股票。第一笔交易开始时,点差必须超过标准值。信号值在样本数据中发生变化。

结果

使用输入获得输出的最简单方法是什么?

要访问示例数据: https://gist.github.com/birdalugureren/05ea6995a9f31478599e9c062e9cd452

解决方法

实现此目的的一种方法是使用与 standard deviation 相关的 spread values 值来描述每个信号的函数,以产生股票走势将转向的点。之后,使用ffill向前填充库存操作没有变化的空间。

import pandas as pd
import numpy as np

d = {'index': {i:i for i in range(20)},'spread': {0: 0.4,1: 0.6,2: 1.1,3: 0.8,4: 1.5,5: 0.6,6: -0.01,7: -1.4,8: 0.1,9: 0.4,10: 1.4,11: -1.5,12: -0.4,13: 0.3,14: 0.6,15: 1.2,16: 0.7,17: -0.3,18: -0.8,19: -1.9}}

df = pd.DataFrame(d)
print(df)

std_dev = 1

func_sig1 = lambda x: 1 if x > std_dev else 0 if x < 0 else np.NAN
func_sig2 = lambda x: 1 if x < -std_dev else 0 if x > 0 else np.NAN

df["Signal-1"] = df["spread"].map(func_sig1).ffill()
df["Signal-2"] = df["spread"].map(func_sig2).ffill()

print(df)

来自df

的输出
    index  spread  Signal-1  Signal-2
0       0    0.40       NaN       0.0
1       1    0.60       NaN       0.0
2       2    1.10       1.0       0.0
3       3    0.80       1.0       0.0
4       4    1.50       1.0       0.0
5       5    0.60       1.0       0.0
6       6   -0.01       0.0       0.0
7       7   -1.40       0.0       1.0
8       8    0.10       0.0       0.0
9       9    0.40       0.0       0.0
10     10    1.40       1.0       0.0
11     11   -1.50       0.0       1.0
12     12   -0.40       0.0       1.0
13     13    0.30       0.0       0.0
14     14    0.60       0.0       0.0
15     15    1.20       1.0       0.0
16     16    0.70       1.0       0.0
17     17   -0.30       0.0       0.0
18     18   -0.80       0.0       0.0
19     19   -1.90       0.0       1.0