From 7ce85bea30c6e917db9e0564374d599c18982ce0 Mon Sep 17 00:00:00 2001 From: JapneetSingh24 Date: Mon, 22 Dec 2025 23:34:49 +0530 Subject: [PATCH] git add JapneetSingh_MidEval.ipynb --- MidEval Code/JapneetSingh_MidEval.ipynb | 1 + 1 file changed, 1 insertion(+) create mode 100644 MidEval Code/JapneetSingh_MidEval.ipynb diff --git a/MidEval Code/JapneetSingh_MidEval.ipynb b/MidEval Code/JapneetSingh_MidEval.ipynb new file mode 100644 index 0000000..38a2af5 --- /dev/null +++ b/MidEval Code/JapneetSingh_MidEval.ipynb @@ -0,0 +1 @@ +{"cells":[{"cell_type":"code","execution_count":33,"id":"cffdaff2","metadata":{"id":"cffdaff2","executionInfo":{"status":"ok","timestamp":1766422198008,"user_tz":-330,"elapsed":3,"user":{"displayName":"Japneet Singh","userId":"15615362919469340316"}}},"outputs":[],"source":["\n","import pandas as pd\n","import numpy as np\n","\n","from sklearn.model_selection import train_test_split\n","from sklearn.preprocessing import StandardScaler, OneHotEncoder\n","from sklearn.compose import ColumnTransformer\n","\n","from sklearn.linear_model import LogisticRegression\n","from sklearn.neural_network import MLPClassifier\n","\n","from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix, classification_report\n"]},{"cell_type":"code","execution_count":34,"id":"8e61b444","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":226},"id":"8e61b444","executionInfo":{"status":"ok","timestamp":1766422200472,"user_tz":-330,"elapsed":48,"user":{"displayName":"Japneet Singh","userId":"15615362919469340316"}},"outputId":"d48b242b-1a6a-470d-9d1d-c2bcf556e933"},"outputs":[{"output_type":"execute_result","data":{"text/plain":[" lookback_days asset_type market_regime high_volatility \\\n","0 48 equity bullish 0 \n","1 38 index bullish 1 \n","2 24 equity bullish 1 \n","3 52 equity bullish 0 \n","4 17 equity bullish 1 \n","\n"," trend_continuation technical_score edge_density slope_strength \\\n","0 1 59.99 0.504 0.298 \n","1 1 78.54 0.559 0.037 \n","2 0 56.03 0.617 0.212 \n","3 0 66.51 0.360 0.347 \n","4 1 61.21 0.492 0.144 \n","\n"," candlestick_variance pattern_symmetry future_trend \n","0 1.572 0.768 1 \n","1 0.692 0.538 1 \n","2 1.419 0.301 1 \n","3 0.699 0.498 1 \n","4 2.520 0.828 1 "],"text/html":["\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
lookback_daysasset_typemarket_regimehigh_volatilitytrend_continuationtechnical_scoreedge_densityslope_strengthcandlestick_variancepattern_symmetryfuture_trend
048equitybullish0159.990.5040.2981.5720.7681
138indexbullish1178.540.5590.0370.6920.5381
224equitybullish1056.030.6170.2121.4190.3011
352equitybullish0066.510.3600.3470.6990.4981
417equitybullish1161.210.4920.1442.5200.8281
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","\n","
\n","
\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"df","summary":"{\n \"name\": \"df\",\n \"rows\": 200,\n \"fields\": [\n {\n \"column\": \"lookback_days\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 14,\n \"min\": 10,\n \"max\": 60,\n \"num_unique_values\": 50,\n \"samples\": [\n 31,\n 15,\n 18\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"asset_type\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"equity\",\n \"index\",\n \"crypto\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"market_regime\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"bullish\",\n \"sideways\",\n \"bearish\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"high_volatility\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 1,\n \"num_unique_values\": 2,\n \"samples\": [\n 1,\n 0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"trend_continuation\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 1,\n \"num_unique_values\": 2,\n \"samples\": [\n 0,\n 1\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"technical_score\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 15.028468080337015,\n \"min\": 24.2,\n \"max\": 100.0,\n \"num_unique_values\": 195,\n \"samples\": [\n 71.25,\n 69.01\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"edge_density\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.11605043079384576,\n \"min\": 0.191,\n \"max\": 0.798,\n \"num_unique_values\": 159,\n \"samples\": [\n 0.384,\n 0.695\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"slope_strength\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.6199660874985351,\n \"min\": -1.217,\n \"max\": 1.833,\n \"num_unique_values\": 189,\n \"samples\": [\n -0.285,\n 0.217\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"candlestick_variance\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.5755348790123836,\n \"min\": 0.028,\n \"max\": 2.52,\n \"num_unique_values\": 195,\n \"samples\": [\n 2.085,\n 0.634\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"pattern_symmetry\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.17357671352283097,\n \"min\": 0.21,\n \"max\": 1.0,\n \"num_unique_values\": 172,\n \"samples\": [\n 0.919,\n 0.318\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"future_trend\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 1,\n \"num_unique_values\": 2,\n \"samples\": [\n 0,\n 1\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"}},"metadata":{},"execution_count":34}],"source":["\n","df = pd.read_csv(\"/content/quantvision_financial_dataset_200.csv\")\n","df.head()\n"]},{"cell_type":"code","execution_count":35,"id":"bdb7c96c","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"collapsed":true,"id":"bdb7c96c","executionInfo":{"status":"ok","timestamp":1766422202310,"user_tz":-330,"elapsed":14,"user":{"displayName":"Japneet Singh","userId":"15615362919469340316"}},"outputId":"fb503c56-423f-4541-b984-91a22f8d4e6e"},"outputs":[{"output_type":"stream","name":"stdout","text":["\n","RangeIndex: 200 entries, 0 to 199\n","Data columns (total 11 columns):\n"," # Column Non-Null Count Dtype \n","--- ------ -------------- ----- \n"," 0 lookback_days 200 non-null int64 \n"," 1 asset_type 200 non-null object \n"," 2 market_regime 200 non-null object \n"," 3 high_volatility 200 non-null int64 \n"," 4 trend_continuation 200 non-null int64 \n"," 5 technical_score 200 non-null float64\n"," 6 edge_density 200 non-null float64\n"," 7 slope_strength 200 non-null float64\n"," 8 candlestick_variance 200 non-null float64\n"," 9 pattern_symmetry 200 non-null float64\n"," 10 future_trend 200 non-null int64 \n","dtypes: float64(5), int64(4), object(2)\n","memory usage: 17.3+ KB\n"]}],"source":["\n","df.info()\n"]},{"cell_type":"code","execution_count":24,"id":"fafb8047","metadata":{"id":"fafb8047","executionInfo":{"status":"ok","timestamp":1766421381655,"user_tz":-330,"elapsed":46,"user":{"displayName":"Japneet Singh","userId":"15615362919469340316"}}},"outputs":[],"source":["\n","X = df.drop(\"future_trend\", axis=1)\n","y = df[\"future_trend\"]\n"]},{"cell_type":"code","execution_count":25,"id":"b4b7fb8d","metadata":{"id":"b4b7fb8d","executionInfo":{"status":"ok","timestamp":1766421597937,"user_tz":-330,"elapsed":4,"user":{"displayName":"Japneet Singh","userId":"15615362919469340316"}}},"outputs":[],"source":["#distributing all the features into 3 broad categories to help with pre procession\n","categorical_features = [\"asset_type\", \"market_regime\"]\n","\n","numerical_features = [\n"," \"lookback_days\",\n"," \"technical_score\",\n"," \"edge_density\",\n"," \"slope_strength\",\n"," \"candlestick_variance\",\n"," \"pattern_symmetry\"\n","]\n","\n","binary_features = [\"high_volatility\", \"trend_continuation\"]\n","\n","preprocessor = ColumnTransformer(\n"," transformers=[\n"," (\"num\", StandardScaler(), numerical_features),\n"," (\"cat\", OneHotEncoder(drop=\"first\"), categorical_features),\n"," (\"bin\", \"passthrough\", binary_features)\n"," ]\n",")\n"]},{"cell_type":"code","execution_count":75,"id":"5dd4898f","metadata":{"id":"5dd4898f","executionInfo":{"status":"ok","timestamp":1766425774529,"user_tz":-330,"elapsed":13,"user":{"displayName":"Japneet Singh","userId":"15615362919469340316"}}},"outputs":[],"source":["from numpy.random.mtrand import ranf\n","\n","X_train, X_test, y_train, y_test = train_test_split(\n"," X, y,\n"," test_size=0.2,\n"," random_state=4,\n"," stratify=y\n",")\n"]},{"cell_type":"code","execution_count":27,"id":"8e61c934","metadata":{"id":"8e61c934","executionInfo":{"status":"ok","timestamp":1766421645595,"user_tz":-330,"elapsed":8,"user":{"displayName":"Japneet Singh","userId":"15615362919469340316"}}},"outputs":[],"source":["\n","X_train_processed = preprocessor.fit_transform(X_train)\n","X_test_processed = preprocessor.transform(X_test)\n"]},{"cell_type":"code","execution_count":66,"id":"bb62c464","metadata":{"id":"bb62c464","executionInfo":{"status":"ok","timestamp":1766425739299,"user_tz":-330,"elapsed":15,"user":{"displayName":"Japneet Singh","userId":"15615362919469340316"}}},"outputs":[],"source":["\n","log_reg = LogisticRegression(max_iter=100)\n","log_reg.fit(X_train_processed, y_train)\n","\n","y_pred_lr = log_reg.predict(X_test_processed)\n"]},{"cell_type":"code","execution_count":76,"id":"555eec0b","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"555eec0b","executionInfo":{"status":"ok","timestamp":1766425777602,"user_tz":-330,"elapsed":8,"user":{"displayName":"Japneet Singh","userId":"15615362919469340316"}},"outputId":"de5f0792-a32a-4889-a759-335477da02df"},"outputs":[{"output_type":"stream","name":"stdout","text":["Accuracy: 0.925\n","Precision: 0.925\n","Recall: 1.0\n","F1 Score: 0.961038961038961\n","Confusion Matrix:\n"," [[ 0 3]\n"," [ 0 37]]\n"]}],"source":["\n","print(\"Accuracy:\", accuracy_score(y_test, y_pred_lr))\n","print(\"Precision:\", precision_score(y_test, y_pred_lr))\n","print(\"Recall:\", recall_score(y_test, y_pred_lr))\n","print(\"F1 Score:\", f1_score(y_test, y_pred_lr))\n","print(\"Confusion Matrix:\\n\", confusion_matrix(y_test, y_pred_lr))\n"]},{"cell_type":"code","source":[],"metadata":{"id":"s18rSCuQLtCZ"},"id":"s18rSCuQLtCZ","execution_count":null,"outputs":[]},{"cell_type":"code","execution_count":77,"id":"7cf03bb0","metadata":{"id":"7cf03bb0","executionInfo":{"status":"ok","timestamp":1766425782098,"user_tz":-330,"elapsed":330,"user":{"displayName":"Japneet Singh","userId":"15615362919469340316"}}},"outputs":[],"source":["\n","mlp = MLPClassifier(\n"," hidden_layer_sizes=(64, 32),\n"," activation=\"relu\",\n"," max_iter=1000,\n"," random_state=42\n",")\n","\n","mlp.fit(X_train_processed, y_train)\n","y_pred_mlp = mlp.predict(X_test_processed)\n"]},{"cell_type":"code","execution_count":55,"id":"760f7f2b","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"760f7f2b","executionInfo":{"status":"ok","timestamp":1766425673240,"user_tz":-330,"elapsed":72,"user":{"displayName":"Japneet Singh","userId":"15615362919469340316"}},"outputId":"e7b5734f-28e1-4f9d-f660-0fb7ab4b0101"},"outputs":[{"output_type":"stream","name":"stdout","text":["Accuracy: 0.9\n","Precision: 0.9230769230769231\n","Recall: 0.972972972972973\n","F1 Score: 0.9473684210526315\n","Confusion Matrix:\n"," [[ 0 3]\n"," [ 1 36]]\n"]}],"source":["\n","print(\"Accuracy:\", accuracy_score(y_test, y_pred_mlp))\n","print(\"Precision:\", precision_score(y_test, y_pred_mlp))\n","print(\"Recall:\", recall_score(y_test, y_pred_mlp))\n","print(\"F1 Score:\", f1_score(y_test, y_pred_mlp))\n","print(\"Confusion Matrix:\\n\", confusion_matrix(y_test, y_pred_mlp))\n"]},{"cell_type":"code","execution_count":51,"id":"0582366a","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"collapsed":true,"id":"0582366a","executionInfo":{"status":"ok","timestamp":1766424848620,"user_tz":-330,"elapsed":220,"user":{"displayName":"Japneet Singh","userId":"15615362919469340316"}},"outputId":"b6af6bfc-7c56-4b38-cfba-74eb938b9d00"},"outputs":[{"output_type":"stream","name":"stdout","text":["Logistic Regression Report\n"," precision recall f1-score support\n","\n"," 0 0.00 0.00 0.00 3\n"," 1 0.93 1.00 0.96 37\n","\n"," accuracy 0.93 40\n"," macro avg 0.46 0.50 0.48 40\n","weighted avg 0.86 0.93 0.89 40\n","\n","Neural Network Report\n"," precision recall f1-score support\n","\n"," 0 0.00 0.00 0.00 3\n"," 1 0.92 0.97 0.95 37\n","\n"," accuracy 0.90 40\n"," macro avg 0.46 0.49 0.47 40\n","weighted avg 0.85 0.90 0.88 40\n","\n"]},{"output_type":"stream","name":"stderr","text":["/usr/local/lib/python3.12/dist-packages/sklearn/metrics/_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n"," _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n","/usr/local/lib/python3.12/dist-packages/sklearn/metrics/_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n"," _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n","/usr/local/lib/python3.12/dist-packages/sklearn/metrics/_classification.py:1565: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n"," _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n"]}],"source":["\n","print(\"Logistic Regression Report\")\n","print(classification_report(y_test, y_pred_lr))\n","\n","print(\"Neural Network Report\")\n","print(classification_report(y_test, y_pred_mlp))\n"]}],"metadata":{"colab":{"provenance":[]},"language_info":{"name":"python"},"kernelspec":{"name":"python3","display_name":"Python 3"}},"nbformat":4,"nbformat_minor":5} \ No newline at end of file