我正在分析股票价格。
信号根据传播和阈值而变化。在本例中,阈值是标准偏差(值=1)。在指数#2 中,我们出售亚马逊股票并购买特斯拉股票。第一笔交易开始时,点差必须超过标准值。信号值在样本数据中发生变化。
使用输入获得输出的最简单方法是什么?
要访问示例数据: https://gist.github.com/birdalugureren/05ea6995a9f31478599e9c062e9cd452
答案 0 :(得分:0)
实现此目的的一种方法是使用与 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