diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 77432cc9e..608565fdc 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -147,15 +147,20 @@ jobs:
- name: Installation - macOS
if: runner.os == 'macOS'
run: |
- # homebrew fails to update python 3.9.1 to 3.9.1.1 due to unlinking failure
+ brew update
+ # homebrew fails to update python due to unlinking failures
+ # https://github.com/actions/runner-images/issues/6817
rm /usr/local/bin/2to3 || true
- # homebrew fails to update python from 3.9 to 3.10 due to another unlinking failure
+ rm /usr/local/bin/2to3-3.11 || true
rm /usr/local/bin/idle3 || true
+ rm /usr/local/bin/idle3.11 || true
rm /usr/local/bin/pydoc3 || true
+ rm /usr/local/bin/pydoc3.11 || true
rm /usr/local/bin/python3 || true
+ rm /usr/local/bin/python3.11 || true
rm /usr/local/bin/python3-config || true
- # Ignore brew update failures - https://github.com/actions/runner-images/issues/6817
- brew update || true
+ rm /usr/local/bin/python3.11-config || true
+
brew install hdf5 c-blosc
python -m pip install --upgrade pip wheel
export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index a7e60ce90..306e4bbda 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -15,7 +15,7 @@ repos:
additional_dependencies:
- types-cachetools==5.2.1
- types-filelock==3.2.7
- - types-requests==2.28.11.5
+ - types-requests==2.28.11.7
- types-tabulate==0.9.0.0
- types-python-dateutil==2.8.19.5
# stages: [push]
diff --git a/README.md b/README.md
index 30ad1ad2a..2ab62793d 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
# ![freqtrade](https://raw.githubusercontent.com/freqtrade/freqtrade/develop/docs/assets/freqtrade_poweredby.svg)
[![Freqtrade CI](https://github.com/freqtrade/freqtrade/workflows/Freqtrade%20CI/badge.svg)](https://github.com/freqtrade/freqtrade/actions/)
+[![DOI](https://joss.theoj.org/papers/10.21105/joss.04864/status.svg)](https://doi.org/10.21105/joss.04864)
[![Coverage Status](https://coveralls.io/repos/github/freqtrade/freqtrade/badge.svg?branch=develop&service=github)](https://coveralls.io/github/freqtrade/freqtrade?branch=develop)
[![Documentation](https://readthedocs.org/projects/freqtrade/badge/)](https://www.freqtrade.io)
[![Maintainability](https://api.codeclimate.com/v1/badges/5737e6d668200b7518ff/maintainability)](https://codeclimate.com/github/freqtrade/freqtrade/maintainability)
diff --git a/docs/backtesting.md b/docs/backtesting.md
index bfe0f4d07..0227df3f6 100644
--- a/docs/backtesting.md
+++ b/docs/backtesting.md
@@ -300,7 +300,11 @@ A backtesting result will look like that:
| Absolute profit | 0.00762792 BTC |
| Total profit % | 76.2% |
| CAGR % | 460.87% |
+| Sortino | 1.88 |
+| Sharpe | 2.97 |
+| Calmar | 6.29 |
| Profit factor | 1.11 |
+| Expectancy | -0.15 |
| Avg. stake amount | 0.001 BTC |
| Total trade volume | 0.429 BTC |
| | |
@@ -400,7 +404,11 @@ It contains some useful key metrics about performance of your strategy on backte
| Absolute profit | 0.00762792 BTC |
| Total profit % | 76.2% |
| CAGR % | 460.87% |
+| Sortino | 1.88 |
+| Sharpe | 2.97 |
+| Calmar | 6.29 |
| Profit factor | 1.11 |
+| Expectancy | -0.15 |
| Avg. stake amount | 0.001 BTC |
| Total trade volume | 0.429 BTC |
| | |
@@ -447,6 +455,9 @@ It contains some useful key metrics about performance of your strategy on backte
- `Absolute profit`: Profit made in stake currency.
- `Total profit %`: Total profit. Aligned to the `TOTAL` row's `Tot Profit %` from the first table. Calculated as `(End capital − Starting capital) / Starting capital`.
- `CAGR %`: Compound annual growth rate.
+- `Sortino`: Annualized Sortino ratio.
+- `Sharpe`: Annualized Sharpe ratio.
+- `Calmar`: Annualized Calmar ratio.
- `Profit factor`: profit / loss.
- `Avg. stake amount`: Average stake amount, either `stake_amount` or the average when using dynamic stake amount.
- `Total trade volume`: Volume generated on the exchange to reach the above profit.
diff --git a/docs/freqai-parameter-table.md b/docs/freqai-parameter-table.md
index aa7f5cc64..046fa8008 100644
--- a/docs/freqai-parameter-table.md
+++ b/docs/freqai-parameter-table.md
@@ -15,7 +15,7 @@ Mandatory parameters are marked as **Required** and have to be set in one of the
| `identifier` | **Required.**
A unique ID for the current model. If models are saved to disk, the `identifier` allows for reloading specific pre-trained models/data.
**Datatype:** String.
| `live_retrain_hours` | Frequency of retraining during dry/live runs.
**Datatype:** Float > 0.
Default: `0` (models retrain as often as possible).
| `expiration_hours` | Avoid making predictions if a model is more than `expiration_hours` old.
**Datatype:** Positive integer.
Default: `0` (models never expire).
-| `purge_old_models` | Delete obsolete models.
**Datatype:** Boolean.
Default: `False` (all historic models remain on disk).
+| `purge_old_models` | Delete all unused models during live runs (not relevant to backtesting). If set to false (not default), dry/live runs will accumulate all unused models to disk. If
**Datatype:** Boolean.
Default: `True`.
| `save_backtest_models` | Save models to disk when running backtesting. Backtesting operates most efficiently by saving the prediction data and reusing them directly for subsequent runs (when you wish to tune entry/exit parameters). Saving backtesting models to disk also allows to use the same model files for starting a dry/live instance with the same model `identifier`.
**Datatype:** Boolean.
Default: `False` (no models are saved).
| `fit_live_predictions_candles` | Number of historical candles to use for computing target (label) statistics from prediction data, instead of from the training dataset (more information can be found [here](freqai-configuration.md#creating-a-dynamic-target-threshold)).
**Datatype:** Positive integer.
| `follow_mode` | Use a `follower` that will look for models associated with a specific `identifier` and load those for inferencing. A `follower` will **not** train new models.
**Datatype:** Boolean.
Default: `False`.
diff --git a/docs/hyperopt.md b/docs/hyperopt.md
index 6b6c2a772..e72b850ca 100644
--- a/docs/hyperopt.md
+++ b/docs/hyperopt.md
@@ -365,7 +365,7 @@ class MyAwesomeStrategy(IStrategy):
timeframe = '15m'
minimal_roi = {
"0": 0.10
- },
+ }
# Define the parameter spaces
buy_ema_short = IntParameter(3, 50, default=5)
buy_ema_long = IntParameter(15, 200, default=50)
@@ -400,7 +400,7 @@ class MyAwesomeStrategy(IStrategy):
return dataframe
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
- conditions = []
+ conditions = []
conditions.append(qtpylib.crossed_above(
dataframe[f'ema_long_{self.buy_ema_long.value}'], dataframe[f'ema_short_{self.buy_ema_short.value}']
))
diff --git a/docs/index.md b/docs/index.md
index 5459eac1b..40b9e98ad 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,6 +1,7 @@
![freqtrade](assets/freqtrade_poweredby.svg)
[![Freqtrade CI](https://github.com/freqtrade/freqtrade/workflows/Freqtrade%20CI/badge.svg)](https://github.com/freqtrade/freqtrade/actions/)
+[![DOI](https://joss.theoj.org/papers/10.21105/joss.04864/status.svg)](https://doi.org/10.21105/joss.04864)
[![Coverage Status](https://coveralls.io/repos/github/freqtrade/freqtrade/badge.svg?branch=develop&service=github)](https://coveralls.io/github/freqtrade/freqtrade?branch=develop)
[![Maintainability](https://api.codeclimate.com/v1/badges/5737e6d668200b7518ff/maintainability)](https://codeclimate.com/github/freqtrade/freqtrade/maintainability)
diff --git a/docs/leverage.md b/docs/leverage.md
index 429aff86c..0a265277e 100644
--- a/docs/leverage.md
+++ b/docs/leverage.md
@@ -92,6 +92,8 @@ One account is used to share collateral between markets (trading pairs). Margin
"margin_mode": "cross"
```
+Please read the [exchange specific notes](exchanges.md) for exchanges that support this mode and how they differ.
+
## Set leverage to use
Different strategies and risk profiles will require different levels of leverage.
diff --git a/docs/overrides/main.html b/docs/overrides/main.html
index dfc5264be..cba627ead 100644
--- a/docs/overrides/main.html
+++ b/docs/overrides/main.html
@@ -11,9 +11,6 @@
{% endif %}