simran19 commited on
Commit
057c687
·
verified ·
1 Parent(s): 6abe641

Upload 13 files

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ static/background.mp4 filter=lfs diff=lfs merge=lfs -text
Dockerfile ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.9
2
+
3
+ RUN useradd -m -u 1000 user
4
+ USER user
5
+ ENV PATH="/home/user/.local/bin:$PATH"
6
+
7
+ WORKDIR /app
8
+
9
+ COPY --chown=user ./requirements.txt requirements.txt
10
+ RUN pip install --no-cache-dir --upgrade -r requirements.txt
11
+
12
+ COPY --chown=user . /app
13
+ CMD ["gunicorn", "app:app", "-b", "0.0.0.0:7860"]
README.md CHANGED
@@ -1,10 +1,10 @@
1
- ---
2
- title: Crypto
3
- emoji: 📈
4
- colorFrom: gray
5
- colorTo: purple
6
- sdk: docker
7
- pinned: false
8
- ---
9
-
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
+ ---
2
+ title: Crypto
3
+ emoji: 😻
4
+ colorFrom: gray
5
+ colorTo: gray
6
+ sdk: docker
7
+ pinned: false
8
+ ---
9
+
10
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import joblib
2
+ from sklearn.preprocessing import StandardScaler
3
+ from flask import Flask,render_template,request, redirect, url_for
4
+ import numpy as np
5
+ import requests
6
+
7
+
8
+ app=Flask(__name__)
9
+
10
+ model=joblib.load('crypto.pkl')
11
+ scaler_x=joblib.load('scaler_x.pkl')
12
+
13
+ @app.route('/')
14
+ def home():
15
+ print("HOME ROUTE ACCESSED!") # Debug print
16
+ try:
17
+ response = requests.get('https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd', timeout=5)
18
+ response.raise_for_status()
19
+ data = response.json()
20
+ btc_price = data['bitcoin']['usd']
21
+ print(f"BTC Price: {btc_price}") # Debug print
22
+ except Exception as e:
23
+ print("Error fetching price:", e)
24
+ btc_price = "Error fetching price"
25
+
26
+ print("Rendering home.html") # Debug print
27
+ return render_template('home.html', btc_price=btc_price)
28
+
29
+ @app.route('/about')
30
+ def about():
31
+ return render_template('about.html')
32
+
33
+ @app.route('/canva')
34
+ def canva():
35
+ return render.template('canva.html')
36
+
37
+ @app.route('/start')
38
+ def startt():
39
+ return render_template('index.html')
40
+
41
+ @app.route('/predict',methods=['POST','GET'])
42
+ def pred():
43
+ Open=float(request.form.get('open'))
44
+ High=float(request.form.get('high'))
45
+ Low=float(request.form.get('low'))
46
+ Close=float(request.form.get('close'))
47
+ Volume=float(request.form.get('volume'))
48
+
49
+ user_input=[[Open,High,Low,Close,Volume]]
50
+ scaled_input=scaler_x.transform(user_input)
51
+ prediction=model.predict(scaled_input)
52
+
53
+ return render_template('index.html',result=prediction[0])
54
+
55
+ if __name__=='__main__':
56
+ app.run(debug=True)
crypto.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:16b04c9fcd2c47cbc8ff9442639a9a93fd7e5c313ab296aacea1cfaf95b7d4df
3
+ size 625
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ numpy
2
+ pandas
3
+ flask
4
+ scikit-learn
5
+ joblib
6
+ gunicorn
7
+ requests
scaler_x.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e6dcc2d7d3f56a07c4d7318a05ea6c86d0304ae0fe2bf1c8d1637b63d7cef1d6
3
+ size 1007
scaler_x_full.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0efa805a260525a8dc2a305bf5850a8ecea073e5d7122965f1982df31706432a
3
+ size 129
static/background.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:56a274d6bb2edb570a45fcf20c748dad57f6f08eacf4aafdfa654c1b7781f38c
3
+ size 625407
static/index.css ADDED
@@ -0,0 +1,163 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ html, body {
2
+ height: 100%;
3
+ margin: 0;
4
+ font-family: Arial, sans-serif;
5
+ background-color: #f0f4f8;
6
+ }
7
+
8
+ body {
9
+ display: flex;
10
+ justify-content: center;
11
+ align-items: center;
12
+ min-height: 100vh;
13
+ padding: 20px;
14
+ background-image: url('https://cdn-uploads.huggingface.co/production/uploads/68c9040752743c0e389c6079/godxRSU1oajLeS-WEFT1z.gif')
15
+
16
+ ');
17
+ background-size: cover;
18
+ }
19
+
20
+ /* Video background with fallback image */
21
+ .video-container {
22
+ position: fixed;
23
+ top: 0;
24
+ left: 0;
25
+ width: 100%;
26
+ height: 100%;
27
+ z-index: -2;
28
+ overflow: hidden;
29
+
30
+ background-position: center;
31
+ }
32
+
33
+ #backgroundVideo {
34
+ position: absolute;
35
+ top: 50%;
36
+ left: 50%;
37
+ min-width: 100%;
38
+ min-height: 100%;
39
+ width: auto;
40
+ height: auto;
41
+ transform: translate(-50%, -50%);
42
+ object-fit: cover;
43
+ }
44
+
45
+ /* Overlay to darken video */
46
+ .video-overlay {
47
+ position: fixed;
48
+ top: 0;
49
+ left: 0;
50
+ width: 100%;
51
+ height: 100%;
52
+ background-color: rgba(0, 0, 0, 0.4);
53
+ z-index: -1;
54
+ }
55
+
56
+ /* HOME link at top right */
57
+ a {
58
+ position: fixed;
59
+ top: 20px;
60
+ right: 20px;
61
+ z-index: 9999; /* very high so it’s on top */
62
+ font-size: 18px;
63
+ padding: 10px 20px;
64
+ background-color: white;
65
+ color: #1a73e8;
66
+ text-decoration: none;
67
+ border-radius: 5px;
68
+ border: 1px solid #1a73e8;
69
+ font-weight: bold;
70
+ box-shadow: 1px 1px 4px rgba(0,0,0,0.2);
71
+ }
72
+
73
+
74
+
75
+ /* Form container */
76
+ .page-container {
77
+ width: 400px;
78
+ background-color: white;
79
+ border-radius: 10px;
80
+ padding: 30px 40px;
81
+ box-sizing: border-box;
82
+ color: black;
83
+ display: flex;
84
+ flex-direction: column;
85
+ align-items: flex-start;
86
+ }
87
+
88
+ /* Heading */
89
+ .page-container h1 {
90
+ font-weight: bold;
91
+ font-size: 28px;
92
+ margin-bottom: 25px;
93
+ color: #1a73e8;
94
+ }
95
+
96
+ /* Labels and inputs */
97
+ .form-group label {
98
+ font-size: 20px;
99
+ color: #333;
100
+ margin-bottom: 5px;
101
+ display: block;
102
+ }
103
+
104
+ .form-group input {
105
+ width: 100%;
106
+ padding: 8px;
107
+ margin-bottom: 15px;
108
+ font-size: 16px;
109
+ border: 1px solid #ccc;
110
+ border-radius: 4px;
111
+ }
112
+
113
+ /* Buttons container */
114
+ .btn {
115
+ flex:1;
116
+ flex-direction:column;
117
+ padding: 14px 18px;
118
+ border: none;
119
+ border-radius: 8px;
120
+ font-size: 16px;
121
+ font-weight: 600;
122
+ cursor: pointer;
123
+ transition: all 0.3s ease;
124
+ text-decoration: none;
125
+ align-items: center;
126
+ justify-content: center;
127
+ gap: 8px;
128
+ }
129
+ .btn-primary {
130
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
131
+ color: white;
132
+ }
133
+ .btn-primary:hover:not(:disabled) {
134
+ transform: translateY(-2px);
135
+ box-shadow: 0 5px 15px rgba(102, 126, 234, 0.4);
136
+ }
137
+ .btn-secondary {
138
+ background: white;
139
+ color: #333;
140
+ border: 2px solid #e1e5e9;
141
+ }
142
+ .btn-secondary:hover {
143
+ background: #f8f9fa;
144
+ border-color: #333;
145
+ }
146
+ .btn:disabled {
147
+ opacity: 0.6;
148
+ cursor: not-allowed;
149
+ }
150
+
151
+ /* Footer */
152
+ .footer {
153
+ text-align: center;
154
+ margin-top: 2rem;
155
+ padding-top: 1.5rem;
156
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
157
+ }
158
+
159
+ .footer p {
160
+ color: rgba(255, 255, 255, 0.7);
161
+ font-size: 0.9rem;
162
+ font-weight: 500;
163
+ }
templates/about.html ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>About - Crypto Price Prediction Project</title>
7
+ <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
8
+ <style>
9
+ body {
10
+ background-color: #f4f4f4;
11
+ font-family: Arial, sans-serif;
12
+ }
13
+ .container {
14
+ margin-top: 50px;
15
+ }
16
+ .btn-primary {
17
+ margin-top: 20px;
18
+ }
19
+ .project-description {
20
+ margin-bottom: 30px;
21
+ }
22
+ </style>
23
+ </head>
24
+ <body>
25
+ <div class="container">
26
+ <h2 class="mt-5">Crypto Price Prediction Project</h2>
27
+
28
+ <div class="project-description">
29
+ <p>This project aims to predict the next day’s closing price of cryptocurrencies by analyzing historical market data, including open, high, low, close prices, and trading volume</p><br><br>
30
+ <p>Using a comprehensive dataset that captures daily market movements, we apply advanced machine learning techniques to uncover patterns and trends that help forecast future price fluctuations.
31
+ By leveraging data points such as previous day prices and volume, the model strives to provide accurate and timely predictions that can assist traders and investors in making informed decisions in the highly volatile cryptocurrency market.</p><br><br>
32
+ <p>Our goal is to enhance market understanding and support strategic investment through data-driven insights.</p><br><br>
33
+
34
+ <h4>Link to Google Colab Notebook</h4>
35
+ <p>You can view and edit the Google Colab notebook used to train the machine learning model by clicking the link below:</p>
36
+
37
+ <a href="https://colab.research.google.com/drive/1fjgR5q1BTnk67vLxUNEvrZx-5pIF5MyE#scrollTo=P6Rt1UvgAQeU" class="btn btn-primary" target="_blank">Open Google Colab Notebook</a>
38
+
39
+ <br><br>
40
+ <a href="/" class="btn btn-secondary">Back to Home</a>
41
+ </div>
42
+ </body>
43
+ </html>
templates/canva.html ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <html>
2
+ <head>
3
+ <title>Canva Poster Showcase</title>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ </head>
7
+
8
+ <body>
9
+ <h1 style="text-align:center;">Your First Look at "COINSIGHT AI PROJECT": The Poster Says It All</h1>
10
+
11
+ <!-- Make the image clickable to open in a new tab -->
12
+ <a href="https://cdn-uploads.huggingface.co/production/uploads/68c9040752743c0e389c6079/8QNXmSCVwd5DrgnZPb1Io.png" target="_blank">
13
+ <img
14
+ src="https://cdn-uploads.huggingface.co/production/uploads/68c9040752743c0e389c6079/8QNXmSCVwd5DrgnZPb1Io.png"
15
+ alt="poster_img"
16
+ style="display:block; margin:auto; max-width:90%; height:auto; cursor: pointer;"
17
+ >
18
+ </a>
19
+
20
+ <p style="text-align:center;">
21
+ <a href="https://drive.google.com/file/d/1C-7fv3XZsAhIZYcb5UxjLAL7XLM-tkuc/view?usp=sharing" target="_blank">
22
+ View Poster as PDF
23
+ </a>
24
+ </p>
25
+ </body>
26
+ </html>
templates/home.html ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Home - COINSIGHT AI</title>
7
+ <style>
8
+ body {
9
+ font-family: Arial, sans-serif;
10
+ background-color: #f0f4f8;
11
+ margin: 0;
12
+ padding: 0;
13
+ display: flex;
14
+ flex-direction: column;
15
+ align-items: center;
16
+ justify-content: center;
17
+ height: 100vh;
18
+ }
19
+ video {
20
+ position: fixed;
21
+ top: 0;
22
+ left: 0;
23
+ min-width: 100%;
24
+ min-height: 100%;
25
+ object-fit: cover;
26
+ z-index: -1;
27
+ filter: brightness(0.6);
28
+ }
29
+ .container {
30
+ background: white;
31
+ padding: 40px 60px;
32
+ border-radius: 10px;
33
+ box-shadow: 0 4px 15px rgba(0,0,0,0.1);
34
+ text-align: center;
35
+ max-width: 400px;
36
+ }
37
+ .btn-primary {
38
+ text-decoration: none;
39
+ background-color: #1a73e8;
40
+ color: white;
41
+ padding: 12px 25px;
42
+ border-radius: 5px;
43
+ font-weight: bold;
44
+ font-size: 16px;
45
+ display: inline-block;
46
+ margin-top: 20px;
47
+ }
48
+ .footer {
49
+ margin-top: 30px;
50
+ font-size: 14px;
51
+ color: #888;
52
+ }
53
+ </style>
54
+ </head>
55
+ <body>
56
+
57
+ <video autoplay muted loop playsinline>
58
+ <source src="https://dl.statusvideoz.com/uploads/file_id627072_2025.mp4" type="video/mp4" />
59
+ <!-- Fallback text for unsupported browsers -->
60
+ Your browser does not support the video tag.
61
+ </video>
62
+
63
+ <div class="container">
64
+ <h1 style="color: #1a73e8;">Welcome to COINSIGHT AI</h1>
65
+ <p style="color: #555; font-size: 18px;">
66
+ Your trusted crypto price predictor.
67
+ </p>
68
+ <p>Latest Bitcoin Price (USD): <strong>{{ btc_price }}</strong></p>
69
+ <p>Fetched using CoinGecko API</p>
70
+
71
+ <a href="/start" class="btn-primary">Start Prediction</a>
72
+
73
+ <input
74
+ type="button"
75
+ value="ABOUT"
76
+ onclick="window.location.href='/about' " />
77
+ <input
78
+ type="button"
79
+ value="POSTER"
80
+ onclick="window.location.href='/canva' " />
81
+
82
+
83
+ <div class="footer">
84
+ <p>&copy; Made By Gursimranjot Kaur</p>
85
+ </div>
86
+ </div>
87
+ </body>
88
+ </html>
templates/index.html ADDED
@@ -0,0 +1,173 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>COINSIGHT AI</title>
6
+ <!-- <link rel="stylesheet" href="{{ url_for('static', filename='index.css') }}"> -->
7
+ <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
8
+
9
+ <style>
10
+ body, html {
11
+ margin: 0;
12
+ padding: 0;
13
+ height: 100%;
14
+ font-family: Arial, sans-serif;
15
+ text-align: center;
16
+ }
17
+
18
+ .page-container {
19
+ position: relative;
20
+ z-index: 2;
21
+ display: flex;
22
+ flex-direction: column;
23
+ align-items: center;
24
+ justify-content: center;
25
+ min-height: 100vh;
26
+ padding: 20px;
27
+ }
28
+
29
+ .form-group {
30
+ margin: 20px 0;
31
+ }
32
+
33
+ input {
34
+ width: 300px;
35
+ padding: 10px;
36
+ margin-bottom: 15px;
37
+ border-radius: 5px;
38
+ border: 1px solid #ccc;
39
+ }
40
+
41
+ .button-group {
42
+ margin-top: 20px;
43
+ }
44
+
45
+ .btn {
46
+ padding: 10px 20px;
47
+ border: none;
48
+ border-radius: 5px;
49
+ font-size: 18px;
50
+ cursor: pointer;
51
+ margin: 5px;
52
+ }
53
+
54
+ .btn-primary {
55
+ background-color: navy;
56
+ color: white;
57
+ }
58
+
59
+ .btn-secondary {
60
+ background-color: gray;
61
+ color: white;
62
+ }
63
+
64
+ .video-container {
65
+ position: fixed;
66
+ top: 0; left: 0;
67
+ width: 100%;
68
+ height: 100%;
69
+ z-index: -2;
70
+ overflow: hidden;
71
+ }
72
+
73
+ video {
74
+ width: 100%;
75
+ height: 100%;
76
+ object-fit: cover;
77
+ }
78
+
79
+ .video-overlay {
80
+ position: fixed;
81
+ top: 0; left: 0;
82
+ width: 100%;
83
+ height: 100%;
84
+ background: rgba(0, 0, 0, 0.4);
85
+ z-index: -1;
86
+ }
87
+
88
+ .footer {
89
+ margin-top: 40px;
90
+ font-size: 16px;
91
+ color: white;
92
+ }
93
+
94
+ h1, h2 {
95
+ text-align: center;
96
+ }
97
+
98
+
99
+ </style>
100
+ </head>
101
+
102
+ <body>
103
+
104
+ <input
105
+ type="button"
106
+ value="Go to Home"
107
+ onclick="window.location.href='/'" />
108
+
109
+
110
+
111
+ <!-- Background Video -->
112
+ <div class="video-container">
113
+ <video
114
+ id="backgroundVideo"
115
+ autoplay
116
+ muted
117
+ loop
118
+ playsinline
119
+ preload="metadata"
120
+ aria-label="Background animation">
121
+ <source src="{{ url_for('static', filename='background.mp4') }}" type="video/mp4">
122
+ Your browser does not support the video tag.
123
+ </video>
124
+ </div>
125
+
126
+ <div class="video-overlay"></div>
127
+
128
+ <!-- Page Content -->
129
+ <div class="page-container">
130
+ <h1 style="color:grey; font-weight: bold;text-shadow: 2px 2px 0 #000, 2px 2px 0 #555;">
131
+ Forecast Your Crypto Future
132
+ </h1>
133
+
134
+ <form action="/predict" method="post" id="predictionForm">
135
+ <div class="form-group">
136
+ <label style="font-size:26px;color:navy;text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5);">Opening Price:</label><br>
137
+ <input type="number" name="open" placeholder="Enter opening price" required><br>
138
+
139
+ <label style="font-size:26px;color:navy;">Highest Price:</label><br>
140
+ <input type="number" name="high" placeholder="Enter highest price" required><br>
141
+
142
+ <label style="font-size:26px;color:navy;">Lowest Price:</label><br>
143
+ <input type="number" name="low" placeholder="Enter lowest price" required><br>
144
+
145
+ <label style="font-size:26px;color:navy;">Closing Price:</label><br>
146
+ <input type="number" name="close" placeholder="Enter closing price" required><br>
147
+
148
+ <label style="font-size:26px;color:navy;">Volume:</label><br>
149
+ <input type="number" name="volume" placeholder="Enter volume" required><br>
150
+ </div>
151
+
152
+ <div class="button-group">
153
+ <button type="submit" class="btn btn-primary">
154
+ <span>🔍</span> Predict
155
+ </button>
156
+ <button type="button" class="btn btn-secondary" onclick="document.getElementById('predictionForm').reset();">
157
+ <span>🔄</span> Reset Form
158
+ </button>
159
+ </div>
160
+
161
+ {% if result %}
162
+ <h2 style="color:rebeccapurple; font-weight: bold; text-shadow: 1px 1px 0 #000, 2px 2px 0 #555;">
163
+ Nearest Predicted Closing Price for Tomorrow: {{ result }}
164
+ </h2>
165
+ {% endif %}
166
+ </form>
167
+
168
+ <div class="footer">
169
+ <p><i class="fas fa-heart" style="color: #ef4444;"></i> Made with love by Gursimranjot Kaur</p>
170
+ </div>
171
+ </div>
172
+ </body>
173
+ </html>