Market following

Add Your Heading Text Here

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

mport numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_absolute_error
from sklearn.model_selection import GridSearchCV
import matplotlib.pyplot as plt
import seaborn as sns
import talib

Load historical market data
data = pd.read_csv("market_data.csv")
data = data[['date', 'open', 'high', 'low', 'close']]

Create feature set for machine learning model
data['HL_PCT'] = (data['high'] - data['low']) / data['low'] * 100.0
data['PCT_change'] = (data['close'] - data['open']) / data['open'] * 100.0
data = data[['date', 'open', 'high', 'low', 'close', 'HL_PCT', 'PCT_change']]

Split data into train and test sets
train_data = data[:int(0.8len(data))]
test_data = data[int(0.8len(data)):]

Scale feature data for better model performance
scaler = StandardScaler()
scaler.fit(train_data[['open', 'high', 'low', 'close', 'HL_PCT', 'PCT_change']])
train_data[['open', 'high', 'low', 'close', 'HL_PCT', 'PCT_change']] = scaler.transform(train_data[['open', 'high', 'low', 'close', 'HL_PCT', 'PCT_change']])
test_data[['open', 'high', 'low', 'close', 'HL_PCT', 'PCT_change']] = scaler.transform(test_data[['open', 'high', 'low', 'close', 'HL_PCT', 'PCT_change']])

Create machine learning model
rf = RandomForestRegressor()
param_grid = {'n_estimators': [10, 50, 100], 'max_depth': [5, 10, 20]}
grid = GridSearchCV(estimator=rf, param_grid=param_grid, cv=3, n_jobs=-1)
grid.fit(train_data[['open', 'high', 'low', 'close', 'HL_PCT', 'PCT_change']], train_data['close'])

Make predictions on test data
predictions = grid.predict(test_data[['open', 'high', 'low', 'close', 'HL_PCT', 'PCT_change']])

Calculate mean absolute error to evaluate model performance
mae = mean_absolute_error(test_data['close'], predictions)
print("Mean Absolute Error: ", mae)

Plot actual vs predicted values
plt.figure(figsize=(12,8))
sns.lineplot(x=test_data.index, y=test_data['close'], label='Actual')
sns.lineplot(x=test_data.index, y=predictions, label='Predicted')
plt.legend()
plt.show()

Create function to enter

Leave a Reply