Building a JavaScript Stock Price Prediction Tool
Introduction
Stock price prediction tools help investors make informed decisions by analyzing historical data and predicting future trends. This guide walks you through building a simple tool using JavaScript, APIs, and charting libraries like Chart.js.
Features
- Fetch real-time and historical stock data from APIs.
- Visualize stock price trends using an interactive chart.
- Predict future stock prices with a basic linear regression model.
Implementation
1. HTML Structure
The HTML provides a clean interface for the tool. It includes an input field for the stock symbol, a button to fetch data, and a canvas element for the chart.
<!DOCTYPE html>
<html>
<head>
<title>Stock Price Prediction</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<div>
<h1>Stock Price Prediction</h1>
<input id="stockSymbol" placeholder="Enter Stock Symbol">
<button onclick="fetchStockData()">Fetch Data</button>
<canvas id="stockChart"></canvas>
<h2>Predicted Price: <span id="predictedPrice">-</span></h2>
</div>
</body>
</html>
2. JavaScript Logic
The JavaScript fetches data from a stock API (e.g., Alpha Vantage), displays it in a chart, and predicts the next day's price using a simple linear regression model.
const apiKey = 'YOUR_API_KEY'; // Replace with your API key
const apiUrl = 'https://www.alphavantage.co/query';
async function fetchStockData() {
const stockSymbol = document.getElementById('stockSymbol').value;
const response = await fetch(\`\${apiUrl}?function=TIME_SERIES_DAILY_ADJUSTED&symbol=\${stockSymbol}&apikey=\${apiKey}\`);
const data = await response.json();
const timeSeries = data['Time Series (Daily)'];
const labels = Object.keys(timeSeries).slice(0, 30).reverse();
const prices = labels.map(date => parseFloat(timeSeries[date]['4. close']));
plotStockChart(labels, prices);
predictPrice(prices);
}
function plotStockChart(labels, data) {
const ctx = document.getElementById('stockChart').getContext('2d');
new Chart(ctx, {
type: 'line',
data: {
labels,
datasets: [{ label: 'Stock Price', data }]
}
});
}
function predictPrice(prices) {
const n = prices.length;
const x = Array.from({ length: n }, (_, i) => i + 1);
const meanX = x.reduce((a, b) => a + b) / n;
const meanY = prices.reduce((a, b) => a + b) / n;
const slope = x.reduce((sum, xi, i) => sum + (xi - meanX) * (prices[i] - meanY), 0) /
x.reduce((sum, xi) => sum + (xi - meanX) ** 2, 0);
const intercept = meanY - slope * meanX;
const nextPrice = slope * (n + 1) + intercept;
document.getElementById('predictedPrice').textContent = nextPrice.toFixed(2);
}
3. Styling
Use basic CSS for a clean and responsive design.
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
Conclusion
This stock price prediction tool demonstrates how to fetch and visualize data while predicting trends using simple JavaScript techniques. You can expand this tool by integrating advanced models or external machine learning APIs for more accurate predictions.