Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions MidEval Code/MidEval_Divij/DivijArora_MidEval.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix
from sklearn.preprocessing import LabelEncoder, StandardScaler
from sklearn.model_selection import train_test_split

# Load and Encode
df = pd.read_csv('quantvision_financial_dataset_200.csv')
le = LabelEncoder()
for col in ['asset_type', 'market_regime']:
df[col] = le.fit_transform(df[col])

X = df.iloc[:, :-1]
Y = df.iloc[:, -1]

# Split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=42)

# Scale
ss = StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.transform(X_test)

# Logistic Regression
log_model = LogisticRegression()
log_model.fit(X_train, Y_train)
y_pred_log = log_model.predict(X_test)

# Neural Network
nn_model = MLPClassifier(hidden_layer_sizes=(20,10), max_iter=1000)
nn_model.fit(X_train, Y_train)
y_pred_nn = nn_model.predict(X_test)

def print_metrics(name, y_true, y_pred):
print(name,':')
print('Accuracy:', accuracy_score(y_true, y_pred))
print('Precision:', precision_score(y_true, y_pred))
print('Recall:', recall_score(y_true, y_pred))
print('F1 Score:', f1_score(y_true, y_pred))
print('Confusion Matrix:\n',confusion_matrix(y_true, y_pred),'\n')

print_metrics("Logistic Regression", Y_test, y_pred_log)
print_metrics("Neural Network", Y_test, y_pred_nn)


# Why Logistic Regression performs reasonably good or bad:
# Logistic Regression performs worse than Neural Network probably because it relies on linear weights, ignoring compound effects while training model. Since target variable has very low count of 0s, it might not have influenced the weights much.

# Why Neural Network performs better or worse:
# It performs better here because its non-linear layers may have extracted hidden patterns that distinguish minority classes.

# The effect of volatility on predictions:
# High volatility causes linear models to misinterpret random price fluctuations as meaningful trend changes.

# The role of trend continuation:
# It acts as a primary momentum signal that both models rely on to achieve high accuracy during stable market conditions.

# Situations where the model fails and why:
# Due to high-volatility, entropy increases. As entropy increases, the distributions of these features begin to spread and overlap, making it mathematically impossible for a model to draw a clean boundary without misclassifying data points.
201 changes: 201 additions & 0 deletions MidEval Code/MidEval_Divij/quantvision_financial_dataset_200.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
lookback_days,asset_type,market_regime,high_volatility,trend_continuation,technical_score,edge_density,slope_strength,candlestick_variance,pattern_symmetry,future_trend
48,equity,bullish,0,1,59.99,0.504,0.298,1.572,0.768,1
38,index,bullish,1,1,78.54,0.559,0.037,0.692,0.538,1
24,equity,bullish,1,0,56.03,0.617,0.212,1.419,0.301,1
52,equity,bullish,0,0,66.51,0.36,0.347,0.699,0.498,1
17,equity,bullish,1,1,61.21,0.492,0.144,2.52,0.828,1
30,equity,bullish,1,1,73.12,0.608,0.584,1.65,0.831,1
48,index,sideways,0,0,54.92,0.434,0.395,0.252,0.553,1
28,equity,bullish,0,1,83.59,0.419,0.404,1.441,0.707,1
32,equity,bullish,0,0,53.51,0.373,-0.735,0.385,0.577,1
20,equity,sideways,0,0,48.21,0.524,-0.45,0.87,0.372,1
20,equity,sideways,0,0,73.11,0.311,-0.67,0.615,0.753,1
33,index,bullish,0,1,69.79,0.306,1.182,0.72,0.951,1
45,index,bearish,1,1,51.01,0.625,0.869,2.169,0.764,1
49,equity,bearish,1,1,50.9,0.619,0.993,2.461,0.73,1
33,crypto,bullish,0,1,60.93,0.428,-0.41,0.363,0.638,1
12,equity,sideways,0,1,78.44,0.377,1.136,1.313,0.779,1
31,crypto,sideways,0,1,69.01,0.44,1.706,0.634,0.596,1
11,equity,bullish,0,1,92.98,0.538,1.156,0.649,0.366,1
33,equity,bullish,0,1,81.86,0.601,-0.476,1.245,0.293,1
53,equity,sideways,1,1,62.57,0.417,1.084,1.186,0.58,1
39,index,bearish,0,1,84.04,0.366,0.621,1.235,0.723,1
47,index,bearish,1,1,55.04,0.511,0.084,2.065,0.75,1
11,index,bearish,1,0,26.45,0.68,-0.174,1.484,0.427,1
30,equity,bearish,0,0,45.1,0.201,-0.525,1.664,0.521,0
42,index,sideways,1,1,61.47,0.591,0.201,1.064,0.659,1
21,index,sideways,0,0,52.77,0.379,0.81,1.673,0.35,1
31,equity,sideways,0,1,78.24,0.531,0.911,0.028,0.692,1
53,equity,bearish,0,0,53.75,0.52,0.029,2.35,0.622,1
34,equity,sideways,1,1,67.48,0.579,0.245,1.497,0.557,1
58,crypto,bearish,0,0,70.01,0.274,-0.591,0.419,0.357,1
36,equity,bearish,1,0,43.72,0.504,-0.475,1.584,0.34,1
51,crypto,bullish,1,0,50.55,0.513,-1.217,1.177,0.21,1
37,equity,sideways,0,0,37.45,0.294,0.511,1.193,0.428,1
25,crypto,sideways,1,1,58.76,0.642,-0.893,2.384,0.807,1
24,index,bearish,0,1,57.68,0.284,1.027,0.503,0.726,1
56,equity,sideways,0,0,56.45,0.557,0.49,1.29,0.475,1
60,index,bearish,0,1,72.36,0.557,1.259,0.234,0.719,1
53,index,bullish,0,0,57.33,0.369,0.043,1.516,0.427,1
12,crypto,bullish,1,1,55.2,0.576,0.658,1.908,0.408,1
46,equity,bullish,0,1,92.98,0.394,0.52,1.538,0.818,1
60,equity,bullish,0,1,57.32,0.472,0.007,0.939,0.861,1
16,index,bullish,1,1,46.71,0.652,0.965,1.482,0.591,1
30,crypto,bearish,0,0,71.55,0.421,-0.048,1.408,0.477,1
18,equity,bullish,0,1,62.96,0.438,-0.105,0.346,0.664,1
48,equity,bearish,1,1,50.55,0.5,-0.033,0.829,0.753,1
27,crypto,bullish,1,1,83.03,0.585,-0.014,1.698,0.953,1
13,equity,bearish,0,1,79.86,0.413,0.831,0.805,0.874,1
34,index,bullish,1,0,39.06,0.477,0.774,1.977,0.443,1
23,crypto,bullish,1,1,62.18,0.549,0.461,2.246,0.781,1
59,index,bearish,0,1,89.46,0.369,0.703,1.267,0.888,1
18,index,bearish,0,1,76.92,0.351,1.828,1.506,0.761,1
35,equity,bullish,0,0,67.86,0.308,0.489,1.161,0.499,1
11,index,sideways,0,1,78.05,0.405,0.727,1.247,0.767,1
29,index,bullish,0,0,64.3,0.338,-0.24,0.942,0.395,1
37,equity,bearish,0,0,55.4,0.362,0.158,1.233,0.416,1
56,equity,sideways,0,1,70.11,0.486,0.567,1.083,0.54,1
16,crypto,bearish,0,1,72.67,0.451,0.646,1.163,0.746,1
53,index,bearish,0,1,77.34,0.322,1.257,0.917,0.68,1
17,equity,bearish,0,1,67.17,0.428,0.33,1.404,0.577,1
56,crypto,bearish,0,0,56.22,0.411,0.257,0.645,0.475,1
44,crypto,sideways,1,0,41.9,0.686,0.074,1.691,0.57,0
23,index,bullish,0,1,71.16,0.511,0.269,1.656,0.987,1
26,crypto,bullish,1,1,47.49,0.427,-0.211,1.226,0.852,1
45,equity,bearish,0,1,96.06,0.469,0.525,0.081,0.357,1
59,equity,sideways,1,0,37.67,0.651,-0.631,1.883,0.536,1
49,index,bearish,0,1,66.39,0.445,1.176,0.872,0.914,1
13,crypto,bullish,1,1,51.81,0.523,-0.301,2.205,0.499,1
11,crypto,bearish,0,0,61.16,0.593,0.034,0.935,0.583,1
15,equity,sideways,0,0,53.04,0.452,1.273,0.698,0.465,1
51,crypto,bullish,1,1,50.36,0.708,0.407,1.662,0.873,1
13,crypto,bullish,0,0,61.57,0.508,0.29,1.547,0.561,1
38,crypto,bearish,0,0,62.92,0.437,0.58,1.288,0.367,1
27,index,bearish,0,1,69.33,0.354,0.369,0.217,0.67,1
35,index,bullish,0,1,63.36,0.398,0.059,1.093,0.679,1
53,index,bullish,0,1,91.91,0.382,0.688,1.118,0.682,1
43,equity,bullish,0,1,73.4,0.303,0.733,0.991,0.868,1
19,crypto,bullish,1,0,32.26,0.602,-1.209,1.395,0.374,0
45,crypto,sideways,0,0,69.14,0.525,0.188,1.597,0.65,1
23,equity,sideways,0,1,61.44,0.376,1.135,1.622,0.655,1
40,equity,bullish,0,1,97.42,0.573,0.144,0.102,0.734,1
57,equity,sideways,0,1,70.8,0.275,0.818,0.601,0.711,1
24,equity,bearish,0,1,80.13,0.484,1.046,0.928,0.697,1
17,crypto,bearish,1,0,24.2,0.684,-0.107,2.174,0.498,1
23,equity,bearish,0,1,57.16,0.384,0.941,1.017,0.919,1
32,equity,bullish,0,1,83.34,0.385,0.478,0.658,0.826,1
49,equity,bullish,0,1,73.18,0.483,0.036,1.355,0.646,1
30,equity,bearish,0,0,75.42,0.44,-0.224,0.894,0.737,1
25,equity,bearish,1,1,64.85,0.39,-0.093,1.641,0.741,1
54,index,bullish,0,0,56.45,0.333,-0.04,0.986,0.554,1
27,index,sideways,0,1,87.14,0.399,1.147,1.287,0.574,1
56,equity,sideways,1,0,55.1,0.44,-1.056,1.546,0.425,1
33,index,bullish,0,0,53.04,0.362,0.072,1.343,0.397,1
35,index,sideways,1,1,49.06,0.442,-0.332,1.663,0.713,1
34,index,sideways,0,1,46.28,0.37,0.23,0.466,0.796,1
54,equity,sideways,1,0,40.62,0.523,-0.121,1.682,0.555,1
50,index,bullish,0,0,43.14,0.428,-0.595,0.492,0.738,1
38,crypto,sideways,1,1,85.98,0.543,0.567,1.72,0.567,1
24,equity,bearish,0,1,63.5,0.44,-0.076,1.415,0.717,1
54,crypto,sideways,0,0,48.22,0.431,0.333,0.463,0.308,1
10,equity,sideways,0,1,54.79,0.483,-0.175,1.182,0.562,1
34,equity,bearish,1,1,57.34,0.62,-0.109,1.285,0.89,1
16,index,sideways,1,0,38.35,0.611,0.548,1.801,0.431,1
18,index,sideways,1,1,77.38,0.798,1.054,2.13,0.579,1
33,crypto,sideways,0,1,71.68,0.428,0.394,0.065,0.381,1
10,equity,bearish,1,1,59.91,0.757,0.395,1.143,0.578,1
53,equity,bullish,0,1,68.65,0.433,1.202,0.816,0.669,1
17,index,bullish,0,1,77.86,0.393,0.941,1.158,0.496,1
33,index,sideways,0,0,50.48,0.37,-0.137,0.917,0.461,1
20,equity,bullish,1,1,66.67,0.671,-0.174,1.677,0.891,1
60,crypto,bearish,0,1,86.14,0.531,1.034,2.021,0.594,1
26,equity,bullish,0,1,74.6,0.448,1.165,0.394,0.558,1
17,equity,bearish,1,1,57.5,0.641,1.058,2.268,0.531,1
44,crypto,sideways,0,0,45.47,0.298,-0.844,0.825,0.329,1
44,index,sideways,0,1,67.25,0.276,-0.027,1.275,0.78,1
42,crypto,bullish,0,1,75.63,0.5,1.181,2.064,0.707,1
14,equity,sideways,0,0,39.67,0.39,-0.776,1.344,0.644,1
51,index,bearish,0,1,78.32,0.46,1.219,1.186,1.0,1
48,index,bullish,0,1,72.08,0.343,0.493,1.8,0.425,1
50,crypto,sideways,0,1,68.51,0.533,0.34,1.562,0.757,1
37,equity,bearish,0,1,63.41,0.277,0.703,0.6,0.532,1
16,equity,bullish,0,1,65.24,0.289,-0.073,1.147,0.818,1
18,equity,sideways,1,1,65.97,0.666,0.612,0.841,0.659,1
17,equity,bullish,0,0,53.72,0.191,0.845,0.73,0.504,1
21,equity,bullish,0,1,64.99,0.43,1.035,1.157,0.508,1
43,equity,bearish,0,1,74.69,0.391,0.477,0.699,0.636,1
42,equity,bullish,0,0,60.08,0.341,-0.769,1.137,0.513,1
57,crypto,bearish,0,1,57.51,0.384,-0.15,0.993,0.903,1
32,crypto,bearish,1,0,50.71,0.482,-1.065,1.968,0.381,0
33,equity,sideways,0,1,95.02,0.523,0.594,0.788,0.617,1
46,equity,sideways,0,1,74.7,0.544,0.657,0.53,0.842,1
44,index,sideways,0,0,38.01,0.345,0.434,1.739,0.371,1
53,equity,sideways,0,1,71.77,0.422,-0.298,0.752,0.871,1
49,equity,bearish,1,1,41.69,0.444,0.856,2.03,0.699,1
31,equity,bullish,0,1,100.0,0.486,0.947,1.718,0.745,1
36,equity,bearish,0,1,92.36,0.484,0.437,1.081,0.755,1
44,crypto,bearish,0,0,48.34,0.376,-0.595,0.572,0.408,1
10,equity,bullish,0,1,47.54,0.401,1.225,0.911,0.758,1
44,index,bearish,1,1,51.22,0.542,0.05,2.209,0.584,1
46,index,bearish,0,1,68.19,0.271,0.59,1.103,0.625,1
56,equity,sideways,1,0,27.38,0.674,-0.208,1.097,0.584,0
23,equity,sideways,0,1,69.31,0.339,0.143,1.298,0.744,1
12,equity,bearish,1,0,43.12,0.489,-0.541,2.085,0.489,0
10,index,bullish,0,1,71.25,0.388,1.033,0.822,0.511,1
14,equity,bullish,0,0,57.3,0.48,0.382,1.305,0.349,1
35,equity,sideways,1,0,35.34,0.503,-0.013,1.823,0.542,1
23,index,sideways,1,0,36.47,0.394,-0.978,1.601,0.61,0
48,equity,bullish,1,0,45.46,0.479,-0.518,1.053,0.334,1
36,equity,bearish,0,1,63.69,0.434,0.402,1.539,0.574,1
18,equity,bullish,1,1,69.07,0.725,0.413,2.08,0.72,1
24,equity,bullish,0,1,70.36,0.299,0.768,1.292,0.717,1
24,crypto,bullish,1,1,78.65,0.446,0.278,2.472,0.456,1
35,equity,bullish,0,1,78.2,0.279,1.833,1.473,0.724,1
51,index,sideways,1,1,71.04,0.419,0.055,2.043,0.61,1
22,equity,bearish,1,1,61.33,0.646,-0.004,0.593,0.946,1
60,index,bullish,1,1,61.57,0.67,-0.378,2.298,0.737,1
41,equity,sideways,0,0,72.31,0.414,-0.769,1.042,0.563,1
48,equity,sideways,0,1,66.22,0.363,-0.01,1.156,0.767,1
58,crypto,sideways,1,0,50.47,0.693,-0.759,1.86,0.318,1
41,crypto,bullish,0,0,52.34,0.414,0.655,1.387,0.792,1
13,crypto,bullish,1,0,42.31,0.637,-0.38,2.261,0.257,1
39,equity,bullish,1,0,33.31,0.509,-0.303,2.017,0.619,0
46,equity,bullish,0,0,47.57,0.404,-0.048,1.238,0.593,1
32,equity,bullish,1,0,35.72,0.451,-0.217,1.816,0.428,1
48,index,bearish,0,0,60.94,0.45,0.701,0.676,0.6,1
54,equity,bullish,1,1,70.4,0.565,-0.797,1.556,0.652,1
24,crypto,bullish,1,1,59.05,0.478,0.809,1.229,0.599,1
52,equity,bullish,0,1,72.3,0.33,-0.658,1.605,0.77,1
38,crypto,bullish,0,1,68.48,0.529,0.614,1.31,0.549,1
45,equity,bullish,1,0,36.89,0.708,0.696,1.471,0.466,0
22,crypto,bearish,0,0,63.62,0.383,0.34,0.821,0.411,1
41,equity,bullish,0,0,61.53,0.405,0.187,0.803,0.45,1
16,equity,bullish,0,1,51.07,0.432,1.601,0.794,0.765,1
60,index,bearish,0,0,52.17,0.412,-0.352,0.278,0.411,1
31,equity,bearish,0,0,46.18,0.266,0.217,0.169,0.471,1
37,equity,bullish,0,0,51.09,0.434,0.289,1.015,0.425,1
11,crypto,bullish,0,0,48.3,0.233,-0.261,1.538,0.717,1
51,index,bullish,1,0,44.54,0.491,-0.617,1.431,0.551,1
54,equity,sideways,0,1,66.7,0.44,0.328,1.152,0.733,1
15,equity,bearish,0,0,51.49,0.448,0.044,1.367,0.603,1
37,equity,bearish,0,1,81.07,0.335,0.873,0.503,0.611,1
37,index,sideways,0,1,75.57,0.363,0.662,0.99,0.829,1
53,equity,bullish,0,0,47.96,0.352,0.355,0.667,0.552,1
53,equity,sideways,0,1,64.44,0.392,-0.385,1.803,0.466,1
29,equity,bearish,1,0,49.92,0.548,-0.509,2.481,0.286,1
39,equity,bullish,0,1,74.9,0.453,0.088,0.504,0.614,1
20,index,bearish,1,0,38.96,0.509,-0.249,1.893,0.302,0
37,equity,sideways,1,1,57.66,0.58,0.343,2.234,0.664,1
34,crypto,bearish,0,0,73.47,0.441,-0.058,1.424,0.348,1
48,equity,sideways,1,0,39.13,0.566,-0.145,1.741,0.485,0
42,equity,bullish,1,1,79.11,0.529,0.699,2.353,0.912,1
10,equity,sideways,0,1,81.04,0.414,0.57,0.548,0.693,1
36,equity,bullish,0,0,72.25,0.46,-0.526,0.848,0.455,1
22,crypto,sideways,1,1,53.71,0.617,-0.591,1.261,0.758,1
50,index,bearish,1,1,58.31,0.695,0.218,2.091,0.596,1
12,index,bullish,0,1,65.51,0.321,0.721,0.709,0.827,1
48,index,bullish,1,1,71.27,0.515,-0.285,1.614,0.774,0
15,equity,bullish,1,0,39.32,0.421,-0.037,2.009,0.506,1
17,index,bullish,1,0,52.31,0.624,-0.629,2.049,0.523,0
36,equity,bullish,1,1,66.78,0.523,-0.628,1.246,1.0,1
18,index,bearish,1,1,59.52,0.566,0.828,2.228,0.841,1