Zipeng365's picture
Publish DeTime static documentation mirror
ae97a0a verified
Raw
History Blame Contribute Delete
25.9 kB
<!DOCTYPE html>
<html lang="en" data-bs-theme="light">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="Zipeng Wu">
<link rel="canonical" href="https://systems-mechanobiology.github.io/DeTime/tutorials/quant-trading/backtesting-frameworks/">
<link rel="shortcut icon" href="../../../img/favicon.ico">
<title>Backtesting Frameworks - DeTime</title>
<link href="../../../css/bootstrap.min.css" rel="stylesheet">
<link href="../../../css/fontawesome.min.css" rel="stylesheet">
<link href="../../../css/brands.min.css" rel="stylesheet">
<link href="../../../css/solid.min.css" rel="stylesheet">
<link href="../../../css/v4-font-face.min.css" rel="stylesheet">
<link href="../../../css/base.css" rel="stylesheet">
<link id="hljs-light" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css" >
<link id="hljs-dark" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github-dark.min.css" disabled>
<link href="../../../stylesheets/brand.css" rel="stylesheet">
<link href="../../../stylesheets/extra.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
<script>hljs.highlightAll();</script>
<meta name="robots" content="index, follow, max-image-preview:large">
<meta name="keywords" content="DeTime, detime, de-time, time series decomposition, Python time series, SSA, MSSA, VMD, STL, decomposition software">
<meta property="og:site_name" content="DeTime">
<meta property="og:type" content="website">
<meta property="og:title" content="DeTime - workflow-oriented time-series decomposition for Python">
<meta property="og:description" content="DeTime is a Python and CLI toolkit for reproducible time-series decomposition across SSA, MSSA, VMD, STL, EMD, wavelet, and native C++ backed methods.">
<meta property="og:url" content="https://systems-mechanobiology.github.io/DeTime/">
<meta property="og:image" content="https://systems-mechanobiology.github.io/DeTime/assets/brand/detime-title-card.svg">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="DeTime - time-series decomposition for Python">
<meta name="twitter:description" content="Workflow-oriented Python and CLI software for reproducible trend, oscillation, residual, and component decomposition.">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebSite",
"@id": "https://systems-mechanobiology.github.io/DeTime/#website",
"name": "DeTime",
"alternateName": ["detime", "de-time", "De-Time"],
"url": "https://systems-mechanobiology.github.io/DeTime/",
"description": "DeTime documentation for workflow-oriented time-series decomposition software.",
"inLanguage": "en"
},
{
"@type": "SoftwareSourceCode",
"@id": "https://systems-mechanobiology.github.io/DeTime/#software",
"name": "DeTime",
"alternateName": ["detime", "de-time", "De-Time"],
"description": "Python and CLI toolkit for reproducible time-series decomposition with native C++ backed SSA, MSSA, VMD, STD, STDR, MA baseline, and Gabor clustering paths.",
"codeRepository": "https://github.com/systems-mechanobiology/DeTime",
"url": "https://systems-mechanobiology.github.io/DeTime/",
"programmingLanguage": ["Python", "C++"],
"applicationCategory": "Scientific software",
"keywords": "DeTime, time-series decomposition, Python, SSA, MSSA, VMD, STL, EMD, wavelet, native C++",
"author": {
"@type": "Person",
"name": "Zipeng Wu"
}
}
]
}
</script>
<link rel="stylesheet" href="../../../stylesheets/extra.css?v=7">
</head>
<body>
<div class="navbar fixed-top navbar-expand-lg navbar-dark bg-primary">
<div class="container">
<a class="navbar-brand" href="../../..">DeTime</a>
<!-- Expander button -->
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbar-collapse" aria-controls="navbar-collapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<!-- Expanded navigation -->
<div id="navbar-collapse" class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav">
<li class="nav-item">
<a href="../../.." class="nav-link">Home</a>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Start</a>
<ul class="dropdown-menu">
<li>
<a href="../../../install/" class="dropdown-item">Install</a>
</li>
<li>
<a href="../../../quickstart/" class="dropdown-item">Quickstart</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Methods</a>
<ul class="dropdown-menu">
<li>
<a href="../../../methods/" class="dropdown-item">Methods & Chooser</a>
</li>
<li>
<a href="../../../method-matrix/" class="dropdown-item">Method Matrix</a>
</li>
<li>
<a href="../../../method-references/" class="dropdown-item">Method References</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle active" aria-current="page" role="button" data-bs-toggle="dropdown" aria-expanded="false">Workflows</a>
<ul class="dropdown-menu">
<li>
<a href="../../../notebook-gallery/" class="dropdown-item">Notebook Gallery</a>
</li>
<li>
<a href="../../univariate/" class="dropdown-item">Univariate Tutorial</a>
</li>
<li>
<a href="../../multivariate/" class="dropdown-item">Multivariate Tutorial</a>
</li>
<li>
<a href="../../cli-and-profiling/" class="dropdown-item">CLI Guide</a>
</li>
<li class="dropdown-submenu">
<a href="#" class="dropdown-item">Quant Trading Tutorial</a>
<ul class="dropdown-menu">
<li>
<a href="../" class="dropdown-item">Overview</a>
</li>
<li>
<a href="../notebooks/" class="dropdown-item">Tutorial Notebooks</a>
</li>
<li>
<a href="../notebooks/00_decomposition_first_quant_trading_roadmap/" class="dropdown-item">Tutorial 00 Roadmap</a>
</li>
<li class="dropdown-submenu">
<a href="#" class="dropdown-item">Strategy Lab</a>
<ul class="dropdown-menu">
<li>
<a href="../two-strategy-families/" class="dropdown-item">Two Strategy Families</a>
</li>
<li>
<a href="../notebooks/01_detime_trend_following_strategy_lab/" class="dropdown-item">01 Trend-Following Lab</a>
</li>
<li>
<a href="../notebooks/02_detime_oscillation_reversion_strategy_lab/" class="dropdown-item">02 Oscillation-Reversion Lab</a>
</li>
</ul>
</li>
<li class="dropdown-submenu">
<a href="#" class="dropdown-item">Strategy Expansion</a>
<ul class="dropdown-menu">
<li>
<a href="../method-specific-strategy-expansion/" class="dropdown-item">Method-Specific Strategy Expansion</a>
</li>
<li>
<a href="../notebooks/03_detime_method_specific_strategy_variants/" class="dropdown-item">03 Method-Specific Variants</a>
</li>
<li>
<a href="../notebooks/04_detime_component_pair_trading_cointegration/" class="dropdown-item">04 Component Pair Trading</a>
</li>
</ul>
</li>
<li class="dropdown-submenu">
<a href="#" class="dropdown-item">Tutorial Sequence</a>
<ul class="dropdown-menu">
<li>
<a href="../notebooks/01_market_data_and_decomposition_feature_factory/" class="dropdown-item">01 Real Market Data and Feature Factory</a>
</li>
<li>
<a href="../notebooks/02_decomposition_aware_moving_average_macd/" class="dropdown-item">02 Decomposition-aware MA and MACD</a>
</li>
<li>
<a href="../notebooks/03_residual_mean_reversion_rsi_bollinger/" class="dropdown-item">03 Residual Mean Reversion</a>
</li>
<li>
<a href="../notebooks/04_turtle_donchian_breakout_volume_confirmation/" class="dropdown-item">04 Donchian Breakout</a>
</li>
<li>
<a href="../notebooks/05_pairs_spread_decomposition_stat_arb/" class="dropdown-item">05 Pair-Spread Stat-Arb</a>
</li>
<li>
<a href="../notebooks/06_cross_sectional_rotation_portfolio/" class="dropdown-item">06 Cross-Sectional Rotation</a>
</li>
</ul>
</li>
<li class="dropdown-submenu">
<a href="#" class="dropdown-item">Native SSA Replay</a>
<ul class="dropdown-menu">
<li>
<a href="../notebooks/07_native_ssa_high_return_low_drawdown_tutorial/" class="dropdown-item">07 Native SSA High-Return / Low-Drawdown</a>
</li>
</ul>
</li>
<li>
<a href="../data/" class="dropdown-item">Real Data and Universes</a>
</li>
<li>
<a href="../strategy-map/" class="dropdown-item">Strategy Map</a>
</li>
<li>
<a href="./" class="dropdown-item active" aria-current="page">Backtesting Frameworks</a>
</li>
<li>
<a href="../walkforward/" class="dropdown-item">Walk-Forward Validation</a>
</li>
</ul>
</li>
<li class="dropdown-submenu">
<a href="#" class="dropdown-item">Hot Trend Lab</a>
<ul class="dropdown-menu">
<li>
<a href="../../hot-trend-lab/" class="dropdown-item">Overview</a>
</li>
<li>
<a href="../../hot-trend-lab/notebooks/" class="dropdown-item">Rendered Notebooks</a>
</li>
<li>
<a href="../../hot-trend-lab/notebooks/00_hot_trend_lab_overview/" class="dropdown-item">00 Column Overview</a>
</li>
<li>
<a href="../../hot-trend-lab/notebooks/01_arxiv_category_pulse/" class="dropdown-item">01 arXiv Category Pulse</a>
</li>
<li>
<a href="../../hot-trend-lab/notebooks/02_arxiv_agent_research_pulse/" class="dropdown-item">02 arXiv Agent Research Pulse</a>
</li>
<li>
<a href="../../hot-trend-lab/notebooks/03_huggingface_open_model_pulse/" class="dropdown-item">03 Hugging Face Open-Model Pulse</a>
</li>
<li>
<a href="../../hot-trend-lab/notebooks/04_github_ai_agent_star_velocity/" class="dropdown-item">04 GitHub Star Velocity</a>
</li>
<li>
<a href="../../hot-trend-lab/notebooks/05_wikipedia_attention_hype_decay/" class="dropdown-item">05 Wikipedia Attention Decay</a>
</li>
<li>
<a href="../../hot-trend-lab/notebooks/06_crypto_stablecoin_liquidity_pulse/" class="dropdown-item">06 Crypto Stablecoin Liquidity</a>
</li>
<li>
<a href="../../hot-trend-lab/notebooks/07_ai_infrastructure_market_pulse/" class="dropdown-item">07 AI Infrastructure Market Pulse</a>
</li>
<li>
<a href="../../hot-trend-lab/data-sources/" class="dropdown-item">Real Data Sources</a>
</li>
<li>
<a href="../../hot-trend-lab/arxiv-research-pulse/" class="dropdown-item">arXiv Research Pulse</a>
</li>
<li>
<a href="../../hot-trend-lab/open-model-and-developer-attention/" class="dropdown-item">Open Models and Developer Attention</a>
</li>
<li>
<a href="../../hot-trend-lab/wiki-market-crypto-attention/" class="dropdown-item">Public Attention, Markets, and Crypto</a>
</li>
<li>
<a href="../../hot-trend-lab/release-calendar/" class="dropdown-item">Release Calendar</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Gallery</a>
<ul class="dropdown-menu">
<li>
<a href="../../../gallery/ssa/" class="dropdown-item">SSA</a>
</li>
<li>
<a href="../../../gallery/std/" class="dropdown-item">STD</a>
</li>
<li>
<a href="../../../gallery/stdr/" class="dropdown-item">STDR</a>
</li>
<li>
<a href="../../../gallery/mssa/" class="dropdown-item">MSSA</a>
</li>
<li>
<a href="../../../gallery/stl/" class="dropdown-item">STL</a>
</li>
<li>
<a href="../../../gallery/mstl/" class="dropdown-item">MSTL</a>
</li>
<li>
<a href="../../../gallery/robust-stl/" class="dropdown-item">ROBUST_STL</a>
</li>
<li>
<a href="../../../gallery/emd/" class="dropdown-item">EMD</a>
</li>
<li>
<a href="../../../gallery/ceemdan/" class="dropdown-item">CEEMDAN</a>
</li>
<li>
<a href="../../../gallery/vmd/" class="dropdown-item">VMD</a>
</li>
<li>
<a href="../../../gallery/wavelet/" class="dropdown-item">WAVELET</a>
</li>
<li>
<a href="../../../gallery/ma-baseline/" class="dropdown-item">MA_BASELINE</a>
</li>
<li>
<a href="../../../gallery/mvmd/" class="dropdown-item">MVMD</a>
</li>
<li>
<a href="../../../gallery/memd/" class="dropdown-item">MEMD</a>
</li>
<li>
<a href="../../../gallery/gabor-cluster/" class="dropdown-item">GABOR_CLUSTER</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Reference</a>
<ul class="dropdown-menu">
<li>
<a href="../../../api/" class="dropdown-item">API Overview</a>
</li>
<li>
<a href="../../../config-reference/" class="dropdown-item">Config Reference</a>
</li>
<li>
<a href="../../../machine-api/" class="dropdown-item">Machine API</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-expanded="false">Project</a>
<ul class="dropdown-menu">
<li>
<a href="../../../comparisons/" class="dropdown-item">Compare Alternatives</a>
</li>
<li>
<a href="../../../reproducibility/" class="dropdown-item">Reproducibility</a>
</li>
<li>
<a href="../../../architecture/" class="dropdown-item">Architecture</a>
</li>
<li>
<a href="../../../migration/" class="dropdown-item">Migration from `tsdecomp`</a>
</li>
<li>
<a href="../../../contributing/" class="dropdown-item">Contributing</a>
</li>
<li>
<a href="../../../citation/" class="dropdown-item">Citation / Release Notes</a>
</li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav ms-md-auto">
<li class="nav-item">
<a href="#" class="nav-link" data-bs-toggle="modal" data-bs-target="#mkdocs_search_modal">
<i class="fa fa-search"></i> Search
</a>
</li>
<li class="nav-item">
<a rel="prev" href="../strategy-map/" class="nav-link">
<i class="fa fa-arrow-left"></i> Previous
</a>
</li>
<li class="nav-item">
<a rel="next" href="../walkforward/" class="nav-link">
Next <i class="fa fa-arrow-right"></i>
</a>
</li>
<li class="nav-item">
<a href="https://github.com/systems-mechanobiology/DeTime" class="nav-link">systems-mechanobiology/DeTime</a>
</li>
</ul>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-3"><div class="navbar-expand-md bs-sidebar hidden-print affix" role="complementary">
<div class="navbar-header">
<button type="button" class="navbar-toggler collapsed" data-bs-toggle="collapse" data-bs-target="#toc-collapse" title="Table of Contents">
<span class="fa fa-angle-down"></span>
</button>
</div>
<div id="toc-collapse" class="navbar-collapse collapse card bg-body-tertiary">
<ul class="nav flex-column">
<li class="nav-item" data-bs-level="1"><a href="#backtesting-frameworks-for-the-quant-trading-column" class="nav-link">Backtesting Frameworks for the Quant Trading Column</a>
<ul class="nav flex-column">
<li class="nav-item" data-bs-level="2"><a href="#vectorbt" class="nav-link">vectorbt</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="2"><a href="#backtestingpy" class="nav-link">backtesting.py</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="2"><a href="#bt" class="nav-link">bt</a>
<ul class="nav flex-column">
</ul>
</li>
<li class="nav-item" data-bs-level="2"><a href="#backtrader-and-zipline-reloaded" class="nav-link">Backtrader and Zipline-Reloaded</a>
<ul class="nav flex-column">
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div></div>
<div class="col-md-9" role="main">
<h1 id="backtesting-frameworks-for-the-quant-trading-column">Backtesting Frameworks for the Quant Trading Column</h1>
<p>The notebooks start with a transparent pandas backtester so readers can inspect
signal alignment, position shifting, transaction costs, turnover, and equity
construction. The same signals can then be routed to established Python
backtesting and reporting packages.</p>
<table>
<thead>
<tr>
<th>Framework</th>
<th>Column use</th>
<th>Adapter</th>
</tr>
</thead>
<tbody>
<tr>
<td>pandas vectorized baseline</td>
<td>transparent close-to-close research checks</td>
<td><code>examples/quant_trading/backtest.py</code></td>
</tr>
<tr>
<td>vectorbt</td>
<td>multi-asset signal matrices and parameter grids</td>
<td><code>run_vectorbt_from_signals</code></td>
</tr>
<tr>
<td>backtesting.py</td>
<td>single-asset strategy class tutorials</td>
<td><code>run_backtestingpy_signal</code></td>
</tr>
<tr>
<td>bt</td>
<td>target-weight ETF and portfolio rotation</td>
<td><code>run_bt_target_weights</code></td>
</tr>
<tr>
<td>Backtrader</td>
<td>event-driven data feeds and order logic</td>
<td>template writer</td>
</tr>
<tr>
<td>Zipline-Reloaded</td>
<td>calendar-safe factor research skeleton</td>
<td>template writer</td>
</tr>
<tr>
<td>QuantStats</td>
<td>HTML reports and performance tear sheets</td>
<td><code>quantstats_html_report</code></td>
</tr>
</tbody>
</table>
<h2 id="vectorbt">vectorbt</h2>
<pre><code class="language-python">from examples.quant_trading.frameworks import run_vectorbt_from_signals
portfolio = run_vectorbt_from_signals(prices, entries, exits)
print(portfolio.total_return())
</code></pre>
<h2 id="backtestingpy">backtesting.py</h2>
<pre><code class="language-python">from examples.quant_trading.data import fetch_yahoo_ohlcv
from examples.quant_trading.frameworks import run_backtestingpy_signal
ohlcv = fetch_yahoo_ohlcv(&quot;SPY&quot;, start=&quot;2018-01-01&quot;)
stats = run_backtestingpy_signal(ohlcv, signal)
</code></pre>
<h2 id="bt">bt</h2>
<pre><code class="language-python">from examples.quant_trading.frameworks import run_bt_target_weights
result = run_bt_target_weights(prices, target_weights)
</code></pre>
<h2 id="backtrader-and-zipline-reloaded">Backtrader and Zipline-Reloaded</h2>
<p>The column provides template files for these framework-specific workflows:</p>
<pre><code class="language-python">from examples.quant_trading.frameworks import write_framework_templates
write_framework_templates(&quot;examples/quant_trading/templates&quot;)
</code></pre>
<p>These event-driven frameworks require careful calendar, bundle, and execution
setup. Keep DeTime feature generation outside the event loop unless you are
explicitly modeling the cost and latency of online recomputation.</p>
<p>The current rendered notebooks exercise the transparent pandas research
backtester first, then keep these adapters available as extension points for
framework-specific studies.</p></div>
</div>
</div>
<footer class="col-md-12">
<hr>
<p>Documentation built with <a href="https://www.mkdocs.org/">MkDocs</a>.</p>
</footer>
<script src="../../../js/bootstrap.bundle.min.js"></script>
<script>
var base_url = "../../..",
shortcuts = {"help": 191, "next": 78, "previous": 80, "search": 83};
</script>
<script src="../../../js/base.js"></script>
<script src="../../../search/main.js"></script>
<div class="modal" id="mkdocs_search_modal" tabindex="-1" role="dialog" aria-labelledby="searchModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="searchModalLabel">Search</h4>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p>From here you can search these documents. Enter your search terms below.</p>
<form>
<div class="form-group">
<input type="search" class="form-control" placeholder="Search..." id="mkdocs-search-query" title="Type search term here">
</div>
</form>
<div id="mkdocs-search-results" data-no-results-text="No results found"></div>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div><div class="modal" id="mkdocs_keyboard_modal" tabindex="-1" role="dialog" aria-labelledby="keyboardModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="keyboardModalLabel">Keyboard Shortcuts</h4>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<table class="table">
<thead>
<tr>
<th style="width: 20%;">Keys</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td class="help shortcut"><kbd>?</kbd></td>
<td>Open this help</td>
</tr>
<tr>
<td class="next shortcut"><kbd>n</kbd></td>
<td>Next page</td>
</tr>
<tr>
<td class="prev shortcut"><kbd>p</kbd></td>
<td>Previous page</td>
</tr>
<tr>
<td class="search shortcut"><kbd>s</kbd></td>
<td>Search</td>
</tr>
</tbody>
</table>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
</body>
</html>