farquasar commited on
Commit
01a170b
·
verified ·
1 Parent(s): a3eeeeb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -7
app.py CHANGED
@@ -100,14 +100,24 @@ def remove_outliers(df, epsilon):
100
  return df.loc[mask].reset_index(drop=True)
101
 
102
  # Advanced features
103
- def calculate_rsi(d, window=14):
104
- delta = d.diff()
105
- gain = np.where(delta > 0, delta, 0)
106
- loss = np.where(delta < 0, -delta, 0)
107
- avg_gain = pd.Series(gain).rolling(window=window).mean()
108
- avg_loss = pd.Series(loss).rolling(window=window).mean()
 
 
 
 
 
 
 
109
  rs = avg_gain / avg_loss
110
- return 100 - (100 / (1 + rs))
 
 
 
111
 
112
  def generate_advanced_features(d, other_data=None):
113
  d = d.copy()
 
100
  return df.loc[mask].reset_index(drop=True)
101
 
102
  # Advanced features
103
+ def calculate_rsi(series, window=14):
104
+ # 1) compute deltas
105
+ delta = series.diff()
106
+
107
+ # 2) separate gains and losses as Series
108
+ gain = delta.clip(lower=0)
109
+ loss = -delta.clip(upper=0)
110
+
111
+ # 3) rolling averages
112
+ avg_gain = gain.rolling(window=window).mean()
113
+ avg_loss = loss.rolling(window=window).mean()
114
+
115
+ # 4) compute RS and RSI
116
  rs = avg_gain / avg_loss
117
+ rsi = 100 - (100 / (1 + rs))
118
+
119
+ return rsi
120
+
121
 
122
  def generate_advanced_features(d, other_data=None):
123
  d = d.copy()