Andrew Carr Elastic Engineer
DevOps
"a collection of observations of well-defined data items obtained through repeated measurements over time"
ABS:Time Series Analysis: The Basics
Overall Approach
FastAI Model
##FastAI Tabular Model
#Data Cleaning
def order(x):
if (x['Close']*1.07 < x['followDayClose']):
return 'buy'
if (x['Close'] <= x['followDayClose']):
return 'hold'
else: return 'sell'
df['followDayClose'] = df['Close'].shift(-1)
df['order'] = df.apply(order, axis=1)
#`Categorify` will transform columns that are in your `cat_names` into that type,
# along with label encoding our categorical data:
to = TabularPandas(df, cat, cat_names)
cats = to.procs.categorify
#Normalize
#To properly work with our numerical columns, we need to show a relationship between them all that our model can understand.
#This is commonly done through Normalization, where we scale the data between -1 and 1, and compute a z-score
to = TabularPandas(df, norm,cat_names=cat_names, cont_names=cont_names)
norms = to.procs.normalize
#FillMissing
fm = FillMissing(fill_strategy=FillStrategy.median)
to = TabularPandas(df, fm, cont_names=cont_names, cat_names=cat_names)
#Building DataLoader Object and loading
dls = to.dataloaders()
#Running Training
learn = tabular_learner(dls, [10000,1], metrics=accuracy)
learn.lr_find()
#Export Model
learn.export('/content/drive/MyDrive/Code/ethModel.pkl')
FastAI Model
50.3% Accuracy
#Import Dataset which needs to have YYYY-MM-DD date field titled 'DS' and a dependent varible titled 'Y'
df = pd.read_csv('https://raw.githubusercontent.com/facebook/prophet/main/examples/example_wp_log_peyton_manning.csv')
#Instantiate a Prophet Object and call fit on the DataFrame
m = Prophet()
m.fit(df)
#Create a DataFrame with 365 days of future timestamps
future = m.make_future_dataframe(periods=365)
#Take future timestamps and apply model to predict future
forecast = m.predict(future)
fig1 = m.plot(forecast)
Trading bot currently running on AWS EC2 within Docker image
Problems with tested approaches
Approach | Positives | Negatives |
---|---|---|
FastAI Tabular Model | Easy to implement. | Does not suit time series analysis case |
Facebook Prophet | Great visualization of trends. | Failed to work within Freqtrade platform. |
Freqtrade Default Strategies | Great quick start. Great interface |
Can only access cryptocurrency |
Overall find it difficult to find an edge
Time to change market!
More Data and better Trained!
Utilisation of FastAI's tsai library
Modelling of Commodities
Python for Data Science and Machine Learning Bootcamp
FastAI: Practical Deep Learning
Time Series Forecasting in Python
Marco Peixeiro
Financial markets and software engineering: Part Time Larry (YouTube)