mirror of
https://github.com/freqtrade/freqtrade.git
synced 2025-11-29 08:33:07 +00:00
2885 lines
109 KiB
HTML
2885 lines
109 KiB
HTML
|
||
<!doctype html>
|
||
<html lang="en" class="no-js">
|
||
<head>
|
||
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
|
||
<meta name="description" content="Freqtrade is a free and open source crypto trading bot written in Python, designed to support all major exchanges and be controlled via Telegram or builtin Web UI">
|
||
|
||
|
||
|
||
<link rel="canonical" href="https://www.freqtrade.io/en/stable/backtesting/">
|
||
|
||
|
||
<link rel="prev" href="../data-download/">
|
||
|
||
|
||
<link rel="next" href="../hyperopt/">
|
||
|
||
|
||
<link rel="icon" href="../images/logo.png">
|
||
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.21">
|
||
|
||
|
||
|
||
<title>Backtesting - Freqtrade</title>
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="../assets/stylesheets/main.2a3383ac.min.css">
|
||
|
||
|
||
<link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
||
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="../stylesheets/ft.extra.css">
|
||
|
||
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config","G-VH170LG9M5"),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","G-VH170LG9M5",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=G-VH170LG9M5",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
|
||
|
||
<script>"undefined"!=typeof __md_analytics&&__md_analytics()</script>
|
||
|
||
|
||
|
||
|
||
|
||
</head>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="blue-grey" data-md-color-accent="tear">
|
||
|
||
|
||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||
<label class="md-overlay" for="__drawer"></label>
|
||
<div data-md-component="skip">
|
||
|
||
|
||
<a href="#backtesting" class="md-skip">
|
||
Skip to content
|
||
</a>
|
||
|
||
</div>
|
||
<div data-md-component="announce">
|
||
|
||
</div>
|
||
|
||
<div data-md-color-scheme="default" data-md-component="outdated" hidden>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<header class="md-header md-header--shadow" data-md-component="header">
|
||
<nav class="md-header__inner md-grid" aria-label="Header">
|
||
<a href=".." title="Freqtrade" class="md-header__button md-logo" aria-label="Freqtrade" data-md-component="logo">
|
||
|
||
<img src="../images/logo.png" alt="logo">
|
||
|
||
</a>
|
||
<label class="md-header__button md-icon" for="__drawer">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
|
||
</label>
|
||
<div class="md-header__title" data-md-component="header-title">
|
||
<div class="md-header__ellipsis">
|
||
<div class="md-header__topic">
|
||
<span class="md-ellipsis">
|
||
Freqtrade
|
||
</span>
|
||
</div>
|
||
<div class="md-header__topic" data-md-component="header-topic">
|
||
<span class="md-ellipsis">
|
||
|
||
Backtesting
|
||
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<form class="md-header__option" data-md-component="palette">
|
||
|
||
|
||
|
||
|
||
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="blue-grey" data-md-color-accent="tear" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
|
||
|
||
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6m0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4M7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"/></svg>
|
||
</label>
|
||
|
||
|
||
|
||
|
||
|
||
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="blue-grey" data-md-color-accent="tear" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
|
||
|
||
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3"/></svg>
|
||
</label>
|
||
|
||
|
||
</form>
|
||
|
||
|
||
|
||
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-header__button md-icon" for="__search">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
||
</label>
|
||
<div class="md-search" data-md-component="search" role="dialog">
|
||
<label class="md-search__overlay" for="__search"></label>
|
||
<div class="md-search__inner" role="search">
|
||
<form class="md-search__form" name="search">
|
||
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||
<label class="md-search__icon md-icon" for="__search">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
||
</label>
|
||
<nav class="md-search__options" aria-label="Search">
|
||
|
||
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
|
||
</a>
|
||
|
||
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
|
||
</button>
|
||
</nav>
|
||
|
||
</form>
|
||
<div class="md-search__output">
|
||
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
|
||
<div class="md-search-result" data-md-component="search-result">
|
||
<div class="md-search-result__meta">
|
||
Initializing search
|
||
</div>
|
||
<ol class="md-search-result__list" role="presentation"></ol>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="md-header__source">
|
||
<a href="https://github.com/freqtrade/freqtrade" title="Go to repository" class="md-source" data-md-component="source">
|
||
<div class="md-source__icon md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
|
||
</div>
|
||
<div class="md-source__repository">
|
||
GitHub
|
||
</div>
|
||
</a>
|
||
</div>
|
||
|
||
</nav>
|
||
|
||
</header>
|
||
|
||
<div class="md-container" data-md-component="container">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<main class="md-main" data-md-component="main">
|
||
<div class="md-main__inner md-grid">
|
||
|
||
|
||
<!-- Main navigation -->
|
||
|
||
|
||
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||
<div class="md-sidebar__scrollwrap">
|
||
<div class="md-sidebar__inner">
|
||
|
||
|
||
|
||
|
||
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
||
<label class="md-nav__title" for="__drawer">
|
||
<a href=".." title="Freqtrade" class="md-nav__button md-logo" aria-label="Freqtrade" data-md-component="logo">
|
||
|
||
<img src="../images/logo.png" alt="logo">
|
||
|
||
</a>
|
||
Freqtrade
|
||
</label>
|
||
|
||
<div class="md-nav__source">
|
||
<a href="https://github.com/freqtrade/freqtrade" title="Go to repository" class="md-source" data-md-component="source">
|
||
<div class="md-source__icon md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
|
||
</div>
|
||
<div class="md-source__repository">
|
||
GitHub
|
||
</div>
|
||
</a>
|
||
</div>
|
||
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href=".." class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Home
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../docker_quickstart/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Quickstart with Docker
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Installation
|
||
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_3">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Installation
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../installation/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Linux/MacOS/Raspberry
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../windows_installation/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Windows
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../bot-basics/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Freqtrade Basics
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../configuration/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Configuration
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../strategy-101/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Strategy Quickstart
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../strategy-customization/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Strategy Customization
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../strategy-callbacks/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Strategy Callbacks
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../stoploss/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Stoploss
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../plugins/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Plugins
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../bot-usage/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Start the bot
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_12" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_12" id="__nav_12_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Control the bot
|
||
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_12_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_12">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Control the bot
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../telegram-usage/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Telegram
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../freq-ui/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
freqUI
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../rest-api/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
REST API
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../webhook-config/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Web Hook
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../data-download/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Data Downloading
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--active">
|
||
|
||
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Backtesting
|
||
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<a href="./" class="md-nav__link md-nav__link--active">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Backtesting
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
|
||
|
||
|
||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Table of contents
|
||
</label>
|
||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#backtesting-command-reference" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Backtesting command reference
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#test-your-strategy-with-backtesting" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Test your strategy with Backtesting
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Test your strategy with Backtesting">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#starting-balance" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Starting balance
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#dynamic-stake-amount" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Dynamic stake amount
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#example-backtesting-commands" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Example backtesting commands
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#understand-the-backtesting-result" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Understand the backtesting result
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Understand the backtesting result">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#backtesting-report-table" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Backtesting report table
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#left-open-trades-table" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Left open trades table
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#enter-tag-stats-table" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Enter tag stats table
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#exit-reason-stats-table" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Exit reason stats table
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#mixed-tag-stats-table" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Mixed tag stats table
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#summary-metrics" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Summary metrics
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#daily-weekly-monthly-yearly-breakdown" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Daily / Weekly / Monthly / Yearly breakdown
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#backtest-result-caching" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Backtest result caching
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#further-backtest-result-analysis" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Further backtest-result analysis
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#backtest-output-file" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Backtest output file
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#assumptions-made-by-backtesting" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Assumptions made by backtesting
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Assumptions made by backtesting">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#trading-limits-in-backtesting" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Trading limits in backtesting
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Trading limits in backtesting">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#trading-precision-limits" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Trading precision limits
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#improved-backtest-accuracy" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Improved backtest accuracy
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#backtesting-multiple-strategies" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Backtesting multiple strategies
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#next-step" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Next step
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../hyperopt/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Hyperopt
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_16" id="__nav_16_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
FreqAI
|
||
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_16">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
FreqAI
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../freqai/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Introduction
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../freqai-configuration/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Configuration
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../freqai-parameter-table/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Parameter table
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../freqai-feature-engineering/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Feature engineering
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../freqai-running/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Running FreqAI
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../freqai-reinforcement-learning/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Reinforcement Learning
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../freqai-developers/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Developer guide
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../leverage/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Short / Leverage
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../utils/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Utility Sub-commands
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../plotting/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Plotting
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../exchanges/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Exchange-specific Notes
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_21" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_21" id="__nav_21_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Data Analysis
|
||
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_21_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_21">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Data Analysis
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../data-analysis/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Jupyter Notebooks
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../strategy_analysis_example/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Strategy analysis
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../advanced-backtesting/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Backtest analysis
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_22" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_22" id="__nav_22_label" tabindex="0">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Advanced Topics
|
||
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_22_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_22">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Advanced Topics
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../advanced-setup/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Advanced Post-installation Tasks
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../trade-object/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Trade Object
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../lookahead-analysis/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Lookahead analysis
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../recursive-analysis/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Recursive analysis
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../strategy-advanced/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Advanced Strategy
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../advanced-hyperopt/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Advanced Hyperopt
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../advanced-orderflow/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Orderflow
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../producer-consumer/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Producer/Consumer mode
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../sql_cheatsheet/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
SQL Cheat-sheet
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../faq/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
FAQ
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../strategy_migration/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Strategy migration
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../updating/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Updating Freqtrade
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../deprecated/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Deprecated Features
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../developer/" class="md-nav__link">
|
||
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Contributors Guide
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<!-- Table of contents -->
|
||
|
||
|
||
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
||
<div class="md-sidebar__scrollwrap">
|
||
<div class="md-sidebar__inner">
|
||
|
||
|
||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Table of contents
|
||
</label>
|
||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#backtesting-command-reference" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Backtesting command reference
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#test-your-strategy-with-backtesting" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Test your strategy with Backtesting
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Test your strategy with Backtesting">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#starting-balance" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Starting balance
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#dynamic-stake-amount" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Dynamic stake amount
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#example-backtesting-commands" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Example backtesting commands
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#understand-the-backtesting-result" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Understand the backtesting result
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Understand the backtesting result">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#backtesting-report-table" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Backtesting report table
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#left-open-trades-table" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Left open trades table
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#enter-tag-stats-table" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Enter tag stats table
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#exit-reason-stats-table" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Exit reason stats table
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#mixed-tag-stats-table" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Mixed tag stats table
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#summary-metrics" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Summary metrics
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#daily-weekly-monthly-yearly-breakdown" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Daily / Weekly / Monthly / Yearly breakdown
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#backtest-result-caching" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Backtest result caching
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#further-backtest-result-analysis" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Further backtest-result analysis
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#backtest-output-file" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Backtest output file
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#assumptions-made-by-backtesting" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Assumptions made by backtesting
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Assumptions made by backtesting">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#trading-limits-in-backtesting" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Trading limits in backtesting
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Trading limits in backtesting">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#trading-precision-limits" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Trading precision limits
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#improved-backtest-accuracy" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Improved backtest accuracy
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#backtesting-multiple-strategies" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Backtesting multiple strategies
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#next-step" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Next step
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="md-content" data-md-component="content">
|
||
<article class="md-content__inner md-typeset">
|
||
|
||
|
||
|
||
|
||
|
||
<a href="https://github.com/freqtrade/freqtrade/edit/develop/docs/backtesting.md" title="Edit this page" class="md-content__button md-icon" rel="edit">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg>
|
||
</a>
|
||
|
||
|
||
|
||
|
||
<h1 id="backtesting">Backtesting<a class="headerlink" href="#backtesting" title="Permanent link">¶</a></h1>
|
||
<p>This page explains how to validate your strategy performance by using Backtesting.</p>
|
||
<p>Backtesting requires historic data to be available.
|
||
To learn how to get data for the pairs and exchange you're interested in, head over to the <a href="../data-download/">Data Downloading</a> section of the documentation.</p>
|
||
<p>Backtesting is also available in <a href="../freq-ui/#backtesting">webserver mode</a>, which allows you to run backtests via the web interface.</p>
|
||
<h2 id="backtesting-command-reference">Backtesting command reference<a class="headerlink" href="#backtesting-command-reference" title="Permanent link">¶</a></h2>
|
||
<div class="highlight"><pre><span></span><code>usage: freqtrade backtesting [-h] [-v] [--no-color] [--logfile FILE] [-V]
|
||
[-c PATH] [-d PATH] [--userdir PATH] [-s NAME]
|
||
[--strategy-path PATH]
|
||
[--recursive-strategy-search]
|
||
[--freqaimodel NAME] [--freqaimodel-path PATH]
|
||
[-i TIMEFRAME] [--timerange TIMERANGE]
|
||
[--data-format-ohlcv {json,jsongz,feather,parquet}]
|
||
[--max-open-trades INT]
|
||
[--stake-amount STAKE_AMOUNT] [--fee FLOAT]
|
||
[-p PAIRS [PAIRS ...]] [--eps]
|
||
[--enable-protections]
|
||
[--enable-dynamic-pairlist]
|
||
[--dry-run-wallet DRY_RUN_WALLET]
|
||
[--timeframe-detail TIMEFRAME_DETAIL]
|
||
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
|
||
[--export {none,trades,signals}]
|
||
[--backtest-filename PATH]
|
||
[--backtest-directory PATH]
|
||
[--breakdown {day,week,month,year} [{day,week,month,year} ...]]
|
||
[--cache {none,day,week,month}]
|
||
[--freqai-backtest-live-models] [--notes TEXT]
|
||
|
||
options:
|
||
-h, --help show this help message and exit
|
||
-i TIMEFRAME, --timeframe TIMEFRAME
|
||
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
|
||
--timerange TIMERANGE
|
||
Specify what timerange of data to use.
|
||
--data-format-ohlcv {json,jsongz,feather,parquet}
|
||
Storage format for downloaded candle (OHLCV) data.
|
||
(default: `feather`).
|
||
--max-open-trades INT
|
||
Override the value of the `max_open_trades`
|
||
configuration setting.
|
||
--stake-amount STAKE_AMOUNT
|
||
Override the value of the `stake_amount` configuration
|
||
setting.
|
||
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
|
||
entry and exit).
|
||
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
|
||
Limit command to these pairs. Pairs are space-
|
||
separated.
|
||
--eps, --enable-position-stacking
|
||
Allow buying the same pair multiple times (position
|
||
stacking).
|
||
--enable-protections, --enableprotections
|
||
Enable protections for backtesting. Will slow
|
||
backtesting down by a considerable amount, but will
|
||
include configured protections
|
||
--enable-dynamic-pairlist
|
||
Enables dynamic pairlist refreshes in backtesting. The
|
||
pairlist will be generated for each new candle if
|
||
you're using a pairlist handler that supports this
|
||
feature, for example, ShuffleFilter.
|
||
--dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET
|
||
Starting balance, used for backtesting / hyperopt and
|
||
dry-runs.
|
||
--timeframe-detail TIMEFRAME_DETAIL
|
||
Specify detail timeframe for backtesting (`1m`, `5m`,
|
||
`30m`, `1h`, `1d`).
|
||
--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]
|
||
Provide a space-separated list of strategies to
|
||
backtest. Please note that timeframe needs to be set
|
||
either in config or via command line. When using this
|
||
together with `--export trades`, the strategy-name is
|
||
injected into the filename (so `backtest-data.json`
|
||
becomes `backtest-data-SampleStrategy.json`
|
||
--export {none,trades,signals}
|
||
Export backtest results (default: trades).
|
||
--backtest-filename PATH, --export-filename PATH
|
||
Use this filename for backtest results.Example:
|
||
`--backtest-
|
||
filename=backtest_results_2020-09-27_16-20-48.json`.
|
||
Assumes either `user_data/backtest_results/` or
|
||
`--export-directory` as base directory.
|
||
--backtest-directory PATH, --export-directory PATH
|
||
Directory to use for backtest results. Example:
|
||
`--export-directory=user_data/backtest_results/`.
|
||
--breakdown {day,week,month,year} [{day,week,month,year} ...]
|
||
Show backtesting breakdown per [day, week, month,
|
||
year].
|
||
--cache {none,day,week,month}
|
||
Load a cached backtest result no older than specified
|
||
age (default: day).
|
||
--freqai-backtest-live-models
|
||
Run backtest with ready models.
|
||
--notes TEXT Add notes to the backtest results.
|
||
|
||
Common arguments:
|
||
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
|
||
--no-color Disable colorization of hyperopt results. May be
|
||
useful if you are redirecting output to a file.
|
||
--logfile FILE, --log-file FILE
|
||
Log to the file specified. Special values are:
|
||
'syslog', 'journald'. See the documentation for more
|
||
details.
|
||
-V, --version show program's version number and exit
|
||
-c PATH, --config PATH
|
||
Specify configuration file (default:
|
||
`userdir/config.json` or `config.json` whichever
|
||
exists). Multiple --config options may be used. Can be
|
||
set to `-` to read config from stdin.
|
||
-d PATH, --datadir PATH, --data-dir PATH
|
||
Path to the base directory of the exchange with
|
||
historical backtesting data. To see futures data, use
|
||
trading-mode additionally.
|
||
--userdir PATH, --user-data-dir PATH
|
||
Path to userdata directory.
|
||
|
||
Strategy arguments:
|
||
-s NAME, --strategy NAME
|
||
Specify strategy class name which will be used by the
|
||
bot.
|
||
--strategy-path PATH Specify additional strategy lookup path.
|
||
--recursive-strategy-search
|
||
Recursively search for a strategy in the strategies
|
||
folder.
|
||
--freqaimodel NAME Specify a custom freqaimodels.
|
||
--freqaimodel-path PATH
|
||
Specify additional lookup path for freqaimodels.
|
||
</code></pre></div>
|
||
<h2 id="test-your-strategy-with-backtesting">Test your strategy with Backtesting<a class="headerlink" href="#test-your-strategy-with-backtesting" title="Permanent link">¶</a></h2>
|
||
<p>Now you have good Entry and exit strategies and some historic data, you want to test it against
|
||
real data. This is what we call <a href="https://en.wikipedia.org/wiki/Backtesting">backtesting</a>.</p>
|
||
<p>Backtesting will use the crypto-currencies (pairs) from your config file and load historical candle (OHLCV) data from <code>user_data/data/<exchange></code> by default.
|
||
If no data is available for the exchange / pair / timeframe combination, backtesting will ask you to download them first using <code>freqtrade download-data</code>.
|
||
For details on downloading, please refer to the <a href="../data-download/">Data Downloading</a> section in the documentation.</p>
|
||
<p>The result of backtesting will confirm if your bot has better odds of making a profit than a loss.</p>
|
||
<p>All profit calculations include fees, and freqtrade will use the exchange's default fees for the calculation.</p>
|
||
<div class="admonition warning">
|
||
<p class="admonition-title">Using dynamic pairlists for backtesting</p>
|
||
<p>Using dynamic pairlists is possible (not all of the handlers are allowed to be used in backtest mode), however it relies on the current market conditions - which will not reflect the historic status of the pairlist.
|
||
Also, when using pairlists other than StaticPairlist, reproducibility of backtesting-results cannot be guaranteed.
|
||
Please read the <a href="../plugins/#pairlists">pairlists documentation</a> for more information.</p>
|
||
<p>To achieve reproducible results, best generate a pairlist via the <a href="../utils/#test-pairlist"><code>test-pairlist</code></a> command and use that as static pairlist.</p>
|
||
</div>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>By default, Freqtrade will export backtesting results to <code>user_data/backtest_results</code>.
|
||
The exported trades can be used for <a href="#further-backtest-result-analysis">further analysis</a> or can be used by the <a href="../plotting/#plot-price-and-indicators">plotting sub-command</a> (<code>freqtrade plot-dataframe</code>) in the scripts directory.</p>
|
||
</div>
|
||
<h3 id="starting-balance">Starting balance<a class="headerlink" href="#starting-balance" title="Permanent link">¶</a></h3>
|
||
<p>Backtesting will require a starting balance, which can be provided as <code>--dry-run-wallet <balance></code> or <code>--starting-balance <balance></code> command line argument, or via <code>dry_run_wallet</code> configuration setting.
|
||
This amount must be higher than <code>stake_amount</code>, otherwise the bot will not be able to simulate any trade.</p>
|
||
<h3 id="dynamic-stake-amount">Dynamic stake amount<a class="headerlink" href="#dynamic-stake-amount" title="Permanent link">¶</a></h3>
|
||
<p>Backtesting supports <a href="../configuration/#dynamic-stake-amount">dynamic stake amount</a> by configuring <code>stake_amount</code> as <code>"unlimited"</code>, which will split the starting balance into <code>max_open_trades</code> pieces.
|
||
Profits from early trades will result in subsequent higher stake amounts, resulting in compounding of profits over the backtesting period.</p>
|
||
<h3 id="example-backtesting-commands">Example backtesting commands<a class="headerlink" href="#example-backtesting-commands" title="Permanent link">¶</a></h3>
|
||
<p>With 5 min candle (OHLCV) data (per default)</p>
|
||
<div class="highlight"><pre><span></span><code>freqtrade<span class="w"> </span>backtesting<span class="w"> </span>--strategy<span class="w"> </span>AwesomeStrategy
|
||
</code></pre></div>
|
||
<p>Where <code>--strategy AwesomeStrategy</code> / <code>-s AwesomeStrategy</code> refers to the class name of the strategy, which is within a python file in the <code>user_data/strategies</code> directory.</p>
|
||
<hr />
|
||
<p>With 1 min candle (OHLCV) data</p>
|
||
<div class="highlight"><pre><span></span><code>freqtrade<span class="w"> </span>backtesting<span class="w"> </span>--strategy<span class="w"> </span>AwesomeStrategy<span class="w"> </span>--timeframe<span class="w"> </span>1m
|
||
</code></pre></div>
|
||
<hr />
|
||
<p>Providing a custom starting balance of 1000 (in stake currency)</p>
|
||
<div class="highlight"><pre><span></span><code>freqtrade<span class="w"> </span>backtesting<span class="w"> </span>--strategy<span class="w"> </span>AwesomeStrategy<span class="w"> </span>--dry-run-wallet<span class="w"> </span><span class="m">1000</span>
|
||
</code></pre></div>
|
||
<hr />
|
||
<p>Using a different on-disk historical candle (OHLCV) data source</p>
|
||
<p>Assume you downloaded the history data from the Binance exchange and kept it in the <code>user_data/data/binance-20180101</code> directory.
|
||
You can then use this data for backtesting as follows:</p>
|
||
<div class="highlight"><pre><span></span><code>freqtrade<span class="w"> </span>backtesting<span class="w"> </span>--strategy<span class="w"> </span>AwesomeStrategy<span class="w"> </span>--datadir<span class="w"> </span>user_data/data/binance-20180101<span class="w"> </span>
|
||
</code></pre></div>
|
||
<hr />
|
||
<p>Comparing multiple Strategies</p>
|
||
<div class="highlight"><pre><span></span><code>freqtrade<span class="w"> </span>backtesting<span class="w"> </span>--strategy-list<span class="w"> </span>SampleStrategy1<span class="w"> </span>AwesomeStrategy<span class="w"> </span>--timeframe<span class="w"> </span>5m
|
||
</code></pre></div>
|
||
<p>Where <code>SampleStrategy1</code> and <code>AwesomeStrategy</code> refer to class names of strategies.</p>
|
||
<hr />
|
||
<p>Prevent exporting trades to file</p>
|
||
<div class="highlight"><pre><span></span><code>freqtrade<span class="w"> </span>backtesting<span class="w"> </span>--strategy<span class="w"> </span>backtesting<span class="w"> </span>--export<span class="w"> </span>none<span class="w"> </span>--config<span class="w"> </span>config.json<span class="w"> </span>
|
||
</code></pre></div>
|
||
<p>Only use this if you're sure you'll not want to plot or analyze your results further.</p>
|
||
<hr />
|
||
<p>Exporting trades to file specifying a custom directory</p>
|
||
<div class="highlight"><pre><span></span><code>freqtrade<span class="w"> </span>backtesting<span class="w"> </span>--strategy<span class="w"> </span>backtesting<span class="w"> </span>--export<span class="w"> </span>trades<span class="w"> </span>--backtest-directory<span class="o">=</span>user_data/custom-backtest-results
|
||
</code></pre></div>
|
||
<hr />
|
||
<p>Please also read about the <a href="../strategy-customization/#strategy-startup-period">strategy startup period</a>.</p>
|
||
<hr />
|
||
<p>Supplying custom fee value</p>
|
||
<p>Sometimes your account has certain fee rebates (fee reductions starting with a certain account size or monthly volume), which are not visible to ccxt.
|
||
To account for this in backtesting, you can use the <code>--fee</code> command line option to supply this value to backtesting.
|
||
This fee must be a ratio, and will be applied twice (once for trade entry, and once for trade exit).</p>
|
||
<p>For example, if the commission fee per order is 0.1% (i.e., 0.001 written as ratio), then you would run backtesting as the following:</p>
|
||
<div class="highlight"><pre><span></span><code>freqtrade<span class="w"> </span>backtesting<span class="w"> </span>--fee<span class="w"> </span><span class="m">0</span>.001
|
||
</code></pre></div>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>Only supply this option (or the corresponding configuration parameter) if you want to experiment with different fee values. By default, Backtesting fetches the default fee from the exchange pair/market info.</p>
|
||
</div>
|
||
<hr />
|
||
<p>Running backtest with smaller test-set by using timerange</p>
|
||
<p>Use the <code>--timerange</code> argument to change how much of the test-set you want to use.</p>
|
||
<p>For example, running backtesting with the <code>--timerange=20190501-</code> option will use all available data starting with May 1<sup>st</sup>, 2019 from your input data.</p>
|
||
<div class="highlight"><pre><span></span><code>freqtrade<span class="w"> </span>backtesting<span class="w"> </span>--timerange<span class="o">=</span><span class="m">20190501</span>-
|
||
</code></pre></div>
|
||
<p>You can also specify particular date ranges.</p>
|
||
<p>The full timerange specification:</p>
|
||
<ul>
|
||
<li>Use data until 2018/01/31: <code>--timerange=-20180131</code></li>
|
||
<li>Use data since 2018/01/31: <code>--timerange=20180131-</code></li>
|
||
<li>Use data since 2018/01/31 till 2018/03/01 : <code>--timerange=20180131-20180301</code></li>
|
||
<li>Use data between POSIX / epoch timestamps 1527595200 1527618600: <code>--timerange=1527595200-1527618600</code></li>
|
||
</ul>
|
||
<h2 id="understand-the-backtesting-result">Understand the backtesting result<a class="headerlink" href="#understand-the-backtesting-result" title="Permanent link">¶</a></h2>
|
||
<p>The most important in the backtesting is to understand the result.</p>
|
||
<p>A backtesting result will look like that:</p>
|
||
<div class="highlight"><pre><span></span><code> BACKTESTING REPORT
|
||
┏━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||
┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||
┡━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||
│ LTC/USDT:USDT │ 16 │ 1.0 │ 56.176 │ 5.62 │ 16:16:00 │ 16 0 0 100 │
|
||
│ ETC/USDT:USDT │ 12 │ 0.72 │ 30.936 │ 3.09 │ 9:55:00 │ 11 0 1 91.7 │
|
||
│ ETH/USDT:USDT │ 8 │ 0.66 │ 17.864 │ 1.79 │ 1 day, 13:55:00 │ 7 0 1 87.5 │
|
||
│ XLM/USDT:USDT │ 10 │ 0.31 │ 11.054 │ 1.11 │ 12:08:00 │ 9 0 1 90.0 │
|
||
│ BTC/USDT:USDT │ 8 │ 0.21 │ 7.289 │ 0.73 │ 3 days, 1:24:00 │ 6 0 2 75.0 │
|
||
│ XRP/USDT:USDT │ 9 │ -0.14 │ -7.261 │ -0.73 │ 21:18:00 │ 8 0 1 88.9 │
|
||
│ DOT/USDT:USDT │ 6 │ -0.4 │ -9.187 │ -0.92 │ 5:35:00 │ 4 0 2 66.7 │
|
||
│ ADA/USDT:USDT │ 8 │ -1.76 │ -52.098 │ -5.21 │ 11:38:00 │ 6 0 2 75.0 │
|
||
│ TOTAL │ 77 │ 0.22 │ 54.774 │ 5.48 │ 22:12:00 │ 67 0 10 87.0 │
|
||
└───────────────┴────────┴──────────────┴─────────────────┴──────────────┴─────────────────┴────────────────────────┘
|
||
LEFT OPEN TRADES REPORT
|
||
┏━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||
┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||
┡━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||
│ BTC/USDT:USDT │ 1 │ -4.14 │ -9.930 │ -0.99 │ 17 days, 8:00:00 │ 0 0 1 0 │
|
||
│ ETC/USDT:USDT │ 1 │ -4.24 │ -15.365 │ -1.54 │ 10:40:00 │ 0 0 1 0 │
|
||
│ DOT/USDT:USDT │ 1 │ -5.29 │ -19.125 │ -1.91 │ 11:30:00 │ 0 0 1 0 │
|
||
│ TOTAL │ 3 │ -4.56 │ -44.420 │ -4.44 │ 6 days, 2:03:00 │ 0 0 3 0 │
|
||
└───────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────────┴────────────────────────┘
|
||
ENTER TAG STATS
|
||
┏━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||
┃ Enter Tag ┃ Entries ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||
┡━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||
│ OTHER │ 77 │ 0.22 │ 54.774 │ 5.48 │ 22:12:00 │ 67 0 10 87.0 │
|
||
│ TOTAL │ 77 │ 0.22 │ 54.774 │ 5.48 │ 22:12:00 │ 67 0 10 87.0 │
|
||
└───────────┴─────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
|
||
EXIT REASON STATS
|
||
┏━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||
┃ Exit Reason ┃ Exits ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||
┡━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||
│ roi │ 67 │ 1.05 │ 242.179 │ 24.22 │ 15:49:00 │ 67 0 0 100 │
|
||
│ exit_signal │ 4 │ -2.23 │ -31.217 │ -3.12 │ 1 day, 8:38:00 │ 0 0 4 0 │
|
||
│ force_exit │ 3 │ -4.56 │ -44.420 │ -4.44 │ 6 days, 2:03:00 │ 0 0 3 0 │
|
||
│ stop_loss │ 3 │ -10.14 │ -111.768 │ -11.18 │ 1 day, 3:05:00 │ 0 0 3 0 │
|
||
│ TOTAL │ 77 │ 0.22 │ 54.774 │ 5.48 │ 22:12:00 │ 67 0 10 87.0 │
|
||
└─────────────┴───────┴──────────────┴─────────────────┴──────────────┴─────────────────┴────────────────────────┘
|
||
MIXED TAG STATS
|
||
┏━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||
┃ Enter Tag ┃ Exit Reason ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||
┡━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||
│ │ roi │ 67 │ 1.05 │ 242.179 │ 24.22 │ 15:49:00 │ 67 0 0 100 │
|
||
│ │ exit_signal │ 4 │ -2.23 │ -31.217 │ -3.12 │ 1 day, 8:38:00 │ 0 0 4 0 │
|
||
│ │ force_exit │ 3 │ -4.56 │ -44.420 │ -4.44 │ 6 days, 2:03:00 │ 0 0 3 0 │
|
||
│ │ stop_loss │ 3 │ -10.14 │ -111.768 │ -11.18 │ 1 day, 3:05:00 │ 0 0 3 0 │
|
||
│ TOTAL │ │ 77 │ 0.22 │ 54.774 │ 5.48 │ 22:12:00 │ 67 0 10 87.0 │
|
||
└───────────┴─────────────┴────────┴──────────────┴─────────────────┴──────────────┴─────────────────┴────────────────────────┘
|
||
SUMMARY METRICS
|
||
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||
┃ Metric ┃ Value ┃
|
||
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||
│ Backtesting from │ 2025-07-01 00:00:00 │
|
||
│ Backtesting to │ 2025-08-01 00:00:00 │
|
||
│ Trading Mode │ Isolated Futures │
|
||
│ Max open trades │ 3 │
|
||
│ │ │
|
||
│ Total/Daily Avg Trades │ 77 / 2.48 │
|
||
│ Starting balance │ 1000 USDT │
|
||
│ Final balance │ 1054.774 USDT │
|
||
│ Absolute profit │ 54.774 USDT │
|
||
│ Total profit % │ 5.48% │
|
||
│ CAGR % │ 87.36% │
|
||
│ Sortino │ 2.48 │
|
||
│ Sharpe │ 3.75 │
|
||
│ Calmar │ 40.99 │
|
||
│ SQN │ 0.69 │
|
||
│ Profit factor │ 1.29 │
|
||
│ Expectancy (Ratio) │ 0.71 (0.04) │
|
||
│ Avg. daily profit │ 1.767 USDT │
|
||
│ Avg. stake amount │ 345.016 USDT │
|
||
│ Total trade volume │ 53316.954 USDT │
|
||
│ │ │
|
||
│ Long / Short trades │ 67 / 10 │
|
||
│ Long / Short profit % │ 8.94% / -3.47% │
|
||
│ Long / Short profit USDT │ 89.425 / -34.651 │
|
||
│ │ │
|
||
│ Best Pair │ LTC/USDT:USDT 5.62% │
|
||
│ Worst Pair │ ADA/USDT:USDT -5.21% │
|
||
│ Best trade │ ETC/USDT:USDT 2.00% │
|
||
│ Worst trade │ ADA/USDT:USDT -10.17% │
|
||
│ Best day │ 26.91 USDT │
|
||
│ Worst day │ -47.741 USDT │
|
||
│ Days win/draw/lose │ 20 / 6 / 5 │
|
||
│ Min/Max/Avg. Duration Winners │ 0d 00:35 / 5d 18:15 / 0d 15:49 │
|
||
│ Min/Max/Avg. Duration Losers │ 0d 10:40 / 17d 08:00 / 2d 17:00 │
|
||
│ Max Consecutive Wins / Loss │ 36 / 3 │
|
||
│ Rejected Entry signals │ 258 │
|
||
│ Entry/Exit Timeouts │ 0 / 0 │
|
||
│ │ │
|
||
│ Min balance │ 1003.168 USDT │
|
||
│ Max balance │ 1149.421 USDT │
|
||
│ Max % of account underwater │ 8.23% │
|
||
│ Absolute drawdown │ 94.647 USDT (8.23%) │
|
||
│ Drawdown duration │ 9 days 08:50:00 │
|
||
│ Profit at drawdown start │ 149.421 USDT │
|
||
│ Profit at drawdown end │ 54.774 USDT │
|
||
│ Drawdown start │ 2025-07-22 15:10:00 │
|
||
│ Drawdown end │ 2025-08-01 00:00:00 │
|
||
│ Market change │ 30.51% │
|
||
└───────────────────────────────┴─────────────────────────────────┘
|
||
|
||
Backtested 2025-07-01 00:00:00 -> 2025-08-01 00:00:00 | Max open trades : 3
|
||
STRATEGY SUMMARY
|
||
┏━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┓
|
||
┃ Strategy ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃ Drawdown ┃
|
||
┡━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━┩
|
||
│ SampleStrategy │ 77 │ 0.22 │ 54.774 │ 5.48 │ 22:12:00 │ 67 0 10 87.0 │ 94.647 USDT 8.23% │
|
||
└────────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┴────────────────────┘
|
||
</code></pre></div>
|
||
<h3 id="backtesting-report-table">Backtesting report table<a class="headerlink" href="#backtesting-report-table" title="Permanent link">¶</a></h3>
|
||
<p>The first table contains all trades the bot made, including "left open trades".</p>
|
||
<p>The last line will give you the overall performance of your strategy,
|
||
here:</p>
|
||
<div class="highlight"><pre><span></span><code>│ TOTAL │ 77 │ 0.22 │ 54.774 │ 5.48 │ 22:12:00 │ 67 0 10 87.0 │
|
||
</code></pre></div>
|
||
<p>The bot has made <code>77</code> trades for an average duration of <code>22:12:00</code>, with a performance of <code>5.48%</code> (profit), that means it has earned a total of <code>54.774 USDT</code> starting with a capital of 1000 USDT.</p>
|
||
<p>The column <code>Avg Profit %</code> shows the average profit for all trades made.
|
||
The column <code>Tot Profit %</code> shows instead the total profit % in relation to the starting balance.</p>
|
||
<p>In the above results, we have a starting balance of 1000 USDT and an absolute profit of 54.774 USDT - so the <code>Tot Profit %</code> will be <code>(54.774 / 1000) * 100 ~= 5.48%</code>.</p>
|
||
<p>Your strategy performance is influenced by your entry strategy, your exit strategy, and also by the <code>minimal_roi</code> and <code>stop_loss</code> you have set.</p>
|
||
<p>For example, if your <code>minimal_roi</code> is only <code>"0": 0.01</code> you cannot expect the bot to make more profit than 1% (because it will exit every time a trade reaches 1%).</p>
|
||
<div class="highlight"><pre><span></span><code><span class="nt">"minimal_roi"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
|
||
<span class="w"> </span><span class="nt">"0"</span><span class="p">:</span><span class="w"> </span><span class="mf">0.01</span>
|
||
<span class="p">},</span>
|
||
</code></pre></div>
|
||
<p>On the other hand, if you set a too high <code>minimal_roi</code> like <code>"0": 0.55</code>
|
||
(55%), there is almost no chance that the bot will ever reach this profit.
|
||
Hence, keep in mind that your performance is an integral mix of all different elements of the strategy, your configuration, and the crypto-currency pairs you have set up.</p>
|
||
<h3 id="left-open-trades-table">Left open trades table<a class="headerlink" href="#left-open-trades-table" title="Permanent link">¶</a></h3>
|
||
<p>The second table contains all trades the bot had to <code>force_exit</code> at the end of the backtesting period to present you the full picture.
|
||
This is necessary to simulate realistic behavior, since the backtest period has to end at some point, while realistically, you could leave the bot running forever.
|
||
These trades are also included in the first table, but are also shown separately in this table for clarity.</p>
|
||
<h3 id="enter-tag-stats-table">Enter tag stats table<a class="headerlink" href="#enter-tag-stats-table" title="Permanent link">¶</a></h3>
|
||
<p>The third table provides a breakdown of trades by their entry tags (e.g., <code>enter_long</code>, <code>enter_short</code>), showing the number of entries, average profit percentage, total profit in the stake currency, total profit percentage, average duration, and the number of wins, draws, and losses for each tag.</p>
|
||
<h3 id="exit-reason-stats-table">Exit reason stats table<a class="headerlink" href="#exit-reason-stats-table" title="Permanent link">¶</a></h3>
|
||
<p>The fourth table contains a recap of exit reasons (e.g., <code>exit_signal</code>, <code>roi</code>, <code>stop_loss</code>, <code>force_exit</code>). This table can tell you which area needs additional work (e.g., if many <code>exit_signal</code> trades are losses, you should work on improving the exit signal or consider disabling it).</p>
|
||
<h3 id="mixed-tag-stats-table">Mixed tag stats table<a class="headerlink" href="#mixed-tag-stats-table" title="Permanent link">¶</a></h3>
|
||
<p>The fifth table combines entry tags and exit reasons, providing a detailed view of how different entry tags performed with specific exit reasons. This can help identify which combinations of entry and exit strategies are most effective.</p>
|
||
<h3 id="summary-metrics">Summary metrics<a class="headerlink" href="#summary-metrics" title="Permanent link">¶</a></h3>
|
||
<p>The last element of the backtest report is the summary metrics table.
|
||
It contains key metrics about the performance of your strategy on backtesting data.</p>
|
||
<div class="highlight"><pre><span></span><code>┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||
┃ Metric ┃ Value ┃
|
||
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||
│ Backtesting from │ 2025-07-01 00:00:00 │
|
||
│ Backtesting to │ 2025-08-01 00:00:00 │
|
||
│ Trading Mode │ Isolated Futures │
|
||
│ Max open trades │ 3 │
|
||
│ │ │
|
||
│ Total/Daily Avg Trades │ 72 / 2.32 │
|
||
│ Starting balance │ 1000 USDT │
|
||
│ Final balance │ 1106.734 USDT │
|
||
│ Absolute profit │ 106.734 USDT │
|
||
│ Total profit % │ 10.67% │
|
||
│ CAGR % │ 230.04% │
|
||
│ Sortino │ 4.99 │
|
||
│ Sharpe │ 8.00 │
|
||
│ Calmar │ 77.76 │
|
||
│ SQN │ 1.52 │
|
||
│ Profit factor │ 1.79 │
|
||
│ Expectancy (Ratio) │ 1.48 (0.07) │
|
||
│ Avg. daily profit │ 3.443 USDT │
|
||
│ Avg. stake amount │ 363.133 USDT │
|
||
│ Total trade volume │ 52466.174 USDT │
|
||
│ │ │
|
||
│ Best Pair │ LTC/USDT:USDT 4.48% │
|
||
│ Worst Pair │ ADA/USDT:USDT -1.78% │
|
||
│ Best trade │ ETC/USDT:USDT 2.00% │
|
||
│ Worst trade │ ADA/USDT:USDT -10.17% │
|
||
│ Best day │ 23.535 USDT │
|
||
│ Worst day │ -49.813 USDT │
|
||
│ Days win/draw/lose │ 21 / 6 / 4 │
|
||
│ Min/Max/Avg. Duration Winners │ 0d 00:35 / 5d 18:15 / 0d 15:30 │
|
||
│ Min/Max/Avg. Duration Losers │ 0d 12:00 / 17d 08:00 / 3d 23:28 │
|
||
│ Max Consecutive Wins / Loss │ 58 / 4 │
|
||
│ Rejected Entry signals │ 254 │
|
||
│ Entry/Exit Timeouts │ 0 / 0 │
|
||
│ │ │
|
||
│ Min balance │ 1003.168 USDT │
|
||
│ Max balance │ 1209 USDT │
|
||
│ Max % of account underwater │ 8.46% │
|
||
│ Absolute drawdown │ 102.266 USDT (8.46%) │
|
||
│ Drawdown duration │ 9 days 08:50:00 │
|
||
│ Profit at drawdown start │ 209 USDT │
|
||
│ Profit at drawdown end │ 106.734 USDT │
|
||
│ Drawdown start │ 2025-07-22 15:10:00 │
|
||
│ Drawdown end │ 2025-08-01 00:00:00 │
|
||
│ Market change │ 30.51% │
|
||
└───────────────────────────────┴─────────────────────────────────┘
|
||
</code></pre></div>
|
||
<ul>
|
||
<li><code>Backtesting from</code> / <code>Backtesting to</code>: Backtesting range (usually defined with the <code>--timerange</code> option).</li>
|
||
<li><code>Trading Mode</code>: Spot or Futures trading.</li>
|
||
<li><code>Max open trades</code>: Setting of <code>max_open_trades</code> (or <code>--max-open-trades</code>) - or number of pairs in the pairlist (whatever is lower).</li>
|
||
<li><code>Total/Daily Avg Trades</code>: Identical to the total trades of the backtest output table / Total trades divided by the backtesting duration in days (this will give you information about how many trades to expect from the strategy).</li>
|
||
<li><code>Starting balance</code>: Start balance - as given by dry-run-wallet (config or command line).</li>
|
||
<li><code>Final balance</code>: Final balance - starting balance + absolute profit.</li>
|
||
<li><code>Absolute profit</code>: Profit made in stake currency.</li>
|
||
<li><code>Total profit %</code>: Total profit. Aligned to the <code>TOTAL</code> row's <code>Tot Profit %</code> from the first table. Calculated as <code>(End capital − Starting capital) / Starting capital</code>.</li>
|
||
<li><code>CAGR %</code>: Compound annual growth rate.</li>
|
||
<li><code>Sortino</code>: Annualized Sortino ratio.</li>
|
||
<li><code>Sharpe</code>: Annualized Sharpe ratio.</li>
|
||
<li><code>Calmar</code>: Annualized Calmar ratio.</li>
|
||
<li><code>SQN</code>: System Quality Number (SQN) - by Van Tharp.</li>
|
||
<li><code>Profit factor</code>: Sum of the profits of all winning trades divided by the sum of the losses of all losing trades.</li>
|
||
<li><code>Expectancy (Ratio)</code>: Expectancy ratio, which is the average profit or loss per trade. A negative expectancy ratio means that your strategy is not profitable.</li>
|
||
<li><code>Avg. daily profit</code>: Average profit per day, calculated as <code>(Total Profit / Backtest Days)</code>.</li>
|
||
<li><code>Avg. stake amount</code>: Average stake amount, either <code>stake_amount</code> or the average when using dynamic stake amount.</li>
|
||
<li><code>Total trade volume</code>: Volume generated on the exchange to reach the above profit.</li>
|
||
<li><code>Long / Short trades</code>: Split long/short trade counts (only shown when short trades were made).</li>
|
||
<li><code>Long / Short profit %</code>: Profit percentage for long and short trades (only shown when short trades were made).</li>
|
||
<li><code>Long / Short profit USDT</code>: Profit in stake currency for long and short trades (only shown when short trades were made).</li>
|
||
<li><code>Best Pair</code> / <code>Worst Pair</code>: Best and worst performing pair (based on total profit percentage), and its corresponding <code>Tot Profit %</code>.</li>
|
||
<li><code>Best trade</code> / <code>Worst trade</code>: Biggest single winning trade and biggest single losing trade.</li>
|
||
<li><code>Best day</code> / <code>Worst day</code>: Best and worst day based on daily profit.</li>
|
||
<li><code>Days win/draw/lose</code>: Winning / Losing days (draws are usually days without closed trades).</li>
|
||
<li><code>Min/Max/Avg. Duration Winners</code>: Minimum, maximum, and average durations for winning trades.</li>
|
||
<li><code>Min/Max/Avg. Duration Losers</code>: Minimum, maximum, and average durations for losing trades.</li>
|
||
<li><code>Max Consecutive Wins / Loss</code>: Maximum consecutive wins/losses in a row.</li>
|
||
<li><code>Rejected Entry signals</code>: Trade entry signals that could not be acted upon due to <code>max_open_trades</code> being reached.</li>
|
||
<li><code>Entry/Exit Timeouts</code>: Entry/exit orders which did not fill (only applicable if custom pricing is used).</li>
|
||
<li><code>Min balance</code> / <code>Max balance</code>: Lowest and Highest Wallet balance during the backtest period.</li>
|
||
<li><code>Max % of account underwater</code>: Maximum percentage your account has decreased from the top since the simulation started. Calculated as the maximum of <code>(Max Balance - Current Balance) / (Max Balance)</code>.</li>
|
||
<li><code>Absolute drawdown</code>: Maximum absolute drawdown experienced, including percentage relative to the account calculated as <code>(Absolute Drawdown) / (DrawdownHigh + startingBalance)</code>..</li>
|
||
<li><code>Drawdown duration</code>: Duration of the largest drawdown period.</li>
|
||
<li><code>Profit at drawdown start</code> / <code>Profit at drawdown end</code>: Profit at the beginning and end of the largest drawdown period.</li>
|
||
<li><code>Drawdown start</code> / <code>Drawdown end</code>: Start and end datetime for the largest drawdown (can also be visualized via the <code>plot-dataframe</code> sub-command).</li>
|
||
<li><code>Market change</code>: Change of the market during the backtest period. Calculated as the average of all pairs' changes from the first to the last candle using the "close" column.</li>
|
||
</ul>
|
||
<h3 id="daily-weekly-monthly-yearly-breakdown">Daily / Weekly / Monthly / Yearly breakdown<a class="headerlink" href="#daily-weekly-monthly-yearly-breakdown" title="Permanent link">¶</a></h3>
|
||
<p>You can get an overview over daily, weekly, monthly, or yearly results by using the <code>--breakdown <></code> switch.</p>
|
||
<p>To visualize monthly and yearly breakdowns, you can use the following:</p>
|
||
<div class="highlight"><pre><span></span><code>freqtrade<span class="w"> </span>backtesting<span class="w"> </span>--strategy<span class="w"> </span>MyAwesomeStrategy<span class="w"> </span>--breakdown<span class="w"> </span>month<span class="w"> </span>year
|
||
</code></pre></div>
|
||
<div class="highlight"><pre><span></span><code><span class="go"> MONTH BREAKDOWN</span>
|
||
<span class="go">┏━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓</span>
|
||
<span class="go">┃ Month ┃ Trades ┃ Tot Profit USDT ┃ Profit Factor ┃ Win Draw Loss Win% ┃</span>
|
||
<span class="go">┡━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩</span>
|
||
<span class="go">│ 31/01/2020 │ 12 │ 44.451 │ 7.28 │ 10 0 2 83.3 │</span>
|
||
<span class="go">│ 29/02/2020 │ 30 │ 45.41 │ 2.36 │ 17 0 13 56.7 │</span>
|
||
<span class="go">│ 31/03/2020 │ 35 │ 142.024 │ 2.42 │ 14 0 21 40.0 │</span>
|
||
<span class="go">│ 30/04/2020 │ 67 │ -23.692 │ 0.81 │ 24 0 43 35.8 │</span>
|
||
<span class="go">...</span>
|
||
<span class="go">...</span>
|
||
<span class="go">│ 30/04/2025 │ 203 │ -63.43 │ 0.81 │ 73 0 130 36.0 │</span>
|
||
<span class="go">│ 31/05/2025 │ 142 │ 104.675 │ 1.28 │ 59 0 83 41.5 │</span>
|
||
<span class="go">│ 30/06/2025 │ 177 │ -1.014 │ 1.0 │ 85 0 92 48.0 │</span>
|
||
<span class="go">│ 31/07/2025 │ 155 │ 232.762 │ 1.6 │ 63 0 92 40.6 │</span>
|
||
<span class="go">└────────────┴────────┴─────────────────┴───────────────┴────────────────────────┘</span>
|
||
<span class="go"> YEAR BREAKDOWN</span>
|
||
<span class="go">┏━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓</span>
|
||
<span class="go">┃ Year ┃ Trades ┃ Tot Profit USDT ┃ Profit Factor ┃ Win Draw Loss Win% ┃</span>
|
||
<span class="go">┡━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩</span>
|
||
<span class="go">│ 31/12/2020 │ 896 │ 868.889 │ 1.46 │ 351 0 545 39.2 │</span>
|
||
<span class="go">│ 31/12/2021 │ 1778 │ 4487.163 │ 1.93 │ 745 0 1033 41.9 │</span>
|
||
<span class="go">│ 31/12/2022 │ 1736 │ 938.27 │ 1.27 │ 698 0 1038 40.2 │</span>
|
||
<span class="go">│ 31/12/2023 │ 1712 │ 1677.126 │ 1.68 │ 670 0 1042 39.1 │</span>
|
||
<span class="go">│ 31/12/2024 │ 1609 │ 3198.424 │ 2.22 │ 773 0 836 48.0 │</span>
|
||
<span class="go">│ 31/12/2025 │ 1042 │ 716.174 │ 1.33 │ 420 0 622 40.3 │</span>
|
||
<span class="go">└────────────┴────────┴─────────────────┴───────────────┴────────────────────────┘</span>
|
||
</code></pre></div>
|
||
<p>The output will display tables containing the realized absolute profit (in stake currency) for the selected period, along with additional statistics such as number of trades, profit factor, and distribution of wins, draws, and losses that materialized (closed) on this period.</p>
|
||
<h3 id="backtest-result-caching">Backtest result caching<a class="headerlink" href="#backtest-result-caching" title="Permanent link">¶</a></h3>
|
||
<p>To save time, by default backtest will reuse a cached result from within the last day when the backtested strategy and config match that of a previous backtest. To force a new backtest despite existing result for an identical run specify <code>--cache none</code> parameter.</p>
|
||
<div class="admonition warning">
|
||
<p class="admonition-title">Warning</p>
|
||
<p>Caching is automatically disabled for open-ended timeranges (<code>--timerange 20210101-</code>), as freqtrade cannot ensure reliably that the underlying data didn't change. It can also use cached results where it shouldn't if the original backtest had missing data at the end, which was fixed by downloading more data.
|
||
In this instance, please use <code>--cache none</code> once to force a fresh backtest.</p>
|
||
</div>
|
||
<h3 id="further-backtest-result-analysis">Further backtest-result analysis<a class="headerlink" href="#further-backtest-result-analysis" title="Permanent link">¶</a></h3>
|
||
<p>To further analyze your backtest results, freqtrade will export the trades to file by default.
|
||
You can then load the trades to perform further analysis as shown in the <a href="../strategy_analysis_example/#load-backtest-results-to-pandas-dataframe">data analysis</a> backtesting section.</p>
|
||
<p>Also, you can use freqtrade in <a href="../freq-ui/#backtesting">webserver mode</a> to visualize the backtest results in a web interface.
|
||
This mode also allows you to load existing backtest results, so you can analyze them without running the backtest again.<br />
|
||
For this mode - <code>--notes "<notes>"</code> can be used to add notes to the backtest results, which will be shown in the web interface.</p>
|
||
<h3 id="backtest-output-file">Backtest output file<a class="headerlink" href="#backtest-output-file" title="Permanent link">¶</a></h3>
|
||
<p>The output file freqtrade produces is a zip file containing the following files:</p>
|
||
<ul>
|
||
<li>The backtest report in json format</li>
|
||
<li>The market change data in feather format</li>
|
||
<li>A copy of the strategy file</li>
|
||
<li>A copy of the strategy parameters (if a parameter file was used)</li>
|
||
<li>A sanitized copy of the config file</li>
|
||
</ul>
|
||
<p>This will ensure results are reproducible - under the assumption that the same data is available.</p>
|
||
<p>Only the strategy file and the config file are included in the zip file, eventual dependencies are not included.</p>
|
||
<h2 id="assumptions-made-by-backtesting">Assumptions made by backtesting<a class="headerlink" href="#assumptions-made-by-backtesting" title="Permanent link">¶</a></h2>
|
||
<p>Since backtesting lacks some detailed information about what happens within a candle, it needs to take a few assumptions:</p>
|
||
<ul>
|
||
<li>Exchange <a href="#trading-limits-in-backtesting">trading limits</a> are respected</li>
|
||
<li>Entries happen at open-price unless a custom price logic has been specified</li>
|
||
<li>All orders are filled at the requested price (no slippage) as long as the price is within the candle's high/low range</li>
|
||
<li>Exit-signal exits happen at open-price of the consecutive candle</li>
|
||
<li>Exits free their trade slot for a new trade with a different pair</li>
|
||
<li>Exit-signal is favored over Stoploss, because exit-signals are assumed to trigger on candle's open</li>
|
||
<li>ROI<ul>
|
||
<li>Exits are compared to high - but the ROI value is used (e.g. ROI = 2%, high=5% - so the exit will be at 2%)</li>
|
||
<li>Exits are never "below the candle", so a ROI of 2% may result in an exit at 2.4% if low was at 2.4% profit</li>
|
||
<li>ROI entries which came into effect on the triggering candle (e.g. <code>120: 0.02</code> for 1h candles, from <code>60: 0.05</code>) will use the candle's open as exit rate</li>
|
||
<li>Force-exits caused by <code><N>=-1</code> ROI entries use low as exit value, unless N falls on the candle open (e.g. <code>120: -1</code> for 1h candles)</li>
|
||
</ul>
|
||
</li>
|
||
<li>Stoploss exits happen exactly at stoploss price, even if low was lower, but the loss will be <code>2 * fees</code> higher than the stoploss price</li>
|
||
<li>Stoploss is evaluated before ROI within one candle. So you can often see more trades with the <code>stoploss</code> exit reason comparing to the results obtained with the same strategy in the Dry Run/Live Trade modes</li>
|
||
<li>Low happens before high for stoploss, protecting capital first</li>
|
||
<li>Trailing stoploss<ul>
|
||
<li>Trailing Stoploss is only adjusted if it's below the candle's low (otherwise it would be triggered)</li>
|
||
<li>On trade entry candles that trigger trailing stoploss, the "minimum offset" (<code>stop_positive_offset</code>) is assumed (instead of high) - and the stop is calculated from this point. This rule is NOT applicable to custom-stoploss scenarios, since there's no information about the stoploss logic available.</li>
|
||
<li>High happens first - adjusting stoploss</li>
|
||
<li>Low uses the adjusted stoploss (so exits with large high-low difference are backtested correctly)</li>
|
||
<li>ROI applies before trailing-stop, ensuring profits are "top-capped" at ROI if both ROI and trailing stop applies</li>
|
||
</ul>
|
||
</li>
|
||
<li>Exit-reason does not explain if a trade was positive or negative, just what triggered the exit (this can look odd if negative ROI values are used)</li>
|
||
<li>Evaluation sequence (if multiple signals happen on the same candle)<ul>
|
||
<li>Exit-signal</li>
|
||
<li>Stoploss</li>
|
||
<li>ROI</li>
|
||
<li>Trailing stoploss</li>
|
||
</ul>
|
||
</li>
|
||
<li>Position reversals (futures only) happen if an entry signal in the other direction than the closing trade triggers at the candle the existing trade closes.</li>
|
||
</ul>
|
||
<p>Taking these assumptions, backtesting tries to mirror real trading as closely as possible. However, backtesting will <strong>never</strong> replace running a strategy in dry-run mode.
|
||
Also, keep in mind that past results don't guarantee future success.</p>
|
||
<p>In addition to the above assumptions, strategy authors should carefully read the <a href="../strategy-customization/#common-mistakes-when-developing-strategies">Common Mistakes</a> section, to avoid using data in backtesting which is not available in real market conditions.</p>
|
||
<h3 id="trading-limits-in-backtesting">Trading limits in backtesting<a class="headerlink" href="#trading-limits-in-backtesting" title="Permanent link">¶</a></h3>
|
||
<p>Exchanges have certain trading limits, like minimum (and maximum) base currency, or minimum/maximum stake (quote) currency.
|
||
These limits are usually listed in the exchange documentation as "trading rules" or similar and can be quite different between different pairs.</p>
|
||
<p>Backtesting (as well as live and dry-run) does honor these limits, and will ensure that a stoploss can be placed below this value - so the value will be slightly higher than what the exchange specifies.
|
||
Freqtrade has however no information about historic limits.</p>
|
||
<p>This can lead to situations where trading-limits are inflated by using a historic price, resulting in minimum amounts > 50$.</p>
|
||
<p>For example:</p>
|
||
<p>BTC minimum tradable amount is 0.001.
|
||
BTC trades at 22.000$ today (0.001 BTC is related to this) - but the backtesting period includes prices as high as 50.000$.
|
||
Today's minimum would be <code>0.001 * 22_000</code> - or 22$.<br />
|
||
However the limit could also be 50$ - based on <code>0.001 * 50_000</code> in some historic setting.</p>
|
||
<h4 id="trading-precision-limits">Trading precision limits<a class="headerlink" href="#trading-precision-limits" title="Permanent link">¶</a></h4>
|
||
<p>Most exchanges pose precision limits on both price and amounts, so you cannot buy 1.0020401 of a pair, or at a price of 1.24567123123.<br />
|
||
Instead, these prices and amounts will be rounded or truncated (based on the exchange definition) to the defined trading precision.
|
||
The above values may for example be rounded to an amount of 1.002, and a price of 1.24567.</p>
|
||
<p>These precision values are based on current exchange limits (as described in the <a href="#trading-limits-in-backtesting">above section</a>), as historic precision limits are not available.</p>
|
||
<h2 id="improved-backtest-accuracy">Improved backtest accuracy<a class="headerlink" href="#improved-backtest-accuracy" title="Permanent link">¶</a></h2>
|
||
<p>One big limitation of backtesting is it's inability to know how prices moved intra-candle (was high before close, or vice-versa?).
|
||
So assuming you run backtesting with a 1h timeframe, there will be 4 prices for that candle (Open, High, Low, Close).</p>
|
||
<p>While backtesting does take some assumptions (read above) about this - this can never be perfect, and will always be biased in one way or the other.
|
||
To mitigate this, freqtrade can use a lower (faster) timeframe to simulate intra-candle movements.</p>
|
||
<p>To utilize this, you can append <code>--timeframe-detail 5m</code> to your regular backtesting command.</p>
|
||
<div class="highlight"><pre><span></span><code>freqtrade<span class="w"> </span>backtesting<span class="w"> </span>--strategy<span class="w"> </span>AwesomeStrategy<span class="w"> </span>--timeframe<span class="w"> </span>1h<span class="w"> </span>--timeframe-detail<span class="w"> </span>5m
|
||
</code></pre></div>
|
||
<p>This will load 1h data (the main timeframe) as well as 5m data (detail timeframe) for the selected timerange.
|
||
The strategy will be analyzed with the 1h timeframe.
|
||
Candles where activity may take place (there's an active signal, the pair is in a trade) are evaluated at the 5m timeframe.
|
||
This will allow for a more accurate simulation of intra-candle movements - and can lead to different results, especially on higher timeframes.</p>
|
||
<p>Entries will generally still happen at the main candle's open, however freed trade slots may be freed earlier (if the exit signal is triggered on the 5m candle), which can then be used for a new trade of a different pair.</p>
|
||
<p>All callback functions (<code>custom_exit()</code>, <code>custom_stoploss()</code>, ... ) will be running for each 5m candle once the trade is opened (so 12 times in the above example of 1h timeframe, and 5m detailed timeframe).</p>
|
||
<p><code>--timeframe-detail</code> must be smaller than the original timeframe, otherwise backtesting will fail to start.</p>
|
||
<p>Obviously this will require more memory (5m data is bigger than 1h data), and will also impact runtime (depending on the amount of trades and trade durations).
|
||
Also, data must be available / downloaded already.</p>
|
||
<div class="admonition tip">
|
||
<p class="admonition-title">Tip</p>
|
||
<p>You can use this function as the last part of strategy development, to ensure your strategy is not exploiting one of the <a href="#assumptions-made-by-backtesting">backtesting assumptions</a>. Strategies that perform similarly well with this mode have a good chance to perform well in dry/live modes too (although only forward-testing (dry-mode) can really confirm a strategy).</p>
|
||
</div>
|
||
<details class="sample">
|
||
<summary>Extreme Difference Example</summary>
|
||
<p>Using <code>--timeframe-detail</code> on an extreme example (all below pairs have the 10:00 candle with an entry signal) may lead to the following backtesting Trade sequence with 1 max_open_trades:</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Pair</th>
|
||
<th>Entry Time</th>
|
||
<th>Exit Time</th>
|
||
<th>Duration</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>BTC/USDT</td>
|
||
<td>2024-01-01 10:00:00</td>
|
||
<td>2021-01-01 10:05:00</td>
|
||
<td>5m</td>
|
||
</tr>
|
||
<tr>
|
||
<td>ETH/USDT</td>
|
||
<td>2024-01-01 10:05:00</td>
|
||
<td>2021-01-01 10:15:00</td>
|
||
<td>10m</td>
|
||
</tr>
|
||
<tr>
|
||
<td>XRP/USDT</td>
|
||
<td>2024-01-01 10:15:00</td>
|
||
<td>2021-01-01 10:30:00</td>
|
||
<td>15m</td>
|
||
</tr>
|
||
<tr>
|
||
<td>SOL/USDT</td>
|
||
<td>2024-01-01 10:15:00</td>
|
||
<td>2021-01-01 11:05:00</td>
|
||
<td>50m</td>
|
||
</tr>
|
||
<tr>
|
||
<td>BTC/USDT</td>
|
||
<td>2024-01-01 11:05:00</td>
|
||
<td>2021-01-01 12:00:00</td>
|
||
<td>55m</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>Without timeframe-detail, this would look like:</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Pair</th>
|
||
<th>Entry Time</th>
|
||
<th>Exit Time</th>
|
||
<th>Duration</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>BTC/USDT</td>
|
||
<td>2024-01-01 10:00:00</td>
|
||
<td>2021-01-01 11:00:00</td>
|
||
<td>1h</td>
|
||
</tr>
|
||
<tr>
|
||
<td>BTC/USDT</td>
|
||
<td>2024-01-01 11:00:00</td>
|
||
<td>2021-01-01 12:00:00</td>
|
||
<td>1h</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>The difference is significant, as without detail data, only the first <code>max_open_trades</code> signals per candle are evaluated, and the trade slots are only freed at the end of the candle, allowing for a new trade to be opened at the next candle.</p>
|
||
</details>
|
||
<h2 id="backtesting-multiple-strategies">Backtesting multiple strategies<a class="headerlink" href="#backtesting-multiple-strategies" title="Permanent link">¶</a></h2>
|
||
<p>To compare multiple strategies, a list of Strategies can be provided to backtesting.</p>
|
||
<p>This is limited to 1 timeframe value per run. However, data is only loaded once from disk so if you have multiple
|
||
strategies you'd like to compare, this will give a nice runtime boost.</p>
|
||
<p>All listed Strategies need to be in the same directory, unless also <code>--recursive-strategy-search</code> is specified, where sub-directories within the strategy directory are also considered.</p>
|
||
<div class="highlight"><pre><span></span><code>freqtrade<span class="w"> </span>backtesting<span class="w"> </span>--timerange<span class="w"> </span><span class="m">20180401</span>-20180410<span class="w"> </span>--timeframe<span class="w"> </span>5m<span class="w"> </span>--strategy-list<span class="w"> </span>Strategy001<span class="w"> </span>Strategy002<span class="w"> </span>--export<span class="w"> </span>trades
|
||
</code></pre></div>
|
||
<p>This will save the results to <code>user_data/backtest_results/backtest-result-<datetime>.json</code>, including results for both <code>Strategy001</code> and <code>Strategy002</code>.
|
||
There will be an additional table comparing win/losses of the different strategies (identical to the "Total" row in the first table).
|
||
Detailed output for all strategies one after the other will be available, so make sure to scroll up to see the details per strategy.</p>
|
||
<div class="highlight"><pre><span></span><code>================================================== STRATEGY SUMMARY ===================================================================
|
||
| Strategy | Trades | Avg Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Wins | Draws | Losses | Drawdown % |
|
||
|-------------+---------+----------------+------------------+----------------+----------------+-------+--------+--------+------------|
|
||
| Strategy1 | 429 | 0.36 | 0.00762792 | 76.20 | 4:12:00 | 186 | 0 | 243 | 45.2 |
|
||
| Strategy2 | 1487 | -0.13 | -0.00988917 | -98.79 | 4:43:00 | 662 | 0 | 825 | 241.68 |
|
||
</code></pre></div>
|
||
<h2 id="next-step">Next step<a class="headerlink" href="#next-step" title="Permanent link">¶</a></h2>
|
||
<p>Great, your strategy is profitable. What if the bot can give you the optimal parameters to use for your strategy?
|
||
Your next step is to learn <a href="../hyperopt/">how to find optimal parameters with Hyperopt</a></p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</article>
|
||
</div>
|
||
|
||
|
||
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||
</div>
|
||
|
||
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
|
||
Back to top
|
||
</button>
|
||
|
||
</main>
|
||
|
||
|
||
<footer class="md-footer">
|
||
|
||
|
||
|
||
<nav class="md-footer__inner md-grid" aria-label="Footer" >
|
||
|
||
|
||
<a href="../data-download/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Data Downloading">
|
||
<div class="md-footer__button md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
||
</div>
|
||
<div class="md-footer__title">
|
||
<span class="md-footer__direction">
|
||
Previous
|
||
</span>
|
||
<div class="md-ellipsis">
|
||
Data Downloading
|
||
</div>
|
||
</div>
|
||
</a>
|
||
|
||
|
||
|
||
<a href="../hyperopt/" class="md-footer__link md-footer__link--next" aria-label="Next: Hyperopt">
|
||
<div class="md-footer__title">
|
||
<span class="md-footer__direction">
|
||
Next
|
||
</span>
|
||
<div class="md-ellipsis">
|
||
Hyperopt
|
||
</div>
|
||
</div>
|
||
<div class="md-footer__button md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
|
||
</div>
|
||
</a>
|
||
|
||
</nav>
|
||
|
||
|
||
<div class="md-footer-meta md-typeset">
|
||
<div class="md-footer-meta__inner md-grid">
|
||
<div class="md-copyright">
|
||
|
||
|
||
Made with
|
||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||
Material for MkDocs
|
||
</a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
|
||
<!-- Place this tag in your head or just before your close body tag. -->
|
||
<script src="https://code.jquery.com/jquery-3.4.1.min.js"
|
||
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
|
||
|
||
|
||
</div>
|
||
<div class="md-dialog" data-md-component="dialog">
|
||
<div class="md-dialog__inner md-typeset"></div>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "search.share", "content.code.copy", "content.action.edit", "navigation.top", "navigation.footer"], "search": "../assets/javascripts/workers/search.973d3a69.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"alias": true, "provider": "mike"}}</script>
|
||
|
||
|
||
<script src="../assets/javascripts/bundle.f55a23d4.min.js"></script>
|
||
|
||
<script src="../javascripts/config.js"></script>
|
||
|
||
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||
|
||
|
||
</body>
|
||
</html> |