aromidvar1355 commited on
Commit
8bc93b0
·
verified ·
1 Parent(s): 5f6567a

Upload utils.py

Browse files
Files changed (1) hide show
  1. core/utils.py +49 -0
core/utils.py ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import pandas as pd
3
+ from sklearn.preprocessing import StandardScaler
4
+ from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
5
+ import yfinance as yf
6
+ import os
7
+
8
+ def download_yahoo_data(ticker, start_date, end_date):
9
+ df = yf.download(ticker, start=start_date, end=end_date)
10
+ df = df[['Close']].dropna()
11
+ df.reset_index(inplace=True)
12
+ return df
13
+
14
+ def load_offline_csv(file):
15
+ df = pd.read_csv(file)
16
+ if 'Date' in df.columns:
17
+ df['Date'] = pd.to_datetime(df['Date'])
18
+ df.set_index('Date', inplace=True)
19
+ return df
20
+
21
+ def prepare_sequences(data, window_size):
22
+ X, y = [], []
23
+ for i in range(len(data) - window_size):
24
+ X.append(data[i:i + window_size])
25
+ y.append(data[i + window_size])
26
+ return np.array(X), np.array(y)
27
+
28
+ def scale_data(df, column='Close'):
29
+ scaler = StandardScaler()
30
+ scaled = scaler.fit_transform(df[[column]])
31
+ return scaled, scaler
32
+
33
+ def inverse_transform(scaler, data):
34
+ return scaler.inverse_transform(data)
35
+
36
+ def compute_metrics(y_true, y_pred):
37
+ return {
38
+ "MSE": mean_squared_error(y_true, y_pred),
39
+ "MAE": mean_absolute_error(y_true, y_pred),
40
+ "R²": r2_score(y_true, y_pred)
41
+ }
42
+
43
+ def rolling_backtest(model, X, y, step=5):
44
+ predictions = []
45
+ for i in range(0, len(X) - step, step):
46
+ X_batch = X[i:i + step]
47
+ pred = model.predict(X_batch)
48
+ predictions.extend(pred.flatten())
49
+ return predictions