Commit Graph

1317 Commits

Author SHA1 Message Date
Robert Roman c3414c3b78
resolved mypy error
error: Signature of "hyperopt_loss_function" incompatible with supertype "IHyperOptLoss"
2021-09-27 17:32:49 -05:00
Matthias 5726886b06 Reduce backtest-noise from "pandas slice" warning 2021-09-27 20:52:19 +02:00
Robert Roman bdca3e2343
Merge branch 'freqtrade:develop' into develop 2021-09-26 15:37:09 -05:00
Matthias 6319c104fe Fix unreliable backtest-result when using webserver mode 2021-09-26 15:07:48 +02:00
Robert Roman 24baad7884
Add Calmar Ratio Daily
This hyper opt loss calculates the daily Calmar ratio.
2021-09-25 16:28:36 -05:00
Robert Roman 3b99c84b0a
resolved the total profit issue
I resolved the total profit issue and locally ran flak8 and isort
2021-09-23 21:31:33 -05:00
Robert Roman c6b684603c
removed trade_count inside if statement
i removed trade_count inside if statement. Even though it helps overfitting, It is not useful when running hyperopt on small datasets.
2021-09-22 09:21:43 -05:00
Robert Roman b946f8e7f1
I sorted imports with isort 2021-09-22 09:18:17 -05:00
Robert Roman 3834bb86ff
updated line 42
I removed the minus sign on max drawdown.
2021-09-21 20:25:17 -05:00
Robert Roman 3845d55186
a new hyperopt loss created that uses calmar ratio
This is a new hyperopt loss file that uses the Calmar Ratio.

Calmar Ratio = average annual rate of return / maximum drawdown
2021-09-21 20:04:23 -05:00
Rokas Kupstys 5dc78a0c66 [SQUASH] Get rid of _initialize() and fix informatives for dynamic pairlists. 2021-09-18 10:48:53 +03:00
Rokas Kupstys dfa61b7ad2 [SQUASH] Fix informatives for each pair not being created because dataprovider was not available.
Fix not being able to have informative dataframe of a pair in whitelist.
2021-09-18 10:48:53 +03:00
Matthias 853c3a4433
Merge pull request #5587 from raph92/patch-3
Update prepare_trials_columns() return type
2021-09-18 08:08:18 +02:00
raphael 4b2c1a9b8e
Remove trailing whitespace 2021-09-17 14:39:15 -04:00
raphael e715f2a253
Update formatting
Line 302 was too long
2021-09-17 14:23:26 -04:00
raphael 9525a5b96c
Add type to "trials" parameter 2021-09-17 14:10:37 -04:00
raphael 124e97f3b9
Remove ununsed variables from export_csv_file 2021-09-17 11:57:36 -04:00
raphael 3a98fb72a4
Update prepare_trials_columns() return type
Was returning str, updated to pd.DataFrame
2021-09-17 11:42:33 -04:00
Matthias 994c3c3a4c Add some errorhandling for custom estimator 2021-09-16 07:13:25 +02:00
Matthias c0811ae896 Add possibility to override estimator from within hyperopt 2021-09-15 21:36:53 +02:00
Matthias 57ea0c322f Rename indicator_space to buy_indicator_space 2021-09-15 20:20:31 +02:00
Matthias 315ea1e116
Merge pull request #5566 from freqtrade/remove_hyperopt
Remove legacy hyperopt
2021-09-14 19:20:58 +02:00
Matthias a12c3ecc9b Remove credentials whenever dry-run is set from within the exchange 2021-09-13 20:27:32 +02:00
Matthias fd6bf591f8 Update some tests to remove explicit hyperopt interface 2021-09-12 08:18:13 +02:00
Matthias dad4a49e81 Remove legacy hyperopt interface from hyperopt.py 2021-09-12 08:18:13 +02:00
Matthias b0c4f079c2 Merge branch 'develop' into feat/backtest_detail 2021-08-31 20:16:42 +02:00
Matthias 2ce458810b rename default_hyperopt_loss file 2021-08-26 19:39:57 +02:00
Matthias 7fb570cc58 hyperopt Fallback methods should not be used. 2021-08-25 20:28:55 +02:00
Matthias 23d21d8ace Fix wrong message if protection-space is missing
closes #5480
2021-08-25 19:57:10 +02:00
Matthias fa4ec9f83e Add explicit test for get_sell_trade_entry 2021-08-15 14:52:24 +02:00
Matthias 8405ccc15e Seperate detail data loading from regular backest-data loading 2021-08-14 16:33:01 +02:00
Matthias 88172fab82 Allow "detailed" backtesting timeframe to look into the candle 2021-08-14 16:04:23 +02:00
Matthias bdbac37be7
Merge pull request #5399 from rokups/rk/fix-buy-tag-backtest
Fix buy_tag not being saved to trade object.
2021-08-12 06:36:33 +02:00
Rokas Kupstys f6267c7514 Fix buy_tag not being saved to trade object.
Column is mistakenly excluded because advise_buy() creating this column runs after code detecting presence of buy_tag column.
2021-08-11 15:21:23 +03:00
ipqhjjybj 65d025923d add code 2021-08-11 14:35:16 +08:00
Matthias 0b6aedbc4c
Merge pull request #5395 from freqtrade/fix/hyperopt-show
Stream hyperopt-result in small batches
2021-08-10 19:54:02 +02:00
Matthias 039d6384ed Stream hyperopt-result in small batches
Avoiding memory-exhaustion on huge hyperopt results

closes #5305
closes #5149
2021-08-10 10:12:57 +02:00
Matthias 3f160c7144 Cache dataframe before cutting the first candle
This allows providing the "current closed" candle in all cases.
2021-08-10 09:14:29 +02:00
Matthias 5bfb9edf02 Only query date once from list 2021-08-09 15:42:17 +02:00
Matthias 895b912c71 Fix recently introduced lookahead bias in backtesting
closes #5388
2021-08-09 14:54:47 +02:00
Matthias a5f796bc97 refactor ohlcvdata_to_dataframe to advise_all_indicators 2021-08-09 14:53:18 +02:00
Matthias f17942b68f Fix random test failure 2021-08-09 11:18:18 +02:00
Matthias 47f641d12f Remove hyperopt-pickle result support 2021-08-09 07:04:18 +02:00
Matthias 3bd0c3d009 Remove legacy code from export to csv 2021-08-08 11:02:54 +02:00
Matthias faf16a64e5 Remove legacy hyperopt file support 2021-08-08 10:22:45 +02:00
Matthias 0ae4eccea5 Refactor Hyperopt-list and hyperopt-show to reduce some duplicate code 2021-08-08 10:06:35 +02:00
Matthias 6532aba765
Merge pull request #5360 from freqtrade/hyperopt_protections
Hyperopt protections and Boolean parameter
2021-08-07 09:42:05 +02:00
Sam Germain b9356a5564 Autopep8 formatting 2021-08-06 16:35:39 -06:00
Matthias a6454cfc39 Autoenable protections when protection-space is selected 2021-08-04 07:17:29 +02:00
Matthias 091bf7c4d2 Output protection space 2021-08-04 06:50:14 +02:00
Matthias 544e0da6c2 Add protection parameter space 2021-08-04 06:50:14 +02:00
Matthias 800b2eeaf0 Load protections as part of backtest()
this enables different values in hyperopt per epoch
2021-08-04 06:50:14 +02:00
Matthias dfc17f2bd1 Fix ci failure 2021-08-03 07:21:11 +02:00
Matthias 4ab03f7e37 Don't load fallback methods for autohyperopt 2021-08-02 21:17:56 +02:00
Matthias e70a742005 Reorder space methods in hyperopt 2021-08-02 21:12:10 +02:00
Matthias 056bc93bc6 backtesting needs startup_candle_count
fixes informative-pair loading  being different between --strategy-list and
--strategy.
2021-08-01 19:17:52 +02:00
Matthias 1ccc89d1e9 Store fully analyzed dataframe 2021-07-31 10:00:24 +02:00
Matthias b1cbc75e93 Properly cache pair dataframe in backtesting (without startup-range). 2021-07-31 08:45:04 +02:00
Matthias 138b126d03
Merge pull request #5299 from kevinjulian/feat/kevinjulian/add-buy-signal-name
Add buy signal name
2021-07-30 08:23:11 +02:00
kevinjulian aea5da0c73 changes testcase 2021-07-23 11:42:43 +07:00
kevinjulian f5a660f845 caps BUY_TAG_IDX 2021-07-21 20:19:56 +07:00
kevinjulian 49886874aa rename to buy_tag 2021-07-21 20:05:35 +07:00
kevinjulian 5d04d6ffa7 fix edge testcase 2021-07-20 23:40:32 +07:00
kevinjulian cbfedf8b29 fix backtest testcase 2021-07-20 23:25:00 +07:00
Kevin Julian edf9c08f06
Merge branch 'develop' into feat/kevinjulian/add-buy-signal-name 2021-07-20 19:19:46 +07:00
kevinjulian ed30c023cd fix some testcase 2021-07-20 19:08:14 +07:00
kevinjulian 9e63bdbac9 feat: add buy signal name 2021-07-20 04:58:20 +07:00
Matthias 365479f5e0 Remove startup-candles after populating buy/sell signals
closes #5242
2021-07-18 11:06:41 +02:00
Matthias 7b7d9c02d7
Merge pull request #5243 from freqtrade/feat/webservermode_progress
Introduce webserver mode subcommand
2021-07-18 10:48:55 +02:00
Matthias 38296e8689
Merge pull request #5189 from rokups/rk/custom-stake
Implement strategy-controlled stake sizes
2021-07-11 19:45:43 +02:00
Matthias 7ea0a74c53 Default to proposed stake 2021-07-11 14:11:41 +02:00
Rokas Kupstys 0e4466ca1e Implement strategy-controlled stake sizes. Expose `self.wallet` to a strategy. 2021-07-11 12:38:58 +03:00
Matthias ad26b0dad0 Don't void backtest object when not necessary 2021-07-10 10:59:00 +02:00
Matthias 6129c5ca9e Fix deprecation warnings from pandas 1.3.0
closes #5251
2021-07-09 20:46:38 +02:00
Matthias 2f33b97b95 Validate startup candles for backtesting correctly
closes #5250
2021-07-09 07:20:43 +02:00
octaviusgus d1104bd434 fix daily profit data and daily profit curve example 2021-07-06 22:47:39 +02:00
Matthias 005da97183 extract backtesting abort functionality 2021-07-06 19:48:28 +02:00
Matthias 830b2548bc Add backtest stopping 2021-07-06 19:48:28 +02:00
Matthias 134c61126e Properly track bt progress ... 2021-07-06 19:48:28 +02:00
Matthias 048008756f Add progress tracking for backtesting 2021-07-06 19:48:28 +02:00
Matthias 800e314bfd Store backtesting results in backtest instance 2021-07-06 19:48:28 +02:00
octaviusgus 4aa2ae37bd
add daily_profit_list
added extra key daily_profit in return of optimize_reports.generate_daily_stats
this allows us to analyze and plot a daily profit chart / equity line using snippet below inside jupyter notebook

```
# Plotting equity line (starting with 0 on day 1 and adding daily profit for each backtested day)

from freqtrade.configuration import Configuration
from freqtrade.data.btanalysis import load_backtest_data, load_backtest_stats
import plotly.express as px
import pandas as pd

# strategy = 'Strat'
# config = Configuration.from_files(["user_data/config.json"])
# backtest_dir = config["user_data_dir"] / "backtest_results"

stats = load_backtest_stats(backtest_dir)
strategy_stats = stats['strategy'][strategy]

equity = 0
equity_daily = []
for dp in strategy_stats['daily_profit']:
    equity_daily.append(equity)
    equity += float(dp)

dates = pd.date_range(strategy_stats['backtest_start'], strategy_stats['backtest_end'])

df = pd.DataFrame({'dates':dates,'equity_daily':equity_daily})

fig = px.line(df, x="dates", y="equity_daily")
fig.show()

```
2021-07-04 14:38:17 +02:00
Matthias 898bef1837
Merge pull request #5219 from freqtrade/hyperopt_paramfile
automatic Hyperopt paramfile
2021-07-04 13:56:52 +02:00
Matthias 77293b1f1e Remove Zero duration Trades
after the recent backtesting fixes, this metric no longer makes sense, as it can't really be 0 any longer.
2021-07-04 10:50:10 +02:00
Matthias a4096318e0 Provide full backtest-statistics to Hyperopt loss functions
closes #5223
2021-07-04 10:15:19 +02:00
Matthias 9d6860337f
Merge pull request #5212 from rokups/rk/trailing-stop-2
Trailing stoploss in backtesting v2
2021-07-03 08:39:30 +02:00
Matthias fbd91cd3f8 Improve formatting to avoid backslash newlines 2021-07-03 08:22:21 +02:00
Matthias b25ad68c44 Fix np.bool_ not outputting correctly 2021-07-02 20:52:25 +02:00
Matthias 15e36a20e1 Improve naming of default hyperopt serializer 2021-06-30 19:48:34 +02:00
Rokas Kupstys bc0742ae67 Fix extremely optimistic results when using a combination of custom_stoploss and trailing_stop. 2021-06-30 09:10:50 +03:00
Matthias 0809225a0a Update documentation to mention parameter strategy files 2021-06-30 07:05:20 +02:00
Matthias 645da51b5f Add test for parameter loading 2021-06-30 06:55:10 +02:00
Matthias dcf53ac3ff Add test for try_eport_params 2021-06-30 06:33:40 +02:00
Matthias 84703080b8 Extract hyperopt_defaults_serializer to hyperopt_tools 2021-06-29 20:51:29 +02:00
Matthias 62cdbdc26a Automatically export hyperopt parameters 2021-06-29 20:51:25 +02:00
barbarius a8117c6e0b Refactored to use results variable from for loop 2021-06-29 11:24:49 +02:00
Matthias 8ca0076332 Fix small typos 2021-06-29 06:50:47 +02:00
Matthias d4514f5f16 Introduce File versions to hyperopt result files 2021-06-29 06:50:47 +02:00
Matthias a7e9e362b7 Simplify printing logic for non-optimized parameters 2021-06-29 06:50:47 +02:00
Matthias 8b7010fc9a Update pprint name 2021-06-29 06:50:47 +02:00
Matthias aa5181ca81 Properly export non-optimized parameters 2021-06-29 06:50:47 +02:00
Matthias 34e6ce431f Print non-optimized parameters (also stop / roi) 2021-06-29 06:50:47 +02:00
Matthias 2310deec53 Update name to get non-optimized parameters 2021-06-29 06:50:47 +02:00
Matthias 8cdd1e3aef Fix some type errors 2021-06-29 06:50:47 +02:00
Matthias 2bf17f71e7 Dump parameters from hyperopt-show 2021-06-29 06:50:47 +02:00
barbarius a0f28f4a15 Added max open trades to strategy summary first line 2021-06-28 17:05:12 +02:00
barbarius 2e5b719de8 Added timerange above multiple strategy backtest result summary table 2021-06-28 10:54:54 +02:00
barbarius c99ae3b419 Added timerange above multiple strategy backtest result summary table 2021-06-28 10:20:34 +02:00
Matthias 1067a9f356 Move strategy-override signals to top-level of the config
closes #2867
2021-06-26 16:06:13 +02:00
aayush-jain18 d294ef10d7 unexpected docstring params 2021-06-25 23:56:16 +05:30
aayush-jain18 a46f60bd94 spell corrections 2021-06-25 22:10:04 +05:30
Matthias e40d481d09
Merge pull request #5014 from Rikj000/hyperopt-show-include-non-optimized-in-json
BugFix - `hyperopt-show --print-json` include non-optimized params
2021-06-19 07:42:15 +01:00
Rik Helsen 656bebd4da 🪲 Included completely non_optimized spaces in json + swapped merge dictionary order 2021-06-18 22:03:04 +02:00
Matthias e1010ff592 Don't load protections from config if strategy defines a property 2021-06-18 19:55:53 +02:00
Rik Helsen 1567804509 kwargs merge dictionaries instead of using loops 2021-06-17 22:41:49 +02:00
Cryptomeister Nox 85979c3176 * Adding command for Filtering
* Read latest Backtest file and print trades
2021-06-17 20:35:02 +02:00
Rik Helsen 546ca01071 ♻️ Fixed flake8 warning 2021-06-17 20:33:21 +02:00
Rik Helsen 90d37f5ec6 🔀 Merged upstream branches and fixed merge conflicts 2021-06-17 20:24:20 +02:00
Matthias 8bb464bd64
Merge pull request #5108 from rokups/rk/pessimistic-trailing-stoploss
Implement most pessimistic handling of trailing stoploss.
2021-06-17 18:41:00 +01:00
Matthias b38ab84a13 Add documentation mention about new behaviour 2021-06-17 06:48:41 +02:00
Matthias 1c9def2fdb
Update freqtrade/optimize/optimize_reports.py 2021-06-16 20:17:44 +01:00
barbarius 1bb04bb0c2 Moved daily avg trade row next to total trades on backtest results 2021-06-16 11:40:55 +02:00
Rokas Kupstys 6d5fc96714 Implement most pessimistic handling of trailing stoploss. 2021-06-15 09:05:36 +03:00
Matthias cf7394d01c Export backtesting results by default
closes #4977
2021-06-14 19:57:24 +02:00
Matthias eaf0aac77e Remove OrderedDict
as we're no longer supporting python 3.6
2021-06-13 11:47:18 +02:00
Matthias d54ee0eb04 Refactor hyperopt_tools naming 2021-06-13 11:24:24 +02:00
Matthias ef208012c4
Merge pull request #5104 from freqtrade/enums_own_module
Enums own package
2021-06-10 05:31:14 +01:00
Bruno Gouvea 40f1ede775 Simplifying HO's result function 2021-06-09 12:03:24 -03:00
Matthias d16a619489 Move SellType Enum to it's own module 2021-06-08 21:04:34 +02:00
Bruno Gouvea 3cce668353 Creating a control variable to determine the existence of max drawdown in the final result. 2021-06-08 02:57:44 -03:00
Bruno Gouvea 816bb531b3 Creating fake column for legacy mode on max drawdown 2021-06-08 02:42:55 -03:00
Bruno Gouvea 4595db39aa Displaying max. drawdown only when it is not legacy mode. 2021-06-08 02:18:00 -03:00
Bruno Gouvea c513c9685d Remove blank line (PEP8) 2021-06-07 18:20:04 -03:00
Bruno Gouvea 5c3a418e65 Adjusting drawdown column position. 2021-06-07 18:15:26 -03:00
Bruno Gouvea 35d6140068 Displays the max drawdown in the hyper optimization results table. 2021-06-07 17:53:19 -03:00
Matthias f920c26802 fix Hyperopt-list avg-time filters
These should use a numeric field (which currently isn't available).

closes #5061
2021-05-31 20:01:40 +02:00
Matthias 8a56af9192 Update onlyprofit loss should use absolute profit
closes #4934
2021-05-28 08:38:46 +02:00
Matthias a89364aa98 Merge branch 'develop' into pr/Antreasgr/4838 2021-05-27 14:59:39 +02:00
Matthias 3014bc3467 Don't use Sum sign in hyperopt to avoid compatibility problems 2021-05-27 14:22:11 +02:00
Matthias cf39dd2163 Fix csv-export error with new hyperopt format 2021-05-27 13:08:28 +02:00
Matthias 8e89d3e6e4 Fix sort error 2021-05-25 19:33:34 +02:00
Matthias cc5769e900 Convert np.int64 to proper int
closes #5018
2021-05-25 19:24:56 +02:00
Rikj000 bd44deea0d BugFix - hyperopt-show --print-json include non-optimized params 2021-05-24 18:51:33 +02:00
Matthias af16614bf2 Fix formatting issue 2021-05-24 07:48:36 +02:00
Priveyes 6f990c5976
Fix a rare error in save_result : ValueError: Out of range float values are not JSON compliant
freqtrade/freqtrade/optimize/hyperopt.py", line 166, in _save_result
    rapidjson.dump(epoch, f, default=str, number_mode=rapidjson.NM_NATIVE)
ValueError: Out of range float values are not JSON compliant
2021-05-23 18:49:07 +02:00
Matthias 971d5b2ecc
Merge pull request #5002 from freqtrade/track_rejected_trades
Track rejected trades
2021-05-23 14:56:50 +01:00
Matthias 3f956441fc Properly format % of zero_duration_trades 2021-05-23 15:53:54 +02:00
Matthias a39860e0de Add tests for rejected signals 2021-05-23 14:15:02 +02:00
Matthias 7f125315b0 Track Rejected Trades
closes #3423
2021-05-23 09:42:05 +02:00
Matthias 02faeb60a3
Merge pull request #4943 from rokups/rk/statistics
Extra statistics
2021-05-23 08:38:27 +01:00