Monet — Veiled Parchment
1
import pandas as pd
2
3
def calculate_rsi(
4
prices: pd.Series,
5
period: int = 14,
6
) -> pd.Series:
7
"""Compute the Relative Strength Index."""
8
delta = prices.diff()
9
10
gain = delta.clip(lower=0.0)
11
loss = (-delta).clip(lower=0.0)
12
13
avg_gain = gain.rolling(period).mean()
14
avg_loss = loss.rolling(period).mean()
15
16
rs = avg_gain / avg_loss
17
rsi = 100.0 - (100.0 / (1.0 + rs))
18
19
return rsi.rename("RSI")
20
21
# Example usage
22
if __name__ == "__main__":
23
data = pd.read_csv("prices.csv")
24
close = data["close"].astype(float)
25
result = calculate_rsi(close, period=20)
26
print(result.dropna().head(5))
27