From a7de9361404a0c8a1806a652e69c48319d597e39 Mon Sep 17 00:00:00 2001
From: baobach <95854748+baobach@users.noreply.github.com>
Date: Sun, 31 Mar 2024 14:27:47 +0700
Subject: [PATCH 01/21] Update copyright year to 2024
---
backtrader/__init__.py | 2 +-
backtrader/analyzer.py | 2 +-
backtrader/analyzers/__init__.py | 2 +-
backtrader/analyzers/annualreturn.py | 2 +-
backtrader/analyzers/calmar.py | 2 +-
backtrader/analyzers/drawdown.py | 2 +-
backtrader/analyzers/leverage.py | 2 +-
backtrader/analyzers/logreturnsrolling.py | 2 +-
backtrader/analyzers/periodstats.py | 2 +-
backtrader/analyzers/positions.py | 2 +-
backtrader/analyzers/pyfolio.py | 2 +-
backtrader/analyzers/returns.py | 2 +-
backtrader/analyzers/sharpe.py | 2 +-
backtrader/analyzers/sqn.py | 2 +-
backtrader/analyzers/timereturn.py | 2 +-
backtrader/analyzers/tradeanalyzer.py | 2 +-
backtrader/analyzers/transactions.py | 2 +-
backtrader/analyzers/vwr.py | 2 +-
backtrader/broker.py | 2 +-
backtrader/brokers/__init__.py | 2 +-
backtrader/brokers/bbroker.py | 2 +-
backtrader/brokers/ibbroker.py | 2 +-
backtrader/brokers/oandabroker.py | 2 +-
backtrader/brokers/vcbroker.py | 2 +-
backtrader/btrun/__init__.py | 2 +-
backtrader/btrun/btrun.py | 2 +-
backtrader/cerebro.py | 2 +-
backtrader/comminfo.py | 2 +-
backtrader/commissions/__init__.py | 2 +-
backtrader/dataseries.py | 2 +-
backtrader/errors.py | 2 +-
backtrader/feed.py | 2 +-
backtrader/feeds/__init__.py | 2 +-
backtrader/feeds/blaze.py | 2 +-
backtrader/feeds/btcsv.py | 2 +-
backtrader/feeds/chainer.py | 2 +-
backtrader/feeds/csvgeneric.py | 2 +-
backtrader/feeds/ibdata.py | 2 +-
backtrader/feeds/influxfeed.py | 2 +-
backtrader/feeds/mt4csv.py | 4 ++--
backtrader/feeds/oanda.py | 2 +-
backtrader/feeds/pandafeed.py | 2 +-
backtrader/feeds/quandl.py | 2 +-
backtrader/feeds/rollover.py | 2 +-
backtrader/feeds/sierrachart.py | 2 +-
backtrader/feeds/vcdata.py | 2 +-
backtrader/feeds/vchart.py | 2 +-
backtrader/feeds/vchartcsv.py | 2 +-
backtrader/feeds/vchartfile.py | 2 +-
backtrader/feeds/yahoo.py | 2 +-
backtrader/fillers.py | 2 +-
backtrader/filters/__init__.py | 2 +-
backtrader/filters/bsplitter.py | 2 +-
backtrader/filters/calendardays.py | 2 +-
backtrader/filters/datafiller.py | 2 +-
backtrader/filters/datafilter.py | 2 +-
backtrader/filters/daysteps.py | 2 +-
backtrader/filters/heikinashi.py | 2 +-
backtrader/filters/renko.py | 2 +-
backtrader/filters/session.py | 2 +-
backtrader/flt.py | 2 +-
backtrader/functions.py | 2 +-
backtrader/indicator.py | 2 +-
backtrader/indicators/__init__.py | 2 +-
backtrader/indicators/accdecoscillator.py | 2 +-
backtrader/indicators/aroon.py | 2 +-
backtrader/indicators/atr.py | 2 +-
backtrader/indicators/awesomeoscillator.py | 2 +-
backtrader/indicators/basicops.py | 2 +-
backtrader/indicators/bollinger.py | 2 +-
backtrader/indicators/cci.py | 2 +-
backtrader/indicators/contrib/__init__.py | 2 +-
backtrader/indicators/contrib/vortex.py | 4 ++--
backtrader/indicators/crossover.py | 2 +-
backtrader/indicators/dema.py | 2 +-
backtrader/indicators/deviation.py | 2 +-
backtrader/indicators/directionalmove.py | 2 +-
backtrader/indicators/dma.py | 2 +-
backtrader/indicators/dpo.py | 2 +-
backtrader/indicators/dv2.py | 2 +-
backtrader/indicators/ema.py | 2 +-
backtrader/indicators/envelope.py | 2 +-
backtrader/indicators/hadelta.py | 2 +-
backtrader/indicators/heikinashi.py | 2 +-
backtrader/indicators/hma.py | 2 +-
backtrader/indicators/hurst.py | 2 +-
backtrader/indicators/ichimoku.py | 2 +-
backtrader/indicators/kama.py | 2 +-
backtrader/indicators/kst.py | 2 +-
backtrader/indicators/lrsi.py | 2 +-
backtrader/indicators/mabase.py | 2 +-
backtrader/indicators/macd.py | 2 +-
backtrader/indicators/momentum.py | 2 +-
backtrader/indicators/ols.py | 2 +-
backtrader/indicators/oscillator.py | 2 +-
backtrader/indicators/percentchange.py | 2 +-
backtrader/indicators/percentrank.py | 2 +-
backtrader/indicators/pivotpoint.py | 2 +-
backtrader/indicators/prettygoodoscillator.py | 2 +-
backtrader/indicators/priceoscillator.py | 2 +-
backtrader/indicators/psar.py | 2 +-
backtrader/indicators/rmi.py | 2 +-
backtrader/indicators/rsi.py | 2 +-
backtrader/indicators/sma.py | 2 +-
backtrader/indicators/smma.py | 2 +-
backtrader/indicators/stochastic.py | 2 +-
backtrader/indicators/trix.py | 2 +-
backtrader/indicators/tsi.py | 2 +-
backtrader/indicators/ultimateoscillator.py | 2 +-
backtrader/indicators/vortex.py | 2 +-
backtrader/indicators/williams.py | 2 +-
backtrader/indicators/wma.py | 2 +-
backtrader/indicators/zlema.py | 2 +-
backtrader/indicators/zlind.py | 2 +-
backtrader/linebuffer.py | 2 +-
backtrader/lineiterator.py | 2 +-
backtrader/lineroot.py | 2 +-
backtrader/lineseries.py | 2 +-
backtrader/mathsupport.py | 2 +-
backtrader/metabase.py | 2 +-
backtrader/observer.py | 2 +-
backtrader/observers/__init__.py | 2 +-
backtrader/observers/benchmark.py | 2 +-
backtrader/observers/broker.py | 2 +-
backtrader/observers/buysell.py | 2 +-
backtrader/observers/drawdown.py | 2 +-
backtrader/observers/logreturns.py | 2 +-
backtrader/observers/timereturn.py | 2 +-
backtrader/observers/trades.py | 2 +-
backtrader/order.py | 2 +-
backtrader/plot/__init__.py | 2 +-
backtrader/plot/finance.py | 2 +-
backtrader/plot/formatters.py | 2 +-
backtrader/plot/locator.py | 2 +-
backtrader/plot/plot.py | 2 +-
backtrader/plot/scheme.py | 2 +-
backtrader/plot/utils.py | 2 +-
backtrader/position.py | 2 +-
backtrader/resamplerfilter.py | 2 +-
backtrader/signal.py | 2 +-
backtrader/signals/__init__.py | 2 +-
backtrader/sizer.py | 2 +-
backtrader/sizers/__init__.py | 2 +-
backtrader/sizers/fixedsize.py | 2 +-
backtrader/sizers/percents_sizer.py | 2 +-
backtrader/store.py | 2 +-
backtrader/stores/__init__.py | 2 +-
backtrader/stores/ibstore.py | 2 +-
backtrader/stores/oandastore.py | 2 +-
backtrader/stores/vchartfile.py | 2 +-
backtrader/stores/vcstore.py | 2 +-
backtrader/strategies/__init__.py | 2 +-
backtrader/strategies/sma_crossover.py | 2 +-
backtrader/strategy.py | 2 +-
backtrader/studies/__init__.py | 2 +-
backtrader/studies/contrib/__init__.py | 2 +-
backtrader/studies/contrib/fractal.py | 2 +-
backtrader/talib.py | 2 +-
backtrader/timer.py | 2 +-
backtrader/trade.py | 2 +-
backtrader/tradingcal.py | 2 +-
backtrader/utils/__init__.py | 2 +-
backtrader/utils/autodict.py | 2 +-
backtrader/utils/date.py | 2 +-
backtrader/utils/dateintern.py | 2 +-
backtrader/utils/ordereddefaultdict.py | 2 +-
backtrader/utils/py3.py | 2 +-
backtrader/version.py | 2 +-
backtrader/writer.py | 2 +-
samples/analyzer-annualreturn/analyzer-annualreturn.py | 2 +-
samples/bidask-to-ohlc/bidask-to-ohlc.py | 2 +-
samples/bracket/bracket.py | 2 +-
samples/btfd/btfd.py | 2 +-
samples/calendar-days/calendar-days.py | 2 +-
samples/calmar/calmar-test.py | 2 +-
samples/cheat-on-open/cheat-on-open.py | 2 +-
samples/commission-schemes/commission-schemes.py | 2 +-
samples/credit-interest/credit-interest.py | 2 +-
samples/data-bid-ask/bidask.py | 2 +-
samples/data-filler/data-filler.py | 2 +-
samples/data-filler/relativevolume.py | 2 +-
samples/data-multitimeframe/data-multitimeframe.py | 2 +-
samples/data-pandas/data-pandas-optix.py | 2 +-
samples/data-pandas/data-pandas.py | 2 +-
samples/data-replay/data-replay.py | 2 +-
samples/data-resample/data-resample.py | 2 +-
samples/daysteps/daysteps.py | 2 +-
samples/future-spot/future-spot.py | 2 +-
samples/gold-vs-sp500/gold-vs-sp500.py | 2 +-
samples/ib-cash-bid-ask/ib-cash-bid-ask.py | 2 +-
samples/ibtest/ibtest.py | 2 +-
samples/kselrsi/ksignal.py | 2 +-
samples/lineplotter/lineplotter.py | 2 +-
samples/lrsi/lrsi-test.py | 2 +-
samples/macd-settings/macd-settings.py | 2 +-
samples/memory-savings/memory-savings.py | 2 +-
samples/mixing-timeframes/mixing-timeframes.py | 2 +-
samples/multi-copy/multi-copy.py | 2 +-
samples/multi-example/mult-values.py | 2 +-
samples/multidata-strategy/multidata-strategy-unaligned.py | 2 +-
samples/multidata-strategy/multidata-strategy.py | 2 +-
samples/multitrades/mtradeobserver.py | 2 +-
samples/multitrades/multitrades.py | 2 +-
samples/oandatest/oandatest.py | 2 +-
samples/observer-benchmark/observer-benchmark.py | 2 +-
samples/observers/observers-default-drawdown.py | 2 +-
samples/observers/observers-default.py | 2 +-
samples/observers/observers-orderobserver.py | 2 +-
samples/observers/orderobserver.py | 2 +-
samples/oco/oco.py | 2 +-
samples/optimization/optimization.py | 2 +-
samples/order-close/close-daily.py | 2 +-
samples/order-close/close-minute.py | 2 +-
samples/order-execution/order-execution.py | 2 +-
samples/order-history/order-history.py | 2 +-
samples/order_target/order_target.py | 2 +-
samples/partial-plot/partial-plot.py | 2 +-
samples/pinkfish-challenge/pinkfish-challenge.py | 2 +-
samples/pivot-point/pivotpoint.py | 2 +-
samples/pivot-point/ppsample.py | 2 +-
samples/plot-same-axis/plot-same-axis.py | 2 +-
samples/psar/psar-intraday.py | 2 +-
samples/psar/psar.py | 2 +-
samples/pyfolio2/pyfoliotest.py | 2 +-
samples/pyfoliotest/pyfoliotest.py | 2 +-
samples/relative-volume/relative-volume.py | 2 +-
samples/relative-volume/relvolbybar.py | 2 +-
samples/renko/renko.py | 2 +-
samples/resample-tickdata/resample-tickdata.py | 2 +-
samples/rollover/rollover.py | 2 +-
samples/sharpe-timereturn/sharpe-timereturn.py | 2 +-
samples/signals-strategy/signals-strategy.py | 2 +-
samples/sigsmacross/sigsmacross.py | 2 +-
samples/sigsmacross/sigsmacross2.py | 2 +-
samples/sizertest/sizertest.py | 2 +-
samples/slippage/slippage.py | 2 +-
samples/stop-trading/stop-loss-approaches.py | 2 +-
samples/stoptrail/trail.py | 2 +-
samples/strategy-selection/strategy-selection.py | 2 +-
samples/talib/tablibsartest.py | 2 +-
samples/talib/talibtest.py | 2 +-
samples/timers/scheduled-min.py | 2 +-
samples/timers/scheduled.py | 2 +-
samples/tradingcalendar/tcal-intra.py | 2 +-
samples/tradingcalendar/tcal.py | 2 +-
samples/vctest/vctest.py | 2 +-
samples/volumefilling/volumefilling.py | 2 +-
samples/vwr/vwr.py | 2 +-
samples/weekdays-filler/weekdaysaligner.py | 2 +-
samples/weekdays-filler/weekdaysfiller.py | 2 +-
samples/writer-test/writer-test.py | 2 +-
samples/yahoo-test/yahoo-test.py | 2 +-
setup.py | 2 +-
tests/test_analyzer-sqn.py | 2 +-
tests/test_analyzer-timereturn.py | 2 +-
tests/test_comminfo.py | 2 +-
tests/test_data_multiframe.py | 2 +-
tests/test_data_replay.py | 2 +-
tests/test_data_resample.py | 2 +-
tests/test_ind_accdecosc.py | 2 +-
tests/test_ind_aroonoscillator.py | 2 +-
tests/test_ind_aroonupdown.py | 2 +-
tests/test_ind_atr.py | 2 +-
tests/test_ind_awesomeoscillator.py | 2 +-
tests/test_ind_bbands.py | 2 +-
tests/test_ind_cci.py | 2 +-
tests/test_ind_dema.py | 2 +-
tests/test_ind_demaenvelope.py | 2 +-
tests/test_ind_demaosc.py | 2 +-
tests/test_ind_dm.py | 2 +-
tests/test_ind_dma.py | 2 +-
tests/test_ind_downmove.py | 2 +-
tests/test_ind_dpo.py | 2 +-
tests/test_ind_dv2.py | 2 +-
tests/test_ind_ema.py | 2 +-
tests/test_ind_emaenvelope.py | 2 +-
tests/test_ind_emaosc.py | 2 +-
tests/test_ind_envelope.py | 2 +-
tests/test_ind_heikinashi.py | 2 +-
tests/test_ind_highest.py | 2 +-
tests/test_ind_hma.py | 2 +-
tests/test_ind_ichimoku.py | 2 +-
tests/test_ind_kama.py | 2 +-
tests/test_ind_kamaenvelope.py | 2 +-
tests/test_ind_kamaosc.py | 2 +-
tests/test_ind_kst.py | 2 +-
tests/test_ind_lowest.py | 2 +-
tests/test_ind_lrsi.py | 2 +-
tests/test_ind_macdhisto.py | 2 +-
tests/test_ind_minperiod.py | 2 +-
tests/test_ind_momentum.py | 2 +-
tests/test_ind_momentumoscillator.py | 2 +-
tests/test_ind_oscillator.py | 2 +-
tests/test_ind_pctchange.py | 2 +-
tests/test_ind_pctrank.py | 2 +-
tests/test_ind_pgo.py | 2 +-
tests/test_ind_ppo.py | 2 +-
tests/test_ind_pposhort.py | 2 +-
tests/test_ind_priceosc.py | 2 +-
tests/test_ind_rmi.py | 2 +-
tests/test_ind_roc.py | 2 +-
tests/test_ind_rsi.py | 2 +-
tests/test_ind_rsi_safe.py | 2 +-
tests/test_ind_sma.py | 2 +-
tests/test_ind_smaenvelope.py | 2 +-
tests/test_ind_smaosc.py | 2 +-
tests/test_ind_smma.py | 2 +-
tests/test_ind_smmaenvelope.py | 2 +-
tests/test_ind_smmaosc.py | 2 +-
tests/test_ind_stochastic.py | 2 +-
tests/test_ind_stochasticfull.py | 2 +-
tests/test_ind_sumn.py | 2 +-
tests/test_ind_tema.py | 2 +-
tests/test_ind_temaenvelope.py | 2 +-
tests/test_ind_temaosc.py | 2 +-
tests/test_ind_trix.py | 2 +-
tests/test_ind_tsi.py | 2 +-
tests/test_ind_ultosc.py | 2 +-
tests/test_ind_upmove.py | 2 +-
tests/test_ind_vortex.py | 2 +-
tests/test_ind_williamsad.py | 2 +-
tests/test_ind_williamsr.py | 2 +-
tests/test_ind_wma.py | 2 +-
tests/test_ind_wmaenvelope.py | 2 +-
tests/test_ind_wmaosc.py | 2 +-
tests/test_ind_zlema.py | 2 +-
tests/test_ind_zlind.py | 2 +-
tests/test_metaclass.py | 2 +-
tests/test_order.py | 2 +-
tests/test_position.py | 2 +-
tests/test_strategy_optimized.py | 2 +-
tests/test_strategy_unoptimized.py | 2 +-
tests/test_study_fractal.py | 2 +-
tests/test_trade.py | 2 +-
tests/test_writer.py | 2 +-
tests/testcommon.py | 2 +-
tools/bt-run.py | 2 +-
tools/rewrite-data.py | 2 +-
tools/yahoodownload.py | 2 +-
339 files changed, 341 insertions(+), 341 deletions(-)
diff --git a/backtrader/__init__.py b/backtrader/__init__.py
index 15770f55a..79402d15c 100644
--- a/backtrader/__init__.py
+++ b/backtrader/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzer.py b/backtrader/analyzer.py
index 51abc02a5..a07a91a67 100644
--- a/backtrader/analyzer.py
+++ b/backtrader/analyzer.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/__init__.py b/backtrader/analyzers/__init__.py
index e54cc09ad..e0a57f53f 100644
--- a/backtrader/analyzers/__init__.py
+++ b/backtrader/analyzers/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/annualreturn.py b/backtrader/analyzers/annualreturn.py
index d29024b52..cb20d3d32 100644
--- a/backtrader/analyzers/annualreturn.py
+++ b/backtrader/analyzers/annualreturn.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/calmar.py b/backtrader/analyzers/calmar.py
index 97cb59c04..310c764a3 100644
--- a/backtrader/analyzers/calmar.py
+++ b/backtrader/analyzers/calmar.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/drawdown.py b/backtrader/analyzers/drawdown.py
index 022168972..909abf04a 100644
--- a/backtrader/analyzers/drawdown.py
+++ b/backtrader/analyzers/drawdown.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/leverage.py b/backtrader/analyzers/leverage.py
index 749362f00..9ad2d5b6b 100644
--- a/backtrader/analyzers/leverage.py
+++ b/backtrader/analyzers/leverage.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/logreturnsrolling.py b/backtrader/analyzers/logreturnsrolling.py
index 4dc8a8465..81a7136ba 100644
--- a/backtrader/analyzers/logreturnsrolling.py
+++ b/backtrader/analyzers/logreturnsrolling.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/periodstats.py b/backtrader/analyzers/periodstats.py
index 07271baec..50bdf96d6 100644
--- a/backtrader/analyzers/periodstats.py
+++ b/backtrader/analyzers/periodstats.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/positions.py b/backtrader/analyzers/positions.py
index 7d2e1d7c4..3be365f0c 100644
--- a/backtrader/analyzers/positions.py
+++ b/backtrader/analyzers/positions.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/pyfolio.py b/backtrader/analyzers/pyfolio.py
index d15bc9d04..95d2788a4 100644
--- a/backtrader/analyzers/pyfolio.py
+++ b/backtrader/analyzers/pyfolio.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/returns.py b/backtrader/analyzers/returns.py
index ceb39e31e..23d67c3d0 100644
--- a/backtrader/analyzers/returns.py
+++ b/backtrader/analyzers/returns.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/sharpe.py b/backtrader/analyzers/sharpe.py
index d6971c636..6988d21dd 100644
--- a/backtrader/analyzers/sharpe.py
+++ b/backtrader/analyzers/sharpe.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/sqn.py b/backtrader/analyzers/sqn.py
index 56732f856..2ce71a6d8 100644
--- a/backtrader/analyzers/sqn.py
+++ b/backtrader/analyzers/sqn.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/timereturn.py b/backtrader/analyzers/timereturn.py
index 70374e368..8407ae649 100644
--- a/backtrader/analyzers/timereturn.py
+++ b/backtrader/analyzers/timereturn.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/tradeanalyzer.py b/backtrader/analyzers/tradeanalyzer.py
index 2714d0124..c9b549331 100644
--- a/backtrader/analyzers/tradeanalyzer.py
+++ b/backtrader/analyzers/tradeanalyzer.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/transactions.py b/backtrader/analyzers/transactions.py
index dbeb94e94..07e1a4129 100644
--- a/backtrader/analyzers/transactions.py
+++ b/backtrader/analyzers/transactions.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 2bd758aed..e2990a304 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/broker.py b/backtrader/broker.py
index b88de5b21..5493864b5 100644
--- a/backtrader/broker.py
+++ b/backtrader/broker.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/brokers/__init__.py b/backtrader/brokers/__init__.py
index 0efd3ce67..111d67535 100644
--- a/backtrader/brokers/__init__.py
+++ b/backtrader/brokers/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/brokers/bbroker.py b/backtrader/brokers/bbroker.py
index 1c7a64d80..3ae614b89 100644
--- a/backtrader/brokers/bbroker.py
+++ b/backtrader/brokers/bbroker.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/brokers/ibbroker.py b/backtrader/brokers/ibbroker.py
index 20e63dffc..5109dce27 100644
--- a/backtrader/brokers/ibbroker.py
+++ b/backtrader/brokers/ibbroker.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/brokers/oandabroker.py b/backtrader/brokers/oandabroker.py
index c584904be..4fe63e4d6 100644
--- a/backtrader/brokers/oandabroker.py
+++ b/backtrader/brokers/oandabroker.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/brokers/vcbroker.py b/backtrader/brokers/vcbroker.py
index 4c98d94e5..f70a79ccd 100644
--- a/backtrader/brokers/vcbroker.py
+++ b/backtrader/brokers/vcbroker.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/btrun/__init__.py b/backtrader/btrun/__init__.py
index e3b9c4a6f..334a8f8e5 100644
--- a/backtrader/btrun/__init__.py
+++ b/backtrader/btrun/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/btrun/btrun.py b/backtrader/btrun/btrun.py
index f93727629..790b21145 100644
--- a/backtrader/btrun/btrun.py
+++ b/backtrader/btrun/btrun.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/cerebro.py b/backtrader/cerebro.py
index 9b18e7775..7d9403668 100644
--- a/backtrader/cerebro.py
+++ b/backtrader/cerebro.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/comminfo.py b/backtrader/comminfo.py
index 6bfd8e015..b28960313 100644
--- a/backtrader/comminfo.py
+++ b/backtrader/comminfo.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/commissions/__init__.py b/backtrader/commissions/__init__.py
index 209627eb6..1900aff0f 100644
--- a/backtrader/commissions/__init__.py
+++ b/backtrader/commissions/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/dataseries.py b/backtrader/dataseries.py
index f35c170f4..4b9dd662b 100644
--- a/backtrader/dataseries.py
+++ b/backtrader/dataseries.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/errors.py b/backtrader/errors.py
index 5f3dcdb33..c0c026811 100644
--- a/backtrader/errors.py
+++ b/backtrader/errors.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feed.py b/backtrader/feed.py
index 84c6b2b89..09824a455 100644
--- a/backtrader/feed.py
+++ b/backtrader/feed.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/__init__.py b/backtrader/feeds/__init__.py
index 8054715dc..aba95718e 100644
--- a/backtrader/feeds/__init__.py
+++ b/backtrader/feeds/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/blaze.py b/backtrader/feeds/blaze.py
index 5496e50b8..c9f0f67b2 100644
--- a/backtrader/feeds/blaze.py
+++ b/backtrader/feeds/blaze.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/btcsv.py b/backtrader/feeds/btcsv.py
index 1d00e0745..ce005ef34 100644
--- a/backtrader/feeds/btcsv.py
+++ b/backtrader/feeds/btcsv.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/chainer.py b/backtrader/feeds/chainer.py
index 9cce29df9..6a7352d22 100644
--- a/backtrader/feeds/chainer.py
+++ b/backtrader/feeds/chainer.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/csvgeneric.py b/backtrader/feeds/csvgeneric.py
index cc6a30d0c..6fedf07f5 100644
--- a/backtrader/feeds/csvgeneric.py
+++ b/backtrader/feeds/csvgeneric.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/ibdata.py b/backtrader/feeds/ibdata.py
index 66b012552..e93ceb6d5 100644
--- a/backtrader/feeds/ibdata.py
+++ b/backtrader/feeds/ibdata.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/influxfeed.py b/backtrader/feeds/influxfeed.py
index 7f047b8ae..acc9165e9 100644
--- a/backtrader/feeds/influxfeed.py
+++ b/backtrader/feeds/influxfeed.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/mt4csv.py b/backtrader/feeds/mt4csv.py
index 74dc7dbca..327461bf8 100644
--- a/backtrader/feeds/mt4csv.py
+++ b/backtrader/feeds/mt4csv.py
@@ -2,8 +2,8 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/oanda.py b/backtrader/feeds/oanda.py
index 2581772ea..5ef27eaf8 100644
--- a/backtrader/feeds/oanda.py
+++ b/backtrader/feeds/oanda.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/pandafeed.py b/backtrader/feeds/pandafeed.py
index cc90953ae..349023fa0 100644
--- a/backtrader/feeds/pandafeed.py
+++ b/backtrader/feeds/pandafeed.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/quandl.py b/backtrader/feeds/quandl.py
index 08ea1b2c3..b94cc5088 100644
--- a/backtrader/feeds/quandl.py
+++ b/backtrader/feeds/quandl.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/rollover.py b/backtrader/feeds/rollover.py
index 689118d27..f9b0ea403 100644
--- a/backtrader/feeds/rollover.py
+++ b/backtrader/feeds/rollover.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/sierrachart.py b/backtrader/feeds/sierrachart.py
index ce12323ce..7fe679ba3 100644
--- a/backtrader/feeds/sierrachart.py
+++ b/backtrader/feeds/sierrachart.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/vcdata.py b/backtrader/feeds/vcdata.py
index f60a0e760..0febde794 100644
--- a/backtrader/feeds/vcdata.py
+++ b/backtrader/feeds/vcdata.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/vchart.py b/backtrader/feeds/vchart.py
index 9f042c718..f1588b58b 100644
--- a/backtrader/feeds/vchart.py
+++ b/backtrader/feeds/vchart.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/vchartcsv.py b/backtrader/feeds/vchartcsv.py
index d5dbdf345..b27b8b275 100644
--- a/backtrader/feeds/vchartcsv.py
+++ b/backtrader/feeds/vchartcsv.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/vchartfile.py b/backtrader/feeds/vchartfile.py
index 1e7b84ec6..daa4bc6e2 100644
--- a/backtrader/feeds/vchartfile.py
+++ b/backtrader/feeds/vchartfile.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/feeds/yahoo.py b/backtrader/feeds/yahoo.py
index d9a05212a..666c87e04 100644
--- a/backtrader/feeds/yahoo.py
+++ b/backtrader/feeds/yahoo.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/fillers.py b/backtrader/fillers.py
index 3bd298f88..d2d639dd4 100644
--- a/backtrader/fillers.py
+++ b/backtrader/fillers.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/__init__.py b/backtrader/filters/__init__.py
index 3e6cad695..a93629bd1 100644
--- a/backtrader/filters/__init__.py
+++ b/backtrader/filters/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/bsplitter.py b/backtrader/filters/bsplitter.py
index 997aa2a51..7df92e0b0 100644
--- a/backtrader/filters/bsplitter.py
+++ b/backtrader/filters/bsplitter.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/calendardays.py b/backtrader/filters/calendardays.py
index 8f1345eb2..4074cc453 100644
--- a/backtrader/filters/calendardays.py
+++ b/backtrader/filters/calendardays.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/datafiller.py b/backtrader/filters/datafiller.py
index 87fe0521c..270c3cd3e 100644
--- a/backtrader/filters/datafiller.py
+++ b/backtrader/filters/datafiller.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/datafilter.py b/backtrader/filters/datafilter.py
index f9fa8e25f..15fea96ec 100644
--- a/backtrader/filters/datafilter.py
+++ b/backtrader/filters/datafilter.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/daysteps.py b/backtrader/filters/daysteps.py
index 7d56bd222..4c0719aec 100644
--- a/backtrader/filters/daysteps.py
+++ b/backtrader/filters/daysteps.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/heikinashi.py b/backtrader/filters/heikinashi.py
index 08165e73a..0d1f50c93 100644
--- a/backtrader/filters/heikinashi.py
+++ b/backtrader/filters/heikinashi.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/renko.py b/backtrader/filters/renko.py
index d07c080e7..cd64385a4 100644
--- a/backtrader/filters/renko.py
+++ b/backtrader/filters/renko.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/filters/session.py b/backtrader/filters/session.py
index 60e437b5b..3d351d252 100644
--- a/backtrader/filters/session.py
+++ b/backtrader/filters/session.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/flt.py b/backtrader/flt.py
index 018385dae..718d56785 100644
--- a/backtrader/flt.py
+++ b/backtrader/flt.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/functions.py b/backtrader/functions.py
index 40109bba7..87bbb7afa 100644
--- a/backtrader/functions.py
+++ b/backtrader/functions.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicator.py b/backtrader/indicator.py
index b46b31785..15e1ad56a 100644
--- a/backtrader/indicator.py
+++ b/backtrader/indicator.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/__init__.py b/backtrader/indicators/__init__.py
index da7735c23..f201e16b7 100644
--- a/backtrader/indicators/__init__.py
+++ b/backtrader/indicators/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/accdecoscillator.py b/backtrader/indicators/accdecoscillator.py
index e3496932d..44abf2163 100644
--- a/backtrader/indicators/accdecoscillator.py
+++ b/backtrader/indicators/accdecoscillator.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/aroon.py b/backtrader/indicators/aroon.py
index 98782d0f6..142135fd7 100644
--- a/backtrader/indicators/aroon.py
+++ b/backtrader/indicators/aroon.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/atr.py b/backtrader/indicators/atr.py
index c6fd72e20..3fa2915ca 100644
--- a/backtrader/indicators/atr.py
+++ b/backtrader/indicators/atr.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/awesomeoscillator.py b/backtrader/indicators/awesomeoscillator.py
index 40b5ac16d..dadb7c791 100644
--- a/backtrader/indicators/awesomeoscillator.py
+++ b/backtrader/indicators/awesomeoscillator.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/basicops.py b/backtrader/indicators/basicops.py
index b4e3c6b24..d2f47cc40 100644
--- a/backtrader/indicators/basicops.py
+++ b/backtrader/indicators/basicops.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/bollinger.py b/backtrader/indicators/bollinger.py
index 8f95474ad..fd0a2c70a 100644
--- a/backtrader/indicators/bollinger.py
+++ b/backtrader/indicators/bollinger.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/cci.py b/backtrader/indicators/cci.py
index ab07f61f8..8b5bcbedf 100644
--- a/backtrader/indicators/cci.py
+++ b/backtrader/indicators/cci.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/contrib/__init__.py b/backtrader/indicators/contrib/__init__.py
index e7bb3d36a..432da94f4 100644
--- a/backtrader/indicators/contrib/__init__.py
+++ b/backtrader/indicators/contrib/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/contrib/vortex.py b/backtrader/indicators/contrib/vortex.py
index fbeab5c64..803371a23 100644
--- a/backtrader/indicators/contrib/vortex.py
+++ b/backtrader/indicators/contrib/vortex.py
@@ -2,8 +2,8 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/crossover.py b/backtrader/indicators/crossover.py
index 86c0f5de6..6ddb7d044 100644
--- a/backtrader/indicators/crossover.py
+++ b/backtrader/indicators/crossover.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/dema.py b/backtrader/indicators/dema.py
index 4f293a1e8..6c955b7f4 100644
--- a/backtrader/indicators/dema.py
+++ b/backtrader/indicators/dema.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/deviation.py b/backtrader/indicators/deviation.py
index 33ed54826..d92c79ac6 100644
--- a/backtrader/indicators/deviation.py
+++ b/backtrader/indicators/deviation.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/directionalmove.py b/backtrader/indicators/directionalmove.py
index f52cd1468..423e662d5 100644
--- a/backtrader/indicators/directionalmove.py
+++ b/backtrader/indicators/directionalmove.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/dma.py b/backtrader/indicators/dma.py
index 596e17023..6a8231209 100644
--- a/backtrader/indicators/dma.py
+++ b/backtrader/indicators/dma.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/dpo.py b/backtrader/indicators/dpo.py
index f150ace5a..5788dc37b 100644
--- a/backtrader/indicators/dpo.py
+++ b/backtrader/indicators/dpo.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/dv2.py b/backtrader/indicators/dv2.py
index 0bde533ab..be9c3c2c6 100644
--- a/backtrader/indicators/dv2.py
+++ b/backtrader/indicators/dv2.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/ema.py b/backtrader/indicators/ema.py
index a3054c24d..401555705 100644
--- a/backtrader/indicators/ema.py
+++ b/backtrader/indicators/ema.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/envelope.py b/backtrader/indicators/envelope.py
index ba117613b..65e3e71f3 100644
--- a/backtrader/indicators/envelope.py
+++ b/backtrader/indicators/envelope.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/hadelta.py b/backtrader/indicators/hadelta.py
index d2b0a7231..b33acb1ea 100644
--- a/backtrader/indicators/hadelta.py
+++ b/backtrader/indicators/hadelta.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/heikinashi.py b/backtrader/indicators/heikinashi.py
index a58ef2751..509e7a59b 100644
--- a/backtrader/indicators/heikinashi.py
+++ b/backtrader/indicators/heikinashi.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/hma.py b/backtrader/indicators/hma.py
index 5f9185277..12b47b169 100644
--- a/backtrader/indicators/hma.py
+++ b/backtrader/indicators/hma.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/hurst.py b/backtrader/indicators/hurst.py
index 90c57b1b8..62e602a24 100644
--- a/backtrader/indicators/hurst.py
+++ b/backtrader/indicators/hurst.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/ichimoku.py b/backtrader/indicators/ichimoku.py
index c08543212..3f59eb1b4 100644
--- a/backtrader/indicators/ichimoku.py
+++ b/backtrader/indicators/ichimoku.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/kama.py b/backtrader/indicators/kama.py
index 704d6b40f..6dfc612a8 100644
--- a/backtrader/indicators/kama.py
+++ b/backtrader/indicators/kama.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/kst.py b/backtrader/indicators/kst.py
index 5933eda42..957517f7c 100644
--- a/backtrader/indicators/kst.py
+++ b/backtrader/indicators/kst.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/lrsi.py b/backtrader/indicators/lrsi.py
index d6a9817e0..b1bd7a5ba 100644
--- a/backtrader/indicators/lrsi.py
+++ b/backtrader/indicators/lrsi.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/mabase.py b/backtrader/indicators/mabase.py
index c9dc8b437..42d54c61a 100644
--- a/backtrader/indicators/mabase.py
+++ b/backtrader/indicators/mabase.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/macd.py b/backtrader/indicators/macd.py
index e12663fe2..73f5ad5d5 100644
--- a/backtrader/indicators/macd.py
+++ b/backtrader/indicators/macd.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/momentum.py b/backtrader/indicators/momentum.py
index 4f9d9ec40..8edb71306 100644
--- a/backtrader/indicators/momentum.py
+++ b/backtrader/indicators/momentum.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/ols.py b/backtrader/indicators/ols.py
index 639a84502..8481805c7 100644
--- a/backtrader/indicators/ols.py
+++ b/backtrader/indicators/ols.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/oscillator.py b/backtrader/indicators/oscillator.py
index 8155c3296..540c9f6b7 100644
--- a/backtrader/indicators/oscillator.py
+++ b/backtrader/indicators/oscillator.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/percentchange.py b/backtrader/indicators/percentchange.py
index c1013db04..95884bbcd 100644
--- a/backtrader/indicators/percentchange.py
+++ b/backtrader/indicators/percentchange.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/percentrank.py b/backtrader/indicators/percentrank.py
index 3d4f14f9c..629efbf54 100644
--- a/backtrader/indicators/percentrank.py
+++ b/backtrader/indicators/percentrank.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/pivotpoint.py b/backtrader/indicators/pivotpoint.py
index 750b4ab80..1b659ca1d 100644
--- a/backtrader/indicators/pivotpoint.py
+++ b/backtrader/indicators/pivotpoint.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/prettygoodoscillator.py b/backtrader/indicators/prettygoodoscillator.py
index 7db3ef0fa..088fd1d97 100644
--- a/backtrader/indicators/prettygoodoscillator.py
+++ b/backtrader/indicators/prettygoodoscillator.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/priceoscillator.py b/backtrader/indicators/priceoscillator.py
index 083f0ff4c..c345b4201 100644
--- a/backtrader/indicators/priceoscillator.py
+++ b/backtrader/indicators/priceoscillator.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/psar.py b/backtrader/indicators/psar.py
index b03c899e6..58f03b165 100644
--- a/backtrader/indicators/psar.py
+++ b/backtrader/indicators/psar.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/rmi.py b/backtrader/indicators/rmi.py
index e9a950a19..a05322dd1 100644
--- a/backtrader/indicators/rmi.py
+++ b/backtrader/indicators/rmi.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/rsi.py b/backtrader/indicators/rsi.py
index 56cd9210b..8acdf1dfe 100644
--- a/backtrader/indicators/rsi.py
+++ b/backtrader/indicators/rsi.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/sma.py b/backtrader/indicators/sma.py
index 0207131ee..bd600daaf 100644
--- a/backtrader/indicators/sma.py
+++ b/backtrader/indicators/sma.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/smma.py b/backtrader/indicators/smma.py
index 6859f8498..8ecb39a80 100644
--- a/backtrader/indicators/smma.py
+++ b/backtrader/indicators/smma.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/stochastic.py b/backtrader/indicators/stochastic.py
index 1cb5c7caa..74ffbadfd 100644
--- a/backtrader/indicators/stochastic.py
+++ b/backtrader/indicators/stochastic.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/trix.py b/backtrader/indicators/trix.py
index 03964a54e..d6bea4fa7 100644
--- a/backtrader/indicators/trix.py
+++ b/backtrader/indicators/trix.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/tsi.py b/backtrader/indicators/tsi.py
index 8b8025f23..f4a9078f3 100644
--- a/backtrader/indicators/tsi.py
+++ b/backtrader/indicators/tsi.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/ultimateoscillator.py b/backtrader/indicators/ultimateoscillator.py
index cd9a88e6c..5773f0af0 100644
--- a/backtrader/indicators/ultimateoscillator.py
+++ b/backtrader/indicators/ultimateoscillator.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/vortex.py b/backtrader/indicators/vortex.py
index dd369cc40..2fcd4cc20 100644
--- a/backtrader/indicators/vortex.py
+++ b/backtrader/indicators/vortex.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/williams.py b/backtrader/indicators/williams.py
index cafe0a97b..52d92dda7 100644
--- a/backtrader/indicators/williams.py
+++ b/backtrader/indicators/williams.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/wma.py b/backtrader/indicators/wma.py
index 62fecc0a6..0361db679 100644
--- a/backtrader/indicators/wma.py
+++ b/backtrader/indicators/wma.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/zlema.py b/backtrader/indicators/zlema.py
index ef3c57182..6fd21ec77 100644
--- a/backtrader/indicators/zlema.py
+++ b/backtrader/indicators/zlema.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/indicators/zlind.py b/backtrader/indicators/zlind.py
index 19ec77e10..6d4fa69d5 100644
--- a/backtrader/indicators/zlind.py
+++ b/backtrader/indicators/zlind.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/linebuffer.py b/backtrader/linebuffer.py
index 0102ddbe0..9a553bc6d 100644
--- a/backtrader/linebuffer.py
+++ b/backtrader/linebuffer.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/lineiterator.py b/backtrader/lineiterator.py
index 2ead478b8..c92b0f3ab 100644
--- a/backtrader/lineiterator.py
+++ b/backtrader/lineiterator.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/lineroot.py b/backtrader/lineroot.py
index ee5d5aabd..0e9155d83 100644
--- a/backtrader/lineroot.py
+++ b/backtrader/lineroot.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/lineseries.py b/backtrader/lineseries.py
index babd10572..88e87a310 100644
--- a/backtrader/lineseries.py
+++ b/backtrader/lineseries.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/mathsupport.py b/backtrader/mathsupport.py
index 0ffec0653..3491bb811 100644
--- a/backtrader/mathsupport.py
+++ b/backtrader/mathsupport.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/metabase.py b/backtrader/metabase.py
index 8f19cbb89..c4e8a2bff 100644
--- a/backtrader/metabase.py
+++ b/backtrader/metabase.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observer.py b/backtrader/observer.py
index 5b41be65b..0ad515459 100644
--- a/backtrader/observer.py
+++ b/backtrader/observer.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observers/__init__.py b/backtrader/observers/__init__.py
index 48690e57f..d272b9f34 100644
--- a/backtrader/observers/__init__.py
+++ b/backtrader/observers/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observers/benchmark.py b/backtrader/observers/benchmark.py
index 042f8c027..23aa3ae8c 100644
--- a/backtrader/observers/benchmark.py
+++ b/backtrader/observers/benchmark.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observers/broker.py b/backtrader/observers/broker.py
index 85b42733b..3dae89a04 100644
--- a/backtrader/observers/broker.py
+++ b/backtrader/observers/broker.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observers/buysell.py b/backtrader/observers/buysell.py
index 2fe067b59..1925e80f3 100644
--- a/backtrader/observers/buysell.py
+++ b/backtrader/observers/buysell.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observers/drawdown.py b/backtrader/observers/drawdown.py
index e91ba295f..e8c40547a 100644
--- a/backtrader/observers/drawdown.py
+++ b/backtrader/observers/drawdown.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observers/logreturns.py b/backtrader/observers/logreturns.py
index e4e9e7bd3..4bdd5f12a 100644
--- a/backtrader/observers/logreturns.py
+++ b/backtrader/observers/logreturns.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observers/timereturn.py b/backtrader/observers/timereturn.py
index 49503d599..d9fc11784 100644
--- a/backtrader/observers/timereturn.py
+++ b/backtrader/observers/timereturn.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/observers/trades.py b/backtrader/observers/trades.py
index 144cf03fb..79e2482d1 100644
--- a/backtrader/observers/trades.py
+++ b/backtrader/observers/trades.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/order.py b/backtrader/order.py
index 4a68346cd..89ad6bb0f 100644
--- a/backtrader/order.py
+++ b/backtrader/order.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/plot/__init__.py b/backtrader/plot/__init__.py
index d949c7fa3..42ed647e9 100644
--- a/backtrader/plot/__init__.py
+++ b/backtrader/plot/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/plot/finance.py b/backtrader/plot/finance.py
index 9aea06085..9980d164f 100644
--- a/backtrader/plot/finance.py
+++ b/backtrader/plot/finance.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/plot/formatters.py b/backtrader/plot/formatters.py
index 2406d595c..818f15db7 100644
--- a/backtrader/plot/formatters.py
+++ b/backtrader/plot/formatters.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/plot/locator.py b/backtrader/plot/locator.py
index 848e62bb8..aa3e37881 100644
--- a/backtrader/plot/locator.py
+++ b/backtrader/plot/locator.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/plot/plot.py b/backtrader/plot/plot.py
index 6e92e374f..4f1666bd5 100644
--- a/backtrader/plot/plot.py
+++ b/backtrader/plot/plot.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/plot/scheme.py b/backtrader/plot/scheme.py
index e6572a4a7..ab250dcb5 100644
--- a/backtrader/plot/scheme.py
+++ b/backtrader/plot/scheme.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/plot/utils.py b/backtrader/plot/utils.py
index cb187b26e..f8b0ac963 100644
--- a/backtrader/plot/utils.py
+++ b/backtrader/plot/utils.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/position.py b/backtrader/position.py
index f7f2f764f..e2f55db19 100644
--- a/backtrader/position.py
+++ b/backtrader/position.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/resamplerfilter.py b/backtrader/resamplerfilter.py
index 73257fd30..7c65155a4 100644
--- a/backtrader/resamplerfilter.py
+++ b/backtrader/resamplerfilter.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/signal.py b/backtrader/signal.py
index 74e41b2bb..03b05ec41 100644
--- a/backtrader/signal.py
+++ b/backtrader/signal.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/signals/__init__.py b/backtrader/signals/__init__.py
index 1e11f1cd6..9242f32ac 100644
--- a/backtrader/signals/__init__.py
+++ b/backtrader/signals/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/sizer.py b/backtrader/sizer.py
index c78f837bb..2a6e0a399 100644
--- a/backtrader/sizer.py
+++ b/backtrader/sizer.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/sizers/__init__.py b/backtrader/sizers/__init__.py
index b79ab6cb0..9385675e9 100644
--- a/backtrader/sizers/__init__.py
+++ b/backtrader/sizers/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/sizers/fixedsize.py b/backtrader/sizers/fixedsize.py
index adf7be18c..60012933f 100644
--- a/backtrader/sizers/fixedsize.py
+++ b/backtrader/sizers/fixedsize.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/sizers/percents_sizer.py b/backtrader/sizers/percents_sizer.py
index d9e3eeeb0..066a2b525 100644
--- a/backtrader/sizers/percents_sizer.py
+++ b/backtrader/sizers/percents_sizer.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/store.py b/backtrader/store.py
index a1352671d..e644435b5 100644
--- a/backtrader/store.py
+++ b/backtrader/store.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/stores/__init__.py b/backtrader/stores/__init__.py
index f60afb6ad..8184b74b1 100644
--- a/backtrader/stores/__init__.py
+++ b/backtrader/stores/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/stores/ibstore.py b/backtrader/stores/ibstore.py
index 00ba5e11b..2469cb6e9 100644
--- a/backtrader/stores/ibstore.py
+++ b/backtrader/stores/ibstore.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/stores/oandastore.py b/backtrader/stores/oandastore.py
index 15396576e..dd7eb6a27 100644
--- a/backtrader/stores/oandastore.py
+++ b/backtrader/stores/oandastore.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/stores/vchartfile.py b/backtrader/stores/vchartfile.py
index 35ef8ebaf..a4d3b0504 100644
--- a/backtrader/stores/vchartfile.py
+++ b/backtrader/stores/vchartfile.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/stores/vcstore.py b/backtrader/stores/vcstore.py
index 237e0ebc1..19093e2e6 100644
--- a/backtrader/stores/vcstore.py
+++ b/backtrader/stores/vcstore.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/strategies/__init__.py b/backtrader/strategies/__init__.py
index b453b16f3..2a735520b 100644
--- a/backtrader/strategies/__init__.py
+++ b/backtrader/strategies/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/strategies/sma_crossover.py b/backtrader/strategies/sma_crossover.py
index 3001ee886..54ba0c006 100644
--- a/backtrader/strategies/sma_crossover.py
+++ b/backtrader/strategies/sma_crossover.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/strategy.py b/backtrader/strategy.py
index e5115688d..675fe34c1 100644
--- a/backtrader/strategy.py
+++ b/backtrader/strategy.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/studies/__init__.py b/backtrader/studies/__init__.py
index 83368468b..0bea983f4 100644
--- a/backtrader/studies/__init__.py
+++ b/backtrader/studies/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/studies/contrib/__init__.py b/backtrader/studies/contrib/__init__.py
index 9e2a10521..0e3c6fb49 100644
--- a/backtrader/studies/contrib/__init__.py
+++ b/backtrader/studies/contrib/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/studies/contrib/fractal.py b/backtrader/studies/contrib/fractal.py
index 8cb644e80..5ff1438dc 100644
--- a/backtrader/studies/contrib/fractal.py
+++ b/backtrader/studies/contrib/fractal.py
@@ -3,7 +3,7 @@
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
# (based on backtrader from Daniel Rodriguez)
#
# This program is free software: you can redistribute it and/or modify
diff --git a/backtrader/talib.py b/backtrader/talib.py
index eff5ced30..afc92a8be 100644
--- a/backtrader/talib.py
+++ b/backtrader/talib.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/timer.py b/backtrader/timer.py
index a77706a5b..8c0a06e55 100644
--- a/backtrader/timer.py
+++ b/backtrader/timer.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/trade.py b/backtrader/trade.py
index 8bbf5e380..ba65d9cec 100644
--- a/backtrader/trade.py
+++ b/backtrader/trade.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/tradingcal.py b/backtrader/tradingcal.py
index c2c11b9f8..cf0ab7bf9 100644
--- a/backtrader/tradingcal.py
+++ b/backtrader/tradingcal.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/utils/__init__.py b/backtrader/utils/__init__.py
index 43e45d257..24fd84b3f 100644
--- a/backtrader/utils/__init__.py
+++ b/backtrader/utils/__init__.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/utils/autodict.py b/backtrader/utils/autodict.py
index ff2b101ac..e54e3dd0b 100644
--- a/backtrader/utils/autodict.py
+++ b/backtrader/utils/autodict.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/utils/date.py b/backtrader/utils/date.py
index 24eba07fe..7a9bf51af 100644
--- a/backtrader/utils/date.py
+++ b/backtrader/utils/date.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/utils/dateintern.py b/backtrader/utils/dateintern.py
index a69977c50..1714b29dc 100644
--- a/backtrader/utils/dateintern.py
+++ b/backtrader/utils/dateintern.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/utils/ordereddefaultdict.py b/backtrader/utils/ordereddefaultdict.py
index a2335832f..3fa69b064 100644
--- a/backtrader/utils/ordereddefaultdict.py
+++ b/backtrader/utils/ordereddefaultdict.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/utils/py3.py b/backtrader/utils/py3.py
index 60946b685..57a6dd1c7 100644
--- a/backtrader/utils/py3.py
+++ b/backtrader/utils/py3.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/version.py b/backtrader/version.py
index 52d618f60..d6a34f4b6 100644
--- a/backtrader/version.py
+++ b/backtrader/version.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/backtrader/writer.py b/backtrader/writer.py
index 7a4cecb91..ea3e8ff3e 100644
--- a/backtrader/writer.py
+++ b/backtrader/writer.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/analyzer-annualreturn/analyzer-annualreturn.py b/samples/analyzer-annualreturn/analyzer-annualreturn.py
index 9bcb5224e..d892032b1 100644
--- a/samples/analyzer-annualreturn/analyzer-annualreturn.py
+++ b/samples/analyzer-annualreturn/analyzer-annualreturn.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/bidask-to-ohlc/bidask-to-ohlc.py b/samples/bidask-to-ohlc/bidask-to-ohlc.py
index 92dc8b0ec..aa633473a 100644
--- a/samples/bidask-to-ohlc/bidask-to-ohlc.py
+++ b/samples/bidask-to-ohlc/bidask-to-ohlc.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/bracket/bracket.py b/samples/bracket/bracket.py
index 3df8326ca..22a49b257 100644
--- a/samples/bracket/bracket.py
+++ b/samples/bracket/bracket.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/btfd/btfd.py b/samples/btfd/btfd.py
index 6cf233d48..4995c13e2 100644
--- a/samples/btfd/btfd.py
+++ b/samples/btfd/btfd.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/calendar-days/calendar-days.py b/samples/calendar-days/calendar-days.py
index ab0df70a0..b59550d77 100644
--- a/samples/calendar-days/calendar-days.py
+++ b/samples/calendar-days/calendar-days.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/calmar/calmar-test.py b/samples/calmar/calmar-test.py
index 02ceb7257..93e1fd54b 100644
--- a/samples/calmar/calmar-test.py
+++ b/samples/calmar/calmar-test.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/cheat-on-open/cheat-on-open.py b/samples/cheat-on-open/cheat-on-open.py
index d0b658370..05761c25d 100644
--- a/samples/cheat-on-open/cheat-on-open.py
+++ b/samples/cheat-on-open/cheat-on-open.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/commission-schemes/commission-schemes.py b/samples/commission-schemes/commission-schemes.py
index 36a420006..6566bdeeb 100644
--- a/samples/commission-schemes/commission-schemes.py
+++ b/samples/commission-schemes/commission-schemes.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/credit-interest/credit-interest.py b/samples/credit-interest/credit-interest.py
index b4e005c07..5e31a6792 100644
--- a/samples/credit-interest/credit-interest.py
+++ b/samples/credit-interest/credit-interest.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/data-bid-ask/bidask.py b/samples/data-bid-ask/bidask.py
index 04d790bde..120597c59 100644
--- a/samples/data-bid-ask/bidask.py
+++ b/samples/data-bid-ask/bidask.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/data-filler/data-filler.py b/samples/data-filler/data-filler.py
index eaafb7648..e0010eba6 100644
--- a/samples/data-filler/data-filler.py
+++ b/samples/data-filler/data-filler.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/data-filler/relativevolume.py b/samples/data-filler/relativevolume.py
index 52fba897c..949062c10 100644
--- a/samples/data-filler/relativevolume.py
+++ b/samples/data-filler/relativevolume.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/data-multitimeframe/data-multitimeframe.py b/samples/data-multitimeframe/data-multitimeframe.py
index 22feb6511..6720ec1ff 100644
--- a/samples/data-multitimeframe/data-multitimeframe.py
+++ b/samples/data-multitimeframe/data-multitimeframe.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/data-pandas/data-pandas-optix.py b/samples/data-pandas/data-pandas-optix.py
index 264187ec9..d268e2d16 100644
--- a/samples/data-pandas/data-pandas-optix.py
+++ b/samples/data-pandas/data-pandas-optix.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/data-pandas/data-pandas.py b/samples/data-pandas/data-pandas.py
index cc112a1a8..9a7b655d8 100644
--- a/samples/data-pandas/data-pandas.py
+++ b/samples/data-pandas/data-pandas.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/data-replay/data-replay.py b/samples/data-replay/data-replay.py
index 685ba64ea..faba11e04 100644
--- a/samples/data-replay/data-replay.py
+++ b/samples/data-replay/data-replay.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/data-resample/data-resample.py b/samples/data-resample/data-resample.py
index 228a8b69f..238e7c624 100644
--- a/samples/data-resample/data-resample.py
+++ b/samples/data-resample/data-resample.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/daysteps/daysteps.py b/samples/daysteps/daysteps.py
index 6335c6c37..8f7e0d9b0 100644
--- a/samples/daysteps/daysteps.py
+++ b/samples/daysteps/daysteps.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/future-spot/future-spot.py b/samples/future-spot/future-spot.py
index e1181c497..9eda9de32 100644
--- a/samples/future-spot/future-spot.py
+++ b/samples/future-spot/future-spot.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/gold-vs-sp500/gold-vs-sp500.py b/samples/gold-vs-sp500/gold-vs-sp500.py
index 7b18675da..e12d9906e 100644
--- a/samples/gold-vs-sp500/gold-vs-sp500.py
+++ b/samples/gold-vs-sp500/gold-vs-sp500.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/ib-cash-bid-ask/ib-cash-bid-ask.py b/samples/ib-cash-bid-ask/ib-cash-bid-ask.py
index 3d8df7a86..629f18665 100644
--- a/samples/ib-cash-bid-ask/ib-cash-bid-ask.py
+++ b/samples/ib-cash-bid-ask/ib-cash-bid-ask.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/ibtest/ibtest.py b/samples/ibtest/ibtest.py
index 9951474fb..a90c94490 100644
--- a/samples/ibtest/ibtest.py
+++ b/samples/ibtest/ibtest.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/kselrsi/ksignal.py b/samples/kselrsi/ksignal.py
index 3b3124014..4f633adf0 100644
--- a/samples/kselrsi/ksignal.py
+++ b/samples/kselrsi/ksignal.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/lineplotter/lineplotter.py b/samples/lineplotter/lineplotter.py
index a641824f6..ac741fae7 100644
--- a/samples/lineplotter/lineplotter.py
+++ b/samples/lineplotter/lineplotter.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/lrsi/lrsi-test.py b/samples/lrsi/lrsi-test.py
index 669714312..cfbc43326 100644
--- a/samples/lrsi/lrsi-test.py
+++ b/samples/lrsi/lrsi-test.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/macd-settings/macd-settings.py b/samples/macd-settings/macd-settings.py
index 799f0397a..3db1d94e0 100644
--- a/samples/macd-settings/macd-settings.py
+++ b/samples/macd-settings/macd-settings.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/memory-savings/memory-savings.py b/samples/memory-savings/memory-savings.py
index e5a456a62..d8190ec33 100644
--- a/samples/memory-savings/memory-savings.py
+++ b/samples/memory-savings/memory-savings.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/mixing-timeframes/mixing-timeframes.py b/samples/mixing-timeframes/mixing-timeframes.py
index 0385a685f..924a2e593 100644
--- a/samples/mixing-timeframes/mixing-timeframes.py
+++ b/samples/mixing-timeframes/mixing-timeframes.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/multi-copy/multi-copy.py b/samples/multi-copy/multi-copy.py
index a7dee85b5..f6237bfcc 100644
--- a/samples/multi-copy/multi-copy.py
+++ b/samples/multi-copy/multi-copy.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/multi-example/mult-values.py b/samples/multi-example/mult-values.py
index a0e82f293..c45977b57 100644
--- a/samples/multi-example/mult-values.py
+++ b/samples/multi-example/mult-values.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/multidata-strategy/multidata-strategy-unaligned.py b/samples/multidata-strategy/multidata-strategy-unaligned.py
index 8097eaf9b..6987e6ae4 100644
--- a/samples/multidata-strategy/multidata-strategy-unaligned.py
+++ b/samples/multidata-strategy/multidata-strategy-unaligned.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/multidata-strategy/multidata-strategy.py b/samples/multidata-strategy/multidata-strategy.py
index 0ccb02c3d..16edc9096 100644
--- a/samples/multidata-strategy/multidata-strategy.py
+++ b/samples/multidata-strategy/multidata-strategy.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/multitrades/mtradeobserver.py b/samples/multitrades/mtradeobserver.py
index 9413e9115..9c94d7b65 100644
--- a/samples/multitrades/mtradeobserver.py
+++ b/samples/multitrades/mtradeobserver.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/multitrades/multitrades.py b/samples/multitrades/multitrades.py
index 29eea9599..d3b951455 100644
--- a/samples/multitrades/multitrades.py
+++ b/samples/multitrades/multitrades.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/oandatest/oandatest.py b/samples/oandatest/oandatest.py
index 4dbe5cf98..7587c6d9b 100644
--- a/samples/oandatest/oandatest.py
+++ b/samples/oandatest/oandatest.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/observer-benchmark/observer-benchmark.py b/samples/observer-benchmark/observer-benchmark.py
index 1df01e9ef..c02a6cb4f 100644
--- a/samples/observer-benchmark/observer-benchmark.py
+++ b/samples/observer-benchmark/observer-benchmark.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/observers/observers-default-drawdown.py b/samples/observers/observers-default-drawdown.py
index d053c7014..5b94185cf 100644
--- a/samples/observers/observers-default-drawdown.py
+++ b/samples/observers/observers-default-drawdown.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/observers/observers-default.py b/samples/observers/observers-default.py
index 290756b5d..d956b1c76 100644
--- a/samples/observers/observers-default.py
+++ b/samples/observers/observers-default.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/observers/observers-orderobserver.py b/samples/observers/observers-orderobserver.py
index 5f3d2d864..f7f955a4e 100644
--- a/samples/observers/observers-orderobserver.py
+++ b/samples/observers/observers-orderobserver.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/observers/orderobserver.py b/samples/observers/orderobserver.py
index 379b25dfd..e65860ee0 100644
--- a/samples/observers/orderobserver.py
+++ b/samples/observers/orderobserver.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/oco/oco.py b/samples/oco/oco.py
index 3e49e9f93..8eb800d07 100644
--- a/samples/oco/oco.py
+++ b/samples/oco/oco.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/optimization/optimization.py b/samples/optimization/optimization.py
index 43c80458c..e83bde4d6 100644
--- a/samples/optimization/optimization.py
+++ b/samples/optimization/optimization.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/order-close/close-daily.py b/samples/order-close/close-daily.py
index 9322824bd..9ee6b84ad 100644
--- a/samples/order-close/close-daily.py
+++ b/samples/order-close/close-daily.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/order-close/close-minute.py b/samples/order-close/close-minute.py
index 7367a4344..dce8c12ea 100644
--- a/samples/order-close/close-minute.py
+++ b/samples/order-close/close-minute.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/order-execution/order-execution.py b/samples/order-execution/order-execution.py
index c398dad64..0b16dca22 100644
--- a/samples/order-execution/order-execution.py
+++ b/samples/order-execution/order-execution.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/order-history/order-history.py b/samples/order-history/order-history.py
index e604a1430..11903560e 100644
--- a/samples/order-history/order-history.py
+++ b/samples/order-history/order-history.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/order_target/order_target.py b/samples/order_target/order_target.py
index 3666390a0..201447394 100644
--- a/samples/order_target/order_target.py
+++ b/samples/order_target/order_target.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/partial-plot/partial-plot.py b/samples/partial-plot/partial-plot.py
index 0c67f1097..d6db8110c 100644
--- a/samples/partial-plot/partial-plot.py
+++ b/samples/partial-plot/partial-plot.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/pinkfish-challenge/pinkfish-challenge.py b/samples/pinkfish-challenge/pinkfish-challenge.py
index bf43aee8c..fd2463488 100644
--- a/samples/pinkfish-challenge/pinkfish-challenge.py
+++ b/samples/pinkfish-challenge/pinkfish-challenge.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/pivot-point/pivotpoint.py b/samples/pivot-point/pivotpoint.py
index 09a091f4d..5a757a9fb 100644
--- a/samples/pivot-point/pivotpoint.py
+++ b/samples/pivot-point/pivotpoint.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/pivot-point/ppsample.py b/samples/pivot-point/ppsample.py
index aad3aaf7c..0339db8c9 100644
--- a/samples/pivot-point/ppsample.py
+++ b/samples/pivot-point/ppsample.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/plot-same-axis/plot-same-axis.py b/samples/plot-same-axis/plot-same-axis.py
index c67c88963..14bc26c81 100644
--- a/samples/plot-same-axis/plot-same-axis.py
+++ b/samples/plot-same-axis/plot-same-axis.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/psar/psar-intraday.py b/samples/psar/psar-intraday.py
index f16af16b0..c5dd37ff5 100644
--- a/samples/psar/psar-intraday.py
+++ b/samples/psar/psar-intraday.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/psar/psar.py b/samples/psar/psar.py
index 7140d7e9f..5ce59f392 100644
--- a/samples/psar/psar.py
+++ b/samples/psar/psar.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/pyfolio2/pyfoliotest.py b/samples/pyfolio2/pyfoliotest.py
index 681f94602..32a8ec595 100644
--- a/samples/pyfolio2/pyfoliotest.py
+++ b/samples/pyfolio2/pyfoliotest.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/pyfoliotest/pyfoliotest.py b/samples/pyfoliotest/pyfoliotest.py
index 2ee6701ff..185196cc1 100644
--- a/samples/pyfoliotest/pyfoliotest.py
+++ b/samples/pyfoliotest/pyfoliotest.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/relative-volume/relative-volume.py b/samples/relative-volume/relative-volume.py
index b285735d5..83c051be6 100644
--- a/samples/relative-volume/relative-volume.py
+++ b/samples/relative-volume/relative-volume.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/relative-volume/relvolbybar.py b/samples/relative-volume/relvolbybar.py
index 0ab5c91ca..cb34eff7c 100644
--- a/samples/relative-volume/relvolbybar.py
+++ b/samples/relative-volume/relvolbybar.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/renko/renko.py b/samples/renko/renko.py
index 6a662fffe..49b9c4047 100644
--- a/samples/renko/renko.py
+++ b/samples/renko/renko.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/resample-tickdata/resample-tickdata.py b/samples/resample-tickdata/resample-tickdata.py
index 39f4d2dae..f8471ca36 100644
--- a/samples/resample-tickdata/resample-tickdata.py
+++ b/samples/resample-tickdata/resample-tickdata.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/rollover/rollover.py b/samples/rollover/rollover.py
index d287d5fd3..47593397a 100644
--- a/samples/rollover/rollover.py
+++ b/samples/rollover/rollover.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/sharpe-timereturn/sharpe-timereturn.py b/samples/sharpe-timereturn/sharpe-timereturn.py
index 0922c2302..20ff9d059 100644
--- a/samples/sharpe-timereturn/sharpe-timereturn.py
+++ b/samples/sharpe-timereturn/sharpe-timereturn.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/signals-strategy/signals-strategy.py b/samples/signals-strategy/signals-strategy.py
index a556f3e51..1358823ad 100644
--- a/samples/signals-strategy/signals-strategy.py
+++ b/samples/signals-strategy/signals-strategy.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/sigsmacross/sigsmacross.py b/samples/sigsmacross/sigsmacross.py
index 49026c9d2..b1e956502 100644
--- a/samples/sigsmacross/sigsmacross.py
+++ b/samples/sigsmacross/sigsmacross.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/sigsmacross/sigsmacross2.py b/samples/sigsmacross/sigsmacross2.py
index 15ad68ec3..26c9d6f52 100644
--- a/samples/sigsmacross/sigsmacross2.py
+++ b/samples/sigsmacross/sigsmacross2.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/sizertest/sizertest.py b/samples/sizertest/sizertest.py
index 17ab3610b..9e38e6f50 100644
--- a/samples/sizertest/sizertest.py
+++ b/samples/sizertest/sizertest.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/slippage/slippage.py b/samples/slippage/slippage.py
index 2c9c88a38..76bb10160 100644
--- a/samples/slippage/slippage.py
+++ b/samples/slippage/slippage.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/stop-trading/stop-loss-approaches.py b/samples/stop-trading/stop-loss-approaches.py
index 48d6cd512..497f4da84 100644
--- a/samples/stop-trading/stop-loss-approaches.py
+++ b/samples/stop-trading/stop-loss-approaches.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/stoptrail/trail.py b/samples/stoptrail/trail.py
index e4e7f3fe5..3fa6ca6b7 100644
--- a/samples/stoptrail/trail.py
+++ b/samples/stoptrail/trail.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/strategy-selection/strategy-selection.py b/samples/strategy-selection/strategy-selection.py
index 85d7529a4..4150e8e83 100644
--- a/samples/strategy-selection/strategy-selection.py
+++ b/samples/strategy-selection/strategy-selection.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/talib/tablibsartest.py b/samples/talib/tablibsartest.py
index 701f76ac4..8c1ef60bc 100644
--- a/samples/talib/tablibsartest.py
+++ b/samples/talib/tablibsartest.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/talib/talibtest.py b/samples/talib/talibtest.py
index 1387fdb29..78a1177d0 100644
--- a/samples/talib/talibtest.py
+++ b/samples/talib/talibtest.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/timers/scheduled-min.py b/samples/timers/scheduled-min.py
index 80d2e6633..5a97f79da 100644
--- a/samples/timers/scheduled-min.py
+++ b/samples/timers/scheduled-min.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/timers/scheduled.py b/samples/timers/scheduled.py
index 4030701eb..1a8dbd289 100644
--- a/samples/timers/scheduled.py
+++ b/samples/timers/scheduled.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/tradingcalendar/tcal-intra.py b/samples/tradingcalendar/tcal-intra.py
index 83c35f5f1..0011126d5 100644
--- a/samples/tradingcalendar/tcal-intra.py
+++ b/samples/tradingcalendar/tcal-intra.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/tradingcalendar/tcal.py b/samples/tradingcalendar/tcal.py
index 832b4b499..92755e749 100644
--- a/samples/tradingcalendar/tcal.py
+++ b/samples/tradingcalendar/tcal.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/vctest/vctest.py b/samples/vctest/vctest.py
index 66adf4b26..c6e080d09 100644
--- a/samples/vctest/vctest.py
+++ b/samples/vctest/vctest.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/volumefilling/volumefilling.py b/samples/volumefilling/volumefilling.py
index 04395ab0e..62fdd33ad 100644
--- a/samples/volumefilling/volumefilling.py
+++ b/samples/volumefilling/volumefilling.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/vwr/vwr.py b/samples/vwr/vwr.py
index 0ac9965b8..1642284b8 100644
--- a/samples/vwr/vwr.py
+++ b/samples/vwr/vwr.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/weekdays-filler/weekdaysaligner.py b/samples/weekdays-filler/weekdaysaligner.py
index eaac8be5a..49d00062a 100644
--- a/samples/weekdays-filler/weekdaysaligner.py
+++ b/samples/weekdays-filler/weekdaysaligner.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/weekdays-filler/weekdaysfiller.py b/samples/weekdays-filler/weekdaysfiller.py
index 2dce3da8f..4b0101d25 100644
--- a/samples/weekdays-filler/weekdaysfiller.py
+++ b/samples/weekdays-filler/weekdaysfiller.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/writer-test/writer-test.py b/samples/writer-test/writer-test.py
index c836f9a92..410c446a2 100644
--- a/samples/writer-test/writer-test.py
+++ b/samples/writer-test/writer-test.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/samples/yahoo-test/yahoo-test.py b/samples/yahoo-test/yahoo-test.py
index 12e18f662..255694acb 100644
--- a/samples/yahoo-test/yahoo-test.py
+++ b/samples/yahoo-test/yahoo-test.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/setup.py b/setup.py
index dfd8df0df..2e8e3a0a9 100644
--- a/setup.py
+++ b/setup.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_analyzer-sqn.py b/tests/test_analyzer-sqn.py
index f9efe4cbd..149812427 100644
--- a/tests/test_analyzer-sqn.py
+++ b/tests/test_analyzer-sqn.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_analyzer-timereturn.py b/tests/test_analyzer-timereturn.py
index 6c469b5df..fa19e76f6 100644
--- a/tests/test_analyzer-timereturn.py
+++ b/tests/test_analyzer-timereturn.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_comminfo.py b/tests/test_comminfo.py
index cc66b21b8..2de9088a9 100644
--- a/tests/test_comminfo.py
+++ b/tests/test_comminfo.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_data_multiframe.py b/tests/test_data_multiframe.py
index f977dde72..487ad8766 100644
--- a/tests/test_data_multiframe.py
+++ b/tests/test_data_multiframe.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_data_replay.py b/tests/test_data_replay.py
index e2ed16bb7..b3cc561fb 100644
--- a/tests/test_data_replay.py
+++ b/tests/test_data_replay.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_data_resample.py b/tests/test_data_resample.py
index b8bee55ea..658c5e643 100644
--- a/tests/test_data_resample.py
+++ b/tests/test_data_resample.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_accdecosc.py b/tests/test_ind_accdecosc.py
index 1b0212ae4..27198dbe8 100644
--- a/tests/test_ind_accdecosc.py
+++ b/tests/test_ind_accdecosc.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_aroonoscillator.py b/tests/test_ind_aroonoscillator.py
index d8dd15a44..eb901051b 100644
--- a/tests/test_ind_aroonoscillator.py
+++ b/tests/test_ind_aroonoscillator.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_aroonupdown.py b/tests/test_ind_aroonupdown.py
index 868847ab9..d787975bd 100644
--- a/tests/test_ind_aroonupdown.py
+++ b/tests/test_ind_aroonupdown.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_atr.py b/tests/test_ind_atr.py
index 1246c9d0b..b2bb053eb 100644
--- a/tests/test_ind_atr.py
+++ b/tests/test_ind_atr.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_awesomeoscillator.py b/tests/test_ind_awesomeoscillator.py
index df0616490..ed754069a 100644
--- a/tests/test_ind_awesomeoscillator.py
+++ b/tests/test_ind_awesomeoscillator.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_bbands.py b/tests/test_ind_bbands.py
index e53f85b19..7782a104d 100644
--- a/tests/test_ind_bbands.py
+++ b/tests/test_ind_bbands.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_cci.py b/tests/test_ind_cci.py
index 59f9eb3fe..3e8bc992a 100644
--- a/tests/test_ind_cci.py
+++ b/tests/test_ind_cci.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_dema.py b/tests/test_ind_dema.py
index 42be6b8d6..d9f68b63c 100644
--- a/tests/test_ind_dema.py
+++ b/tests/test_ind_dema.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_demaenvelope.py b/tests/test_ind_demaenvelope.py
index 4982b17c7..f5bf407f7 100644
--- a/tests/test_ind_demaenvelope.py
+++ b/tests/test_ind_demaenvelope.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_demaosc.py b/tests/test_ind_demaosc.py
index 5e5c26321..65a74eeb7 100644
--- a/tests/test_ind_demaosc.py
+++ b/tests/test_ind_demaosc.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_dm.py b/tests/test_ind_dm.py
index 6169a559c..d8d1ea40b 100644
--- a/tests/test_ind_dm.py
+++ b/tests/test_ind_dm.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_dma.py b/tests/test_ind_dma.py
index 868cfceb0..ec1766a85 100644
--- a/tests/test_ind_dma.py
+++ b/tests/test_ind_dma.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_downmove.py b/tests/test_ind_downmove.py
index b915b4aa3..191eb455c 100644
--- a/tests/test_ind_downmove.py
+++ b/tests/test_ind_downmove.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_dpo.py b/tests/test_ind_dpo.py
index 74e98dc5f..a04446d81 100644
--- a/tests/test_ind_dpo.py
+++ b/tests/test_ind_dpo.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_dv2.py b/tests/test_ind_dv2.py
index b5ecd3e75..7904ede15 100644
--- a/tests/test_ind_dv2.py
+++ b/tests/test_ind_dv2.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_ema.py b/tests/test_ind_ema.py
index 207767988..dd0d7445b 100644
--- a/tests/test_ind_ema.py
+++ b/tests/test_ind_ema.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_emaenvelope.py b/tests/test_ind_emaenvelope.py
index 715db3667..b9f5e26ec 100644
--- a/tests/test_ind_emaenvelope.py
+++ b/tests/test_ind_emaenvelope.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_emaosc.py b/tests/test_ind_emaosc.py
index 22a1a347d..1e535fd73 100644
--- a/tests/test_ind_emaosc.py
+++ b/tests/test_ind_emaosc.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_envelope.py b/tests/test_ind_envelope.py
index 87ac9d23b..15a1ce69b 100644
--- a/tests/test_ind_envelope.py
+++ b/tests/test_ind_envelope.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_heikinashi.py b/tests/test_ind_heikinashi.py
index c36d45708..a216c5d4c 100644
--- a/tests/test_ind_heikinashi.py
+++ b/tests/test_ind_heikinashi.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_highest.py b/tests/test_ind_highest.py
index c7755b422..6361e28d8 100644
--- a/tests/test_ind_highest.py
+++ b/tests/test_ind_highest.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_hma.py b/tests/test_ind_hma.py
index 683ea6979..60173e535 100644
--- a/tests/test_ind_hma.py
+++ b/tests/test_ind_hma.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_ichimoku.py b/tests/test_ind_ichimoku.py
index 1e508e6b0..be9d2d296 100644
--- a/tests/test_ind_ichimoku.py
+++ b/tests/test_ind_ichimoku.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_kama.py b/tests/test_ind_kama.py
index 660c280fd..242da13dd 100644
--- a/tests/test_ind_kama.py
+++ b/tests/test_ind_kama.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_kamaenvelope.py b/tests/test_ind_kamaenvelope.py
index 8cca2c27c..970e5a350 100644
--- a/tests/test_ind_kamaenvelope.py
+++ b/tests/test_ind_kamaenvelope.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_kamaosc.py b/tests/test_ind_kamaosc.py
index b12793990..3fc0e8e66 100644
--- a/tests/test_ind_kamaosc.py
+++ b/tests/test_ind_kamaosc.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_kst.py b/tests/test_ind_kst.py
index 07775e499..03b1c1a3c 100644
--- a/tests/test_ind_kst.py
+++ b/tests/test_ind_kst.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_lowest.py b/tests/test_ind_lowest.py
index c8d18528a..84e427c75 100644
--- a/tests/test_ind_lowest.py
+++ b/tests/test_ind_lowest.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_lrsi.py b/tests/test_ind_lrsi.py
index 40381fc27..f0404344e 100644
--- a/tests/test_ind_lrsi.py
+++ b/tests/test_ind_lrsi.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_macdhisto.py b/tests/test_ind_macdhisto.py
index 582681cb7..7d29c12a9 100644
--- a/tests/test_ind_macdhisto.py
+++ b/tests/test_ind_macdhisto.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_minperiod.py b/tests/test_ind_minperiod.py
index b4b7d7f58..cc93392e0 100644
--- a/tests/test_ind_minperiod.py
+++ b/tests/test_ind_minperiod.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_momentum.py b/tests/test_ind_momentum.py
index f8e32a381..aeecf936b 100644
--- a/tests/test_ind_momentum.py
+++ b/tests/test_ind_momentum.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_momentumoscillator.py b/tests/test_ind_momentumoscillator.py
index 7c587ea6d..2690ad4bc 100644
--- a/tests/test_ind_momentumoscillator.py
+++ b/tests/test_ind_momentumoscillator.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_oscillator.py b/tests/test_ind_oscillator.py
index c649e610a..e492a26e8 100644
--- a/tests/test_ind_oscillator.py
+++ b/tests/test_ind_oscillator.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_pctchange.py b/tests/test_ind_pctchange.py
index 9780cb1c9..7101b153e 100644
--- a/tests/test_ind_pctchange.py
+++ b/tests/test_ind_pctchange.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_pctrank.py b/tests/test_ind_pctrank.py
index 2f8e66154..29db0c5a5 100644
--- a/tests/test_ind_pctrank.py
+++ b/tests/test_ind_pctrank.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_pgo.py b/tests/test_ind_pgo.py
index 476a8bb80..6d7556706 100644
--- a/tests/test_ind_pgo.py
+++ b/tests/test_ind_pgo.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_ppo.py b/tests/test_ind_ppo.py
index d32da43ff..32347e883 100644
--- a/tests/test_ind_ppo.py
+++ b/tests/test_ind_ppo.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_pposhort.py b/tests/test_ind_pposhort.py
index 78f323804..e078f974d 100644
--- a/tests/test_ind_pposhort.py
+++ b/tests/test_ind_pposhort.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_priceosc.py b/tests/test_ind_priceosc.py
index 004218b26..0fbc41242 100644
--- a/tests/test_ind_priceosc.py
+++ b/tests/test_ind_priceosc.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_rmi.py b/tests/test_ind_rmi.py
index 22b57d169..4a8e05c06 100644
--- a/tests/test_ind_rmi.py
+++ b/tests/test_ind_rmi.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_roc.py b/tests/test_ind_roc.py
index 384f76e74..78d98d920 100644
--- a/tests/test_ind_roc.py
+++ b/tests/test_ind_roc.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_rsi.py b/tests/test_ind_rsi.py
index ab115ba85..4a7dc49cc 100644
--- a/tests/test_ind_rsi.py
+++ b/tests/test_ind_rsi.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_rsi_safe.py b/tests/test_ind_rsi_safe.py
index 85fd33c06..905d2d609 100644
--- a/tests/test_ind_rsi_safe.py
+++ b/tests/test_ind_rsi_safe.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_sma.py b/tests/test_ind_sma.py
index 41d11ae4c..e12b3ded3 100644
--- a/tests/test_ind_sma.py
+++ b/tests/test_ind_sma.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_smaenvelope.py b/tests/test_ind_smaenvelope.py
index 8cca2c27c..970e5a350 100644
--- a/tests/test_ind_smaenvelope.py
+++ b/tests/test_ind_smaenvelope.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_smaosc.py b/tests/test_ind_smaosc.py
index b5799c33f..188afda6d 100644
--- a/tests/test_ind_smaosc.py
+++ b/tests/test_ind_smaosc.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_smma.py b/tests/test_ind_smma.py
index f827ab2ad..84d4c59c0 100644
--- a/tests/test_ind_smma.py
+++ b/tests/test_ind_smma.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_smmaenvelope.py b/tests/test_ind_smmaenvelope.py
index 190f94b9b..0329b455f 100644
--- a/tests/test_ind_smmaenvelope.py
+++ b/tests/test_ind_smmaenvelope.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_smmaosc.py b/tests/test_ind_smmaosc.py
index 61f14701f..56f7be250 100644
--- a/tests/test_ind_smmaosc.py
+++ b/tests/test_ind_smmaosc.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_stochastic.py b/tests/test_ind_stochastic.py
index d4f28e61f..c6afe43c5 100644
--- a/tests/test_ind_stochastic.py
+++ b/tests/test_ind_stochastic.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_stochasticfull.py b/tests/test_ind_stochasticfull.py
index 06f8fe8d8..1fbe9a0ac 100644
--- a/tests/test_ind_stochasticfull.py
+++ b/tests/test_ind_stochasticfull.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_sumn.py b/tests/test_ind_sumn.py
index 3d218fd63..be483a642 100644
--- a/tests/test_ind_sumn.py
+++ b/tests/test_ind_sumn.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_tema.py b/tests/test_ind_tema.py
index d2a83d31f..aa27ea67f 100644
--- a/tests/test_ind_tema.py
+++ b/tests/test_ind_tema.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_temaenvelope.py b/tests/test_ind_temaenvelope.py
index 4334f290e..1a14e20a5 100644
--- a/tests/test_ind_temaenvelope.py
+++ b/tests/test_ind_temaenvelope.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_temaosc.py b/tests/test_ind_temaosc.py
index f66179ce2..2195cd2df 100644
--- a/tests/test_ind_temaosc.py
+++ b/tests/test_ind_temaosc.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_trix.py b/tests/test_ind_trix.py
index 6058472bf..30cb23eb0 100644
--- a/tests/test_ind_trix.py
+++ b/tests/test_ind_trix.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_tsi.py b/tests/test_ind_tsi.py
index 9cb5d90a3..613135b5a 100644
--- a/tests/test_ind_tsi.py
+++ b/tests/test_ind_tsi.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_ultosc.py b/tests/test_ind_ultosc.py
index 5fd77fe61..87d795623 100644
--- a/tests/test_ind_ultosc.py
+++ b/tests/test_ind_ultosc.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_upmove.py b/tests/test_ind_upmove.py
index a1acc63b1..3baa96736 100644
--- a/tests/test_ind_upmove.py
+++ b/tests/test_ind_upmove.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_vortex.py b/tests/test_ind_vortex.py
index 60450ae38..620d10d92 100644
--- a/tests/test_ind_vortex.py
+++ b/tests/test_ind_vortex.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_williamsad.py b/tests/test_ind_williamsad.py
index c0776260f..69902e775 100644
--- a/tests/test_ind_williamsad.py
+++ b/tests/test_ind_williamsad.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_williamsr.py b/tests/test_ind_williamsr.py
index 919a66a6b..c3a94e2db 100644
--- a/tests/test_ind_williamsr.py
+++ b/tests/test_ind_williamsr.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_wma.py b/tests/test_ind_wma.py
index 28adb18af..3bb52f0e3 100644
--- a/tests/test_ind_wma.py
+++ b/tests/test_ind_wma.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_wmaenvelope.py b/tests/test_ind_wmaenvelope.py
index 0480a4cbc..5ff5e0c70 100644
--- a/tests/test_ind_wmaenvelope.py
+++ b/tests/test_ind_wmaenvelope.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_wmaosc.py b/tests/test_ind_wmaosc.py
index 0d88a00aa..f05a1ec8c 100644
--- a/tests/test_ind_wmaosc.py
+++ b/tests/test_ind_wmaosc.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_zlema.py b/tests/test_ind_zlema.py
index b86e44c66..09042441e 100644
--- a/tests/test_ind_zlema.py
+++ b/tests/test_ind_zlema.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_ind_zlind.py b/tests/test_ind_zlind.py
index 6862d6860..dfc39b212 100644
--- a/tests/test_ind_zlind.py
+++ b/tests/test_ind_zlind.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_metaclass.py b/tests/test_metaclass.py
index 3637e839d..80d09d503 100644
--- a/tests/test_metaclass.py
+++ b/tests/test_metaclass.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_order.py b/tests/test_order.py
index be895184b..b536627c8 100644
--- a/tests/test_order.py
+++ b/tests/test_order.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_position.py b/tests/test_position.py
index ad320d074..0939986a6 100644
--- a/tests/test_position.py
+++ b/tests/test_position.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_strategy_optimized.py b/tests/test_strategy_optimized.py
index 45f6acaca..3859d6e31 100644
--- a/tests/test_strategy_optimized.py
+++ b/tests/test_strategy_optimized.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_strategy_unoptimized.py b/tests/test_strategy_unoptimized.py
index 053a07fc1..2fcbb3ef8 100644
--- a/tests/test_strategy_unoptimized.py
+++ b/tests/test_strategy_unoptimized.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_study_fractal.py b/tests/test_study_fractal.py
index d2d7aec02..9b89408d1 100644
--- a/tests/test_study_fractal.py
+++ b/tests/test_study_fractal.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_trade.py b/tests/test_trade.py
index 8b40fd35f..235c0dacd 100644
--- a/tests/test_trade.py
+++ b/tests/test_trade.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/test_writer.py b/tests/test_writer.py
index f90cdc434..e4ad6f9a8 100644
--- a/tests/test_writer.py
+++ b/tests/test_writer.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tests/testcommon.py b/tests/testcommon.py
index e052db28f..c35ab8af5 100644
--- a/tests/testcommon.py
+++ b/tests/testcommon.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tools/bt-run.py b/tools/bt-run.py
index a4bb33223..87d9eca5c 100755
--- a/tools/bt-run.py
+++ b/tools/bt-run.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tools/rewrite-data.py b/tools/rewrite-data.py
index f0ab10b7a..09bbce0d2 100755
--- a/tools/rewrite-data.py
+++ b/tools/rewrite-data.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/tools/yahoodownload.py b/tools/yahoodownload.py
index e5f8b763c..0c92fe20b 100755
--- a/tools/yahoodownload.py
+++ b/tools/yahoodownload.py
@@ -2,7 +2,7 @@
# -*- coding: utf-8; py-indent-offset:4 -*-
###############################################################################
#
-# Copyright (C) 2015-2023 Daniel Rodriguez
+# Copyright (C) 2015-2024 Daniel Rodriguez
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
From 260d2c4db6633312405716cac4cbd36aaf00e786 Mon Sep 17 00:00:00 2001
From: baobach <95854748+baobach@users.noreply.github.com>
Date: Tue, 23 Apr 2024 02:06:56 +0700
Subject: [PATCH 02/21] Add Sortino ratio to backtrader analyzers
---
backtrader/analyzers/__init__.py | 2 +
backtrader/analyzers/sortino.py | 191 +++++++++++++++++++++++++++++++
backtrader/plot/scheme.py | 2 +-
3 files changed, 194 insertions(+), 1 deletion(-)
create mode 100644 backtrader/analyzers/sortino.py
diff --git a/backtrader/analyzers/__init__.py b/backtrader/analyzers/__init__.py
index e0a57f53f..531e4fc87 100644
--- a/backtrader/analyzers/__init__.py
+++ b/backtrader/analyzers/__init__.py
@@ -3,6 +3,7 @@
###############################################################################
#
# Copyright (C) 2015-2024 Daniel Rodriguez
+# Added by @baobach
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -28,6 +29,7 @@
from .drawdown import *
from .timereturn import *
from .sharpe import *
+from .sortino import *
from .tradeanalyzer import *
from .sqn import *
from .leverage import *
diff --git a/backtrader/analyzers/sortino.py b/backtrader/analyzers/sortino.py
new file mode 100644
index 000000000..5604d4798
--- /dev/null
+++ b/backtrader/analyzers/sortino.py
@@ -0,0 +1,191 @@
+#!/usr/bin/env python
+# -*- coding: utf-8; py-indent-offset:4 -*-
+###############################################################################
+#
+# Added by: @baobach (2024)
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+###############################################################################
+from __future__ import (absolute_import, division, print_function,
+ unicode_literals)
+
+import math
+
+from backtrader.utils.py3 import itervalues
+
+from backtrader import Analyzer, TimeFrame
+from backtrader.mathsupport import average, standarddev
+from backtrader.analyzers import TimeReturn, AnnualReturn
+
+class SortinoRatio(Analyzer):
+ '''This analyzer calculates the Sortino Ratio of a strategy using a risk free
+ asset which is simply an interest rate
+
+ See also:
+
+ - https://en.wikipedia.org/wiki/Sortino_ratio
+
+ Params:
+
+ - ``timeframe``: (default: ``TimeFrame.Years``)
+
+ - ``compression`` (default: ``1``)
+
+ Only used for sub-day timeframes to for example work on an hourly
+ timeframe by specifying "TimeFrame.Minutes" and 60 as compression
+
+ - ``riskfreerate`` (default: 0.01 -> 1%)
+
+ Expressed in annual terms (see ``convertrate`` below)
+
+ - ``convertrate`` (default: ``True``)
+
+ Convert the ``riskfreerate`` from annual to monthly, weekly or daily
+ rate. Sub-day conversions are not supported
+
+ - ``factor`` (default: ``None``)
+
+ If ``None``, the conversion factor for the riskfree rate from *annual*
+ to the chosen timeframe will be chosen from a predefined table
+
+ Days: 252, Weeks: 52, Months: 12, Years: 1
+
+ Else the specified value will be used
+
+ - ``annualize`` (default: ``False``)
+
+ If ``convertrate`` is ``True``, the *SortinoRatio* will be delivered in
+ the ``timeframe`` of choice.
+
+ In most occasions the SortinoRatio is delivered in annualized form.
+ Convert the ``riskfreerate`` from annual to monthly, weekly or daily
+ rate. Sub-day conversions are not supported
+
+ - ``stddev_sample`` (default: ``False``)
+
+ If this is set to ``True`` the *standard deviation* will be calculated
+ decreasing the denominator in the mean by ``1``. This is used when
+ calculating the *standard deviation* if it's considered that not all
+ samples are used for the calculation. This is known as the *Bessels'
+ correction*
+
+ - ``daysfactor`` (default: ``None``)
+
+ Old naming for ``factor``. If set to anything else than ``None`` and
+ the ``timeframe`` is ``TimeFrame.Days`` it will be assumed this is old
+ code and the value will be used
+
+ - ``legacyannual`` (default: ``False``)
+
+ Use the ``AnnualReturn`` return analyzer, which as the name implies
+ only works on years
+
+ - ``fund`` (default: ``None``)
+
+ If ``None`` the actual mode of the broker (fundmode - True/False) will
+ be autodetected to decide if the returns are based on the total net
+ asset value or on the fund value. See ``set_fundmode`` in the broker
+ documentation
+
+ Set it to ``True`` or ``False`` for a specific behavior
+
+ Methods:
+
+ - get_analysis
+
+ Returns a dictionary with key "sortinoratio" holding the ratio
+
+ '''
+
+ params = (
+ ('timeframe', TimeFrame.Years),
+ ('compression', 1),
+ ('riskfreerate', 0.01),
+ ('factor', None),
+ ('convertrate', True),
+ ('annualize', False),
+ ('stddev_sample', False),
+ ('daysfactor', None),
+ ('legacyannual', False),
+ ('fund', None),
+ )
+
+ RATEFACTORS = {
+ TimeFrame.Days: 252,
+ TimeFrame.Weeks: 52,
+ TimeFrame.Months: 12,
+ TimeFrame.Years: 1,
+ }
+
+ def __init__(self):
+ self.timereturn = TimeReturn(
+ timeframe=self.p.timeframe,
+ compression=self.p.compression,
+ fund=self.p.fund)
+
+ def stop(self):
+ super(SortinoRatio, self).stop()
+
+ # Get the returns from the subanalyzer
+ returns = list(itervalues(self.timereturn.get_analysis()))
+
+ rate = self.p.riskfreerate
+
+ factor = None
+
+ if self.p.factor is not None:
+ factor = self.p.factor # user specified factor
+ elif self.p.timeframe in self.RATEFACTORS:
+ # Get the conversion factor from the default table
+ factor = self.RATEFACTORS[self.p.timeframe]
+
+ if factor is not None:
+ # A factor was found
+
+ if self.p.convertrate:
+ # Standard: downgrade annual returns to timeframe factor
+ rate = pow(1.0 + rate, 1.0 / factor) - 1.0
+ else:
+ # Else upgrade returns to yearly returns
+ returns = [pow(1.0 + x, factor) - 1.0 for x in returns]
+
+ lrets = len(returns) - self.p.stddev_sample
+ # Check if the ratio can be calculated
+ if lrets:
+ # Get the excess returns
+ ret_free = [r - rate for r in returns]
+ ret_free_avg = average(ret_free)
+
+ # Calculate downside deviation
+ downside_returns = [x for x in ret_free if x < 0]
+ retdev = standarddev(downside_returns, avgx=ret_free_avg,
+ bessel=self.p.stddev_sample)
+
+ try:
+ ratio = ret_free_avg / retdev
+
+ if factor is not None and \
+ self.p.convertrate and self.p.annualize:
+
+ ratio = math.sqrt(factor) * ratio
+ except (ValueError, TypeError, ZeroDivisionError):
+ ratio = None
+ else:
+ # no returns or stddev_sample was active and 1 return
+ ratio = None
+
+ self.ratio = ratio
+
+ self.rets['sortinoratio'] = self.ratio
\ No newline at end of file
diff --git a/backtrader/plot/scheme.py b/backtrader/plot/scheme.py
index ab250dcb5..e1e74600f 100644
--- a/backtrader/plot/scheme.py
+++ b/backtrader/plot/scheme.py
@@ -130,7 +130,7 @@ def __init__(self):
# Wether to plot volume or not. Note: if the data in question has no
# volume values, volume plotting will be skipped even if this is True
- self.volume = True
+ self.volume = False
# Wether to overlay the volume on the data or use a separate subchart
self.voloverlay = True
From 1f0b72fd4068152a4380be2dd871a7c62bac0e0e Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Tue, 23 Jul 2024 09:09:47 -0700
Subject: [PATCH 03/21] Update vwr - added 0 <= sdev_p <= sdev_max check
In order for the formula to make sense, we must enforce that sdev_p is between 0 and sdev_max. Otherwise, we can have negative rnorm100 giving positive VWR when their sdev is higher than sdev_max.
The author of the VWR had that condition defined in the summary:
https://www.crystalbull.com/sharpe-ratio-better-with-log-returns/
---
backtrader/analyzers/vwr.py | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 2bd758aed..8744b11ea 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -156,7 +156,11 @@ def stop(self):
sdev_p = standarddev(dts, bessel=True)
- vwr = rnorm100 * (1.0 - pow(sdev_p / self.p.sdev_max, self.p.tau))
+ if 0 <= sdev_p <= self.p.sdev_max:
+ vwr = rnorm100 * (1.0 - pow(sdev_p / self.p.sdev_max, self.p.tau))
+ else:
+ vwr = 0
+
self.rets['vwr'] = vwr
def notify_fund(self, cash, value, fundvalue, shares):
From 4dbae167aad2db7d8ed88110a295f6d08b985c46 Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Mon, 5 Aug 2024 07:41:54 -0700
Subject: [PATCH 04/21] Update sharpe.py to add more outputs for debugging.
---
backtrader/analyzers/sharpe.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/backtrader/analyzers/sharpe.py b/backtrader/analyzers/sharpe.py
index 6988d21dd..bc51f3803 100644
--- a/backtrader/analyzers/sharpe.py
+++ b/backtrader/analyzers/sharpe.py
@@ -204,6 +204,8 @@ def stop(self):
self.ratio = ratio
self.rets['sharperatio'] = self.ratio
+ self.rets['ret_free_avg'] = ret_free_avg
+ self.rets['retdev'] = retdev
class SharpeRatio_A(SharpeRatio):
From 9b68507aa230ec556dc44fb4bf04d32e4a6cfbb7 Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Mon, 5 Aug 2024 07:42:27 -0700
Subject: [PATCH 05/21] Update sortino.py - add more output for debugging.
---
backtrader/analyzers/sortino.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/backtrader/analyzers/sortino.py b/backtrader/analyzers/sortino.py
index 5604d4798..ccf9402fe 100644
--- a/backtrader/analyzers/sortino.py
+++ b/backtrader/analyzers/sortino.py
@@ -188,4 +188,6 @@ def stop(self):
self.ratio = ratio
- self.rets['sortinoratio'] = self.ratio
\ No newline at end of file
+ self.rets['sortinoratio'] = self.ratio
+ self.rets['ret_free_avg'] = ret_free_avg
+ self.rets['retdev'] = retdev
From 3dc80a45e51b6e1bc6549c285f32f547fc5991c4 Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Mon, 5 Aug 2024 07:47:37 -0700
Subject: [PATCH 06/21] Update vwr.py - added output for debugging - set
default sdev_max to 10.
---
backtrader/analyzers/vwr.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index f99d66412..addbcced4 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -100,7 +100,7 @@ class VWR(TimeFrameAnalyzerBase):
params = (
('tann', None),
('tau', 0.20),
- ('sdev_max', 2.0),
+ ('sdev_max', 10.0),
('fund', None),
)
@@ -162,6 +162,7 @@ def stop(self):
vwr = 0
self.rets['vwr'] = vwr
+ self.rets['sdev_p'] = sdev_p
def notify_fund(self, cash, value, fundvalue, shares):
if not self._fundmode:
From ae1eed27846a74013917ddbc3513239d429c4a22 Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Mon, 5 Aug 2024 08:20:29 -0700
Subject: [PATCH 07/21] Update vwr.py - modified vwr to add vwrs (use
sortino-like deviation)
---
backtrader/analyzers/vwr.py | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index addbcced4..3fff2bc62 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -148,21 +148,33 @@ def stop(self):
# make n 1 based in enumerate (number of periods and not index)
# skip initial placeholders for synchronization
dts = []
+ dts_downside = []
+
for n, pipn in enumerate(zip(self._pis, self._pns), 1):
pi, pn = pipn
dt = pn / (pi * math.exp(ravg * n)) - 1.0
+ if dt < 0
+ dts_downside.append(dt)
dts.append(dt)
sdev_p = standarddev(dts, bessel=True)
+ sdev_p_downside = standarddev(dts_downside, bessel=True)
if 0 <= sdev_p <= self.p.sdev_max:
vwr = rnorm100 * (1.0 - pow(sdev_p / self.p.sdev_max, self.p.tau))
else:
vwr = 0
-
+
+ if 0 <= sdev_p_downside <= self.p.sdev_max:
+ vwrs = rnorm100 * (1.0 - pow(sdev_p_downside / self.p.sdev_max, self.p.tau))
+ else:
+ vwrs = 0
+
self.rets['vwr'] = vwr
+ self.rets['vwrs'] = vwrs
self.rets['sdev_p'] = sdev_p
+ self.rets['sdev_p_downside'] = sdev_p_downside
def notify_fund(self, cash, value, fundvalue, shares):
if not self._fundmode:
From 51bd37f84ec076604c7f36b4c7ade497a919336d Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Mon, 5 Aug 2024 09:04:25 -0700
Subject: [PATCH 08/21] Update vwr.py - fix typo
---
backtrader/analyzers/vwr.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 3fff2bc62..2c4e59dbf 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -154,7 +154,7 @@ def stop(self):
pi, pn = pipn
dt = pn / (pi * math.exp(ravg * n)) - 1.0
- if dt < 0
+ if dt < 0:
dts_downside.append(dt)
dts.append(dt)
From 4e3ba74deeb472af3d81e821557fa4865168e247 Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Mon, 5 Aug 2024 10:09:25 -0700
Subject: [PATCH 09/21] Update vwr.py - better handling if no downside
---
backtrader/analyzers/vwr.py | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 2c4e59dbf..74f5c4cd7 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -148,33 +148,38 @@ def stop(self):
# make n 1 based in enumerate (number of periods and not index)
# skip initial placeholders for synchronization
dts = []
- dts_downside = []
-
+ downsides = []
+
+ # Collect deviations and downside deviations
for n, pipn in enumerate(zip(self._pis, self._pns), 1):
pi, pn = pipn
-
dt = pn / (pi * math.exp(ravg * n)) - 1.0
- if dt < 0:
- dts_downside.append(dt)
dts.append(dt)
+ if dt < 0: # Collect only downside deviations
+ downsides.append(dt)
+ # Calculate standard deviation of all deviations
sdev_p = standarddev(dts, bessel=True)
- sdev_p_downside = standarddev(dts_downside, bessel=True)
+ # Calculate downside deviation (Sortino's deviation)
+ sdev_sortino = standarddev(downsides, bessel=True) if downsides else 0
+
+ # Calculate normal VWR
if 0 <= sdev_p <= self.p.sdev_max:
vwr = rnorm100 * (1.0 - pow(sdev_p / self.p.sdev_max, self.p.tau))
else:
vwr = 0
- if 0 <= sdev_p_downside <= self.p.sdev_max:
- vwrs = rnorm100 * (1.0 - pow(sdev_p_downside / self.p.sdev_max, self.p.tau))
+ # Calculate VWR using Sortino's deviation
+ if 0 <= sdev_sortino <= self.p.sdev_max:
+ vwrs = rnorm100 * (1.0 - pow(sdev_sortino / self.p.sdev_max, self.p.tau))
else:
- vwrs = 0
+ vwrs = 0
self.rets['vwr'] = vwr
self.rets['vwrs'] = vwrs
self.rets['sdev_p'] = sdev_p
- self.rets['sdev_p_downside'] = sdev_p_downside
+ self.rets['sdev_sortino'] = sdev_sortino
def notify_fund(self, cash, value, fundvalue, shares):
if not self._fundmode:
From 5feab8e92e26f5bcffb3ef7c9c90ec00b99461a9 Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Mon, 5 Aug 2024 10:18:33 -0700
Subject: [PATCH 10/21] Update vwr.py - len(downsides) must be > 1
---
backtrader/analyzers/vwr.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 74f5c4cd7..709ca0c17 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -162,7 +162,10 @@ def stop(self):
sdev_p = standarddev(dts, bessel=True)
# Calculate downside deviation (Sortino's deviation)
- sdev_sortino = standarddev(downsides, bessel=True) if downsides else 0
+ if len(downsides) > 1:
+ sdev_sortino = standarddev(downsides, bessel=True)
+ else:
+ sdev_sortino = 0
# Calculate normal VWR
if 0 <= sdev_p <= self.p.sdev_max:
From bbbd004c33fbab1f199dc44ef839692638f0efb7 Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Mon, 19 Aug 2024 10:27:20 -0700
Subject: [PATCH 11/21] Update vwr.py - need 2 downside samples for vwrs
---
backtrader/analyzers/vwr.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 709ca0c17..65e7e441f 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -162,7 +162,7 @@ def stop(self):
sdev_p = standarddev(dts, bessel=True)
# Calculate downside deviation (Sortino's deviation)
- if len(downsides) > 1:
+ if len(downsides) > 2:
sdev_sortino = standarddev(downsides, bessel=True)
else:
sdev_sortino = 0
From 553a5922a044426c06167918c79d381e005f775b Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Mon, 19 Aug 2024 10:46:42 -0700
Subject: [PATCH 12/21] Update sortino.py - standarddev within the try: except:
---
backtrader/analyzers/sortino.py | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/backtrader/analyzers/sortino.py b/backtrader/analyzers/sortino.py
index ccf9402fe..5bfeb31e0 100644
--- a/backtrader/analyzers/sortino.py
+++ b/backtrader/analyzers/sortino.py
@@ -167,13 +167,13 @@ def stop(self):
# Get the excess returns
ret_free = [r - rate for r in returns]
ret_free_avg = average(ret_free)
+ try:
- # Calculate downside deviation
- downside_returns = [x for x in ret_free if x < 0]
- retdev = standarddev(downside_returns, avgx=ret_free_avg,
+ # Calculate downside deviation
+ downside_returns = [x for x in ret_free if x < 0]
+ retdev = standarddev(downside_returns, avgx=ret_free_avg,
bessel=self.p.stddev_sample)
-
- try:
+
ratio = ret_free_avg / retdev
if factor is not None and \
From 1ca006aef783afc88b37ab0b48fa2eda643302d4 Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Mon, 19 Aug 2024 10:47:33 -0700
Subject: [PATCH 13/21] Update sortino.py : retdev = None by default
---
backtrader/analyzers/sortino.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/backtrader/analyzers/sortino.py b/backtrader/analyzers/sortino.py
index 5bfeb31e0..7a972ab6c 100644
--- a/backtrader/analyzers/sortino.py
+++ b/backtrader/analyzers/sortino.py
@@ -185,6 +185,7 @@ def stop(self):
else:
# no returns or stddev_sample was active and 1 return
ratio = None
+ retdev = None
self.ratio = ratio
From 35a6740b8cd1b4e8d72ca3b611ea7bc76d7fae28 Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Mon, 26 Aug 2024 10:51:57 -0700
Subject: [PATCH 14/21] Update sharpe.py
---
backtrader/analyzers/sharpe.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/backtrader/analyzers/sharpe.py b/backtrader/analyzers/sharpe.py
index bc51f3803..7cbb89958 100644
--- a/backtrader/analyzers/sharpe.py
+++ b/backtrader/analyzers/sharpe.py
@@ -200,6 +200,7 @@ def stop(self):
else:
# no returns or stddev_sample was active and 1 return
ratio = None
+ retdev = None
self.ratio = ratio
From 413049800984b0bc33062667c654f0442a89a5b6 Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Mon, 26 Aug 2024 11:05:02 -0700
Subject: [PATCH 15/21] Update sortino.py
---
backtrader/analyzers/sortino.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/backtrader/analyzers/sortino.py b/backtrader/analyzers/sortino.py
index 7a972ab6c..fd162defc 100644
--- a/backtrader/analyzers/sortino.py
+++ b/backtrader/analyzers/sortino.py
@@ -137,7 +137,9 @@ def __init__(self):
def stop(self):
super(SortinoRatio, self).stop()
-
+ ret_free_avg = None
+ retdev = None
+
# Get the returns from the subanalyzer
returns = list(itervalues(self.timereturn.get_analysis()))
@@ -185,7 +187,6 @@ def stop(self):
else:
# no returns or stddev_sample was active and 1 return
ratio = None
- retdev = None
self.ratio = ratio
From cb6eb1f0b4316d863a87bce34a0151980c64efc8 Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Mon, 26 Aug 2024 11:05:41 -0700
Subject: [PATCH 16/21] Update sharpe.py
---
backtrader/analyzers/sharpe.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/backtrader/analyzers/sharpe.py b/backtrader/analyzers/sharpe.py
index 7cbb89958..08aa6a9a0 100644
--- a/backtrader/analyzers/sharpe.py
+++ b/backtrader/analyzers/sharpe.py
@@ -142,6 +142,9 @@ def __init__(self):
def stop(self):
super(SharpeRatio, self).stop()
+ ret_free_avg = None
+ retdev = None
+
if self.p.legacyannual:
rate = self.p.riskfreerate
retavg = average([r - rate for r in self.anret.rets])
@@ -200,7 +203,6 @@ def stop(self):
else:
# no returns or stddev_sample was active and 1 return
ratio = None
- retdev = None
self.ratio = ratio
From b806ca882c29ce08446d2349ec8cf01be2fdbf7f Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Wed, 16 Oct 2024 11:39:00 -0700
Subject: [PATCH 17/21] Update vwr.py
---
backtrader/analyzers/vwr.py | 94 ++++++++++++++++++++++---------------
1 file changed, 57 insertions(+), 37 deletions(-)
diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 65e7e441f..6feec28bc 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -18,6 +18,7 @@
# along with this program. If not, see .
#
###############################################################################
+
from __future__ import (absolute_import, division, print_function,
unicode_literals)
@@ -50,15 +51,13 @@ class VWR(TimeFrameAnalyzerBase):
time constraints
- ``compression`` (default: ``None``)
-
- Only used for sub-day timeframes to for example work on an hourly
- timeframe by specifying "TimeFrame.Minutes" and 60 as compression
+ Only used for sub-day timeframes to, for example, work on an hourly
+ timeframe by specifying ``TimeFrame.Minutes`` and 60 as compression
If ``None`` then the compression of the 1st data of the system will be
used
- ``tann`` (default: ``None``)
-
Number of periods to use for the annualization (normalization) of the
average returns. If ``None``, then standard ``t`` values will be used,
namely:
@@ -69,39 +68,47 @@ class VWR(TimeFrameAnalyzerBase):
- ``years: 1``
- ``tau`` (default: ``2.0``)
+ Factor for the calculation (see the literature)
- factor for the calculation (see the literature)
-
- - ``sdev_max`` (default: ``0.20``)
-
- max standard deviation (see the literature)
+ - ``sdev_max`` (default: ``0.3``)
+ Max standard deviation (see the literature)
- ``fund`` (default: ``None``)
-
- If ``None`` the actual mode of the broker (fundmode - True/False) will
+ If ``None``, the actual mode of the broker (fundmode - True/False) will
be autodetected to decide if the returns are based on the total net
asset value or on the fund value. See ``set_fundmode`` in the broker
documentation
Set it to ``True`` or ``False`` for a specific behavior
- Methods:
+ - ``riskfreerate`` (default: ``0.01``)
+ The risk-free rate used in the calculation of excess returns
- - get_analysis
+ - ``stddev_sample`` (default: ``False``)
+ If ``True``, use the sample standard deviation (Bessel's correction).
+ If ``False``, use the population standard deviation.
+ Methods:
+
+ - ``get_analysis``
Returns a dictionary with returns as values and the datetime points for
each return as keys
The returned dict contains the following keys:
- - ``vwr``: Variability-Weighted Return
+ - ``vwr``: Variability-Weighted Return using total standard deviation
+ - ``vwrs``: Variability-Weighted Return using downside deviation
+ - ``sdev_p``: Total standard deviation of deviations
+ - ``sdev_sortino``: Downside standard deviation (Sortino's deviation)
'''
params = (
('tann', None),
- ('tau', 0.20),
- ('sdev_max', 10.0),
+ ('tau', 2.0),
+ ('sdev_max', 0.3),
('fund', None),
+ ('riskfreerate', 0.01), # Risk-free rate parameter
+ ('stddev_sample', False), # Use sample standard deviation if True
)
_TANN = {
@@ -112,10 +119,12 @@ class VWR(TimeFrameAnalyzerBase):
}
def __init__(self):
- # Children log return analyzer
- self._returns = Returns(timeframe=self.p.timeframe,
- compression=self.p.compression,
- tann=self.p.tann)
+ # Child log return analyzer
+ self._returns = Returns(
+ timeframe=self.p.timeframe,
+ compression=self.p.compression,
+ tann=self.p.tann
+ )
def start(self):
super(VWR, self).start()
@@ -126,11 +135,11 @@ def start(self):
self._fundmode = self.p.fund
if not self._fundmode:
- self._pis = [self.strategy.broker.getvalue()] # keep initial value
+ self._pis = [self.strategy.broker.getvalue()] # Keep initial value
else:
- self._pis = [self.strategy.broker.fundvalue] # keep initial value
+ self._pis = [self.strategy.broker.fundvalue] # Keep initial value
- self._pns = [None] # keep final prices (value)
+ self._pns = [None] # Keep final prices (value)
def stop(self):
super(VWR, self).stop()
@@ -140,45 +149,56 @@ def stop(self):
self._pis.pop()
self._pns.pop()
- # Get results from children
+ # Get results from child analyzer
rs = self._returns.get_analysis()
ravg = rs['ravg']
- rnorm100 = rs['rnorm100']
- # make n 1 based in enumerate (number of periods and not index)
- # skip initial placeholders for synchronization
+ # Adjust average return for risk-free rate
+ ravg_excess = ravg - self.p.riskfreerate
+
+ # Get annualization factor
+ tann = self.p.tann
+ if tann is None:
+ tframe = self._returns.get_timeframe()
+ tann = self._TANN.get(tframe, 252.0) # Default to 252
+
+ # Recalculate normalized return
+ rnorm_excess = ravg_excess * tann * 100
+
+ # Make n 1-based in enumerate (number of periods and not index)
+ # Skip initial placeholders for synchronization
dts = []
downsides = []
# Collect deviations and downside deviations
for n, pipn in enumerate(zip(self._pis, self._pns), 1):
pi, pn = pipn
- dt = pn / (pi * math.exp(ravg * n)) - 1.0
+ dt = pn / (pi * math.exp(ravg_excess * n)) - 1.0
dts.append(dt)
if dt < 0: # Collect only downside deviations
downsides.append(dt)
# Calculate standard deviation of all deviations
- sdev_p = standarddev(dts, bessel=True)
+ sdev_p = standarddev(dts, bessel=self.p.stddev_sample)
# Calculate downside deviation (Sortino's deviation)
if len(downsides) > 2:
- sdev_sortino = standarddev(downsides, bessel=True)
+ sdev_sortino = standarddev(downsides, bessel=self.p.stddev_sample)
else:
sdev_sortino = 0
# Calculate normal VWR
if 0 <= sdev_p <= self.p.sdev_max:
- vwr = rnorm100 * (1.0 - pow(sdev_p / self.p.sdev_max, self.p.tau))
+ vwr = rnorm_excess * (1.0 - pow(sdev_p / self.p.sdev_max, self.p.tau))
else:
vwr = 0
# Calculate VWR using Sortino's deviation
if 0 <= sdev_sortino <= self.p.sdev_max:
- vwrs = rnorm100 * (1.0 - pow(sdev_sortino / self.p.sdev_max, self.p.tau))
+ vwrs = rnorm_excess * (1.0 - pow(sdev_sortino / self.p.sdev_max, self.p.tau))
else:
vwrs = 0
-
+
self.rets['vwr'] = vwr
self.rets['vwrs'] = vwrs
self.rets['sdev_p'] = sdev_p
@@ -186,13 +206,13 @@ def stop(self):
def notify_fund(self, cash, value, fundvalue, shares):
if not self._fundmode:
- self._pns[-1] = value # annotate last seen pn for current period
+ self._pns[-1] = value # Annotate last seen pn for current period
else:
- self._pns[-1] = fundvalue # annotate last pn for current period
+ self._pns[-1] = fundvalue # Annotate last pn for current period
def _on_dt_over(self):
- self._pis.append(self._pns[-1]) # last pn is pi in next period
- self._pns.append(None) # placeholder for [-1] operation
+ self._pis.append(self._pns[-1]) # Last pn is pi in next period
+ self._pns.append(None) # Placeholder for [-1] operation
VariabilityWeightedReturn = VWR
From 70c6b11081e0aed9825d547bac4bd1439b1981e9 Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Wed, 16 Oct 2024 13:48:56 -0700
Subject: [PATCH 18/21] Update vwr.py
---
backtrader/analyzers/vwr.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 6feec28bc..19fd9c5c1 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -107,7 +107,7 @@ class VWR(TimeFrameAnalyzerBase):
('tau', 2.0),
('sdev_max', 0.3),
('fund', None),
- ('riskfreerate', 0.01), # Risk-free rate parameter
+ ('riskfreerate', 0.00), # Risk-free rate parameter
('stddev_sample', False), # Use sample standard deviation if True
)
From 7883136fde53720ef099b0c892debd5b30ba8e73 Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Wed, 16 Oct 2024 13:49:16 -0700
Subject: [PATCH 19/21] Update sortino.py
---
backtrader/analyzers/sortino.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/backtrader/analyzers/sortino.py b/backtrader/analyzers/sortino.py
index fd162defc..25c7e9fc5 100644
--- a/backtrader/analyzers/sortino.py
+++ b/backtrader/analyzers/sortino.py
@@ -112,7 +112,7 @@ class SortinoRatio(Analyzer):
params = (
('timeframe', TimeFrame.Years),
('compression', 1),
- ('riskfreerate', 0.01),
+ ('riskfreerate', 0.00),
('factor', None),
('convertrate', True),
('annualize', False),
From aec47a59290c3de490e902d1201563b12589f550 Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Wed, 16 Oct 2024 13:49:40 -0700
Subject: [PATCH 20/21] Update sharpe.py
---
backtrader/analyzers/sharpe.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/backtrader/analyzers/sharpe.py b/backtrader/analyzers/sharpe.py
index 08aa6a9a0..b66b65399 100644
--- a/backtrader/analyzers/sharpe.py
+++ b/backtrader/analyzers/sharpe.py
@@ -112,7 +112,7 @@ class SharpeRatio(Analyzer):
params = (
('timeframe', TimeFrame.Years),
('compression', 1),
- ('riskfreerate', 0.01),
+ ('riskfreerate', 0.00),
('factor', None),
('convertrate', True),
('annualize', False),
From f6f3e56fce50e687bae96e821b51c6fd4d5edad1 Mon Sep 17 00:00:00 2001
From: syswalrus
Date: Wed, 16 Oct 2024 14:01:40 -0700
Subject: [PATCH 21/21] Update vwr.py
---
backtrader/analyzers/vwr.py | 97 +++++--------------------------------
1 file changed, 13 insertions(+), 84 deletions(-)
diff --git a/backtrader/analyzers/vwr.py b/backtrader/analyzers/vwr.py
index 19fd9c5c1..e5287d623 100644
--- a/backtrader/analyzers/vwr.py
+++ b/backtrader/analyzers/vwr.py
@@ -18,7 +18,6 @@
# along with this program. If not, see .
#
###############################################################################
-
from __future__ import (absolute_import, division, print_function,
unicode_literals)
@@ -31,84 +30,17 @@
class VWR(TimeFrameAnalyzerBase):
- '''Variability-Weighted Return: Better SharpeRatio with Log Returns
-
- Alias:
-
- - VariabilityWeightedReturn
-
- See:
-
- - https://www.crystalbull.com/sharpe-ratio-better-with-log-returns/
-
- Params:
-
- - ``timeframe`` (default: ``None``)
- If ``None`` then the complete return over the entire backtested period
- will be reported
-
- Pass ``TimeFrame.NoTimeFrame`` to consider the entire dataset with no
- time constraints
-
- - ``compression`` (default: ``None``)
- Only used for sub-day timeframes to, for example, work on an hourly
- timeframe by specifying ``TimeFrame.Minutes`` and 60 as compression
-
- If ``None`` then the compression of the 1st data of the system will be
- used
-
- - ``tann`` (default: ``None``)
- Number of periods to use for the annualization (normalization) of the
- average returns. If ``None``, then standard ``t`` values will be used,
- namely:
-
- - ``days: 252``
- - ``weeks: 52``
- - ``months: 12``
- - ``years: 1``
-
- - ``tau`` (default: ``2.0``)
- Factor for the calculation (see the literature)
-
- - ``sdev_max`` (default: ``0.3``)
- Max standard deviation (see the literature)
-
- - ``fund`` (default: ``None``)
- If ``None``, the actual mode of the broker (fundmode - True/False) will
- be autodetected to decide if the returns are based on the total net
- asset value or on the fund value. See ``set_fundmode`` in the broker
- documentation
-
- Set it to ``True`` or ``False`` for a specific behavior
-
- - ``riskfreerate`` (default: ``0.01``)
- The risk-free rate used in the calculation of excess returns
-
- - ``stddev_sample`` (default: ``False``)
- If ``True``, use the sample standard deviation (Bessel's correction).
- If ``False``, use the population standard deviation.
-
- Methods:
-
- - ``get_analysis``
- Returns a dictionary with returns as values and the datetime points for
- each return as keys
-
- The returned dict contains the following keys:
-
- - ``vwr``: Variability-Weighted Return using total standard deviation
- - ``vwrs``: Variability-Weighted Return using downside deviation
- - ``sdev_p``: Total standard deviation of deviations
- - ``sdev_sortino``: Downside standard deviation (Sortino's deviation)
- '''
+ '''Variability-Weighted Return Analyzer'''
params = (
+ ('timeframe', bt.TimeFrame.Days), # Default to Days
+ ('compression', None),
('tann', None),
('tau', 2.0),
('sdev_max', 0.3),
('fund', None),
- ('riskfreerate', 0.00), # Risk-free rate parameter
- ('stddev_sample', False), # Use sample standard deviation if True
+ ('riskfreerate', 0.01),
+ ('stddev_sample', False),
)
_TANN = {
@@ -123,7 +55,7 @@ def __init__(self):
self._returns = Returns(
timeframe=self.p.timeframe,
compression=self.p.compression,
- tann=self.p.tann
+ tann=self.p.tann,
)
def start(self):
@@ -144,7 +76,6 @@ def start(self):
def stop(self):
super(VWR, self).stop()
# Check if no value has been seen after the last 'dt_over'
- # If so, there is one 'pi' out of place and a None 'pn'. Purge
if self._pns[-1] is None:
self._pis.pop()
self._pns.pop()
@@ -159,41 +90,39 @@ def stop(self):
# Get annualization factor
tann = self.p.tann
if tann is None:
- tframe = self._returns.get_timeframe()
+ tframe = self._returns.p.timeframe # Access timeframe from parameters
+ if tframe is None:
+ tframe = bt.TimeFrame.Days # Default to Days if not set
tann = self._TANN.get(tframe, 252.0) # Default to 252
# Recalculate normalized return
rnorm_excess = ravg_excess * tann * 100
# Make n 1-based in enumerate (number of periods and not index)
- # Skip initial placeholders for synchronization
dts = []
downsides = []
# Collect deviations and downside deviations
- for n, pipn in enumerate(zip(self._pis, self._pns), 1):
- pi, pn = pipn
+ for n, (pi, pn) in enumerate(zip(self._pis, self._pns), 1):
dt = pn / (pi * math.exp(ravg_excess * n)) - 1.0
dts.append(dt)
- if dt < 0: # Collect only downside deviations
+ if dt < 0:
downsides.append(dt)
- # Calculate standard deviation of all deviations
+ # Calculate standard deviations
sdev_p = standarddev(dts, bessel=self.p.stddev_sample)
- # Calculate downside deviation (Sortino's deviation)
if len(downsides) > 2:
sdev_sortino = standarddev(downsides, bessel=self.p.stddev_sample)
else:
sdev_sortino = 0
- # Calculate normal VWR
+ # Calculate VWRs
if 0 <= sdev_p <= self.p.sdev_max:
vwr = rnorm_excess * (1.0 - pow(sdev_p / self.p.sdev_max, self.p.tau))
else:
vwr = 0
- # Calculate VWR using Sortino's deviation
if 0 <= sdev_sortino <= self.p.sdev_max:
vwrs = rnorm_excess * (1.0 - pow(sdev_sortino / self.p.sdev_max, self.p.tau))
else: