bittensor en license:mit region:us
---
license: mit
language:
- en
tags:
- bittensor
---
MIT License

Copyright (c) 2024 Taoshi Inc

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

# Background

The models provided here were created using open source modeling techniques
provided in https://github.com/taoshidev/time-series-prediction-subnet (TSPS).
They were achieved using the `runnable/miner_training.py`, and tested against
existing models in `runnable/miner_testing.py`.

> **Note**<br>
This model requires the Feature Set Creator (FSC) functionality added in the
latest release of the TSPS.

# Build Strategy

This section outlines the strategy used to build the models.

## Understanding Dataset Used

The dataset used to build the models can be generated using the
`runnable/generate_historical_data.py`. A lookback period between June 2023 and
January 2024 on the 5m interval was used to train the model. Recent data was
used because it more closely correlates to the current market and
macroeconomic conditions.

Testing data was used between January 2024 and February 2024 to determine the
performance of the models. This was tested using the `runnable/miner_testing.py`
file with live historical data sources.


## Understanding Model Creation

As of now, the model only uses the following features to predict:
- close
- high
- low
- volume
- time of day
- time of week
- time of month

Other features from a wide range of feature sources are being added to TSPS
infrastructure in the near future as improvements to the FSC.

A variety of windows and parameters were tested and eliminated. The final 
strategy to derive this model was the following:

```
model = BaseMiningModel(
    filename="model_v5_1.h5",
    mode="w",
    feature_count=7,
    sample_count=500,
    prediction_feature_count=1,
    prediction_count=10,
    prediction_length=100,
    layers=[
        [1024, 0],
        [1024, 0.3],
    ],
    learning_rate=0.000001,
    dtype=Policy("mixed_float16"),
)
```

The LSTM model has two stacked layers with a 0.3 dropout rate.

## Understanding Training Decisions

Training was done with 500 samples per scenario and 128 scenarios per batch,
with 20 training epochs and 10 passes over the entire dataset. Additional
epochs and passes were not found to improve the model's predictions.

## Strategy to Predict

The strategy to predict 100 closes of data into the future was to use 10
predictions evenly spaced along the length of the prediction space, and then
linearly interpolating between each prediction. By doing so, the model could
learn to predict the general shape of the market movement, rather than
predicting all 100.
