python - 为什么我的 RSI 值与 Yahoo Finance 不同
问题描述
我尝试使用以下代码在 SMA 和 EMA 方法中计算 RSI。
def rsi(data, period = 14, column = 'Close'):
delta = data[column].diff()
delta = delta[1:]
up = delta.clip(lower=0)
down = delta.clip(upper=0)
up[ up < 0 ] = 0
down[down > 0] = 0
data['UP'] = up
data['DOWN'] = down
# Calculate the EWMA
roll_up1 = up.ewm(span=period).mean()
roll_down1 = down.abs().ewm(span=period).mean()
# Calculate the RSI based on EWMA
RS1 = roll_up1 / roll_down1
RSI1 = 100.0 - (100.0 / (1.0 + RS1))
# Calculate the SMA
roll_up2 = up.rolling(period).mean()
roll_down2 = down.abs().rolling(period).mean()
# Calculate the RSI based on SMA
RS2 = roll_up2 / roll_down2
RSI2 = 100.0 - (100.0 / (1.0 + RS2))
data['RSI1'] = RSI1
data['RSI2'] = RSI2
return data
然后我尝试计算 AAPL 股票的 RSI
df = yf.download('AAPL', period="3d", interval = '1h')
rsi(df)
df = df.dropna()
df
结果如下,
Close RSI1 RSI2
2021-06-18 09:30:00-04:00 131.050003 46.782703 53.072098
2021-06-18 10:30:00-04:00 130.327499 37.694286 48.587796
2021-06-18 11:30:00-04:00 130.990005 48.317262 55.852004
2021-06-18 12:30:00-04:00 130.809998 45.865629 53.151575
2021-06-18 13:30:00-04:00 130.960007 48.383954 61.052606
2021-06-18 14:30:00-04:00 130.904999 47.449990 55.294624
2021-06-18 15:30:00-04:00 130.399994 39.394643 51.816916
但是当我查看雅虎财经图表时,
RSI 值接近 SMA 方法。但还是不一样的。
Close RSI
2021-06-18 13:30:00-04:00 130.960007 49.04
2021-06-18 14:30:00-04:00 130.904999 48.35
2021-06-18 15:30:00-04:00 130.399994 42.46
我究竟做错了什么?
解决方案
您发布的所有代码都是正确的,除了您需要 EWMA。
您需要更改的是以下行:
# Calculate the EWMA
adjust: bool = False
ignore_na: bool = True
roll_up1 = up.ewm(alpha=(1.0 / period), adjust=adjust, ignore_na=ignore_na, min_periods=period).mean()
roll_down1 = down.abs().ewm(alpha=(1.0 / period), adjust=adjust, ignore_na=ignore_na, min_periods=period).mean()
最后,RSI 计算如下:
RSI = 100.0 * roll_up1 / (roll_down1 + roll_down1 )
推荐阅读
- javascript - 我应该如何在 django 模板中使用 onsubmit 事件?
- android-fragments - 我如何从片段中打开片段(kotlin)
- python - 如何删除 python pkg_resources 入口点?
- python - 如何为 VS Code 设置 python 调试器?
- c++ - 将派生类的对象传递给基类
- google-bigquery - Power BI 服务到 GCP (BigQuery)
- java - Spring Boot 2.3 上的构造函数方法的 Spring jpql 查询验证失败
- html - 为什么 CSS3 中的后代选择器不适用于 h1?
- c# - 使用 pidgin 跳过直到解析器匹配
- vue.js - Vuejs 计算属性没有正确更新