From 7285ae4f7a3c56334b35787d9e9918c98fa40c5b Mon Sep 17 00:00:00 2001 From: Jerry Inyang Date: Fri, 26 Jul 2024 05:25:25 +0100 Subject: [PATCH 1/2] Fixed FutureWarning in Series.pct_change by specifying fill_method=None to avoid deprecated default behavior. --- .DS_Store | Bin 0 -> 6148 bytes quantstats_lumi/.DS_Store | Bin 0 -> 6148 bytes quantstats_lumi/_plotting/wrappers.py | 6 +++++- quantstats_lumi/utils.py | 17 +++++++++-------- 4 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 .DS_Store create mode 100644 quantstats_lumi/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..2487e304a43b01f9c10ac4a485c4470db99e39a4 GIT binary patch literal 6148 zcmeHK%}N6?5dLBpELyQgk9+7v6tRMy*SbDIA3*y9ZK3N{+Fm>@D87Us>Q(d!Jb3cv zGblcZGf7%EZfiY>$_z}t>`W#z`Ib#K090kzECWRVc~VAiftm@ze%6f4Sqld%o}=3; zR~vEE%ZwC*Fdz*4Mh5hUj}5fY!NB=`w|44Ous8BWaTwOSG28MF>!)k?t53VGzxk!V z*G}yXdyf=~`O(~HV~Dzw9ZN6S5$PJ<&aW=+ObwsriQ{*dD4}CKgwB8F5&fv{0#=^%x1|i8kANT5C(*SF$26m_@s=1#l)cAI;hcC078$< zTBy&z6ddDQ3@j!F$wQ({D4_{e_KKlQIN5zWF0hywG~rM>GtFZ&D|2YJsc`9 zD6KFc47d#B%wv(y|NZIre>X^;gaKjTUooJ(uo_lqN%m~bERN4wpY)KFg~ufZbqF=~ hIMy9LidRUrkk981VPG*aNEQJ5S@V(8_}dhRBkDA11DNekOP21q=2+xw+OxOLB#=RI0NEby!jBZ!blVd zAv7b|Z|wQl`=qr!M8wPc&75dPL=BoCi&7Dpu9}YAc>-k3v8O%V(j9HPZ6(oPoRYmy z>5>NOsK@RP`=76_``w^h=IKk_YuC5!y6e}lHfPU|4^QW>i?2L4-}D@AKCYaQE+iNT z27-ZLAQ<>j25@JKG$)492Lr)CFmPZ%&WD61m>r9u9v$ek1OUo2S_Qh)5)zXfvtu!Y z1;Q2zv{3dEgDo8M$^EipF|=@EFFx2;elK2FS4aM&?!?(J`d}a!7&CBe!M!`TZ@Xr|FNxN#7_$a?yKYgCuwF&JCO+@^PC=lqQM*s$Lj-0B|>`8R^WyfMD TS!7eu05EuLd!- literal 0 HcmV?d00001 diff --git a/quantstats_lumi/_plotting/wrappers.py b/quantstats_lumi/_plotting/wrappers.py index 1866ed6..dd1e28c 100644 --- a/quantstats_lumi/_plotting/wrappers.py +++ b/quantstats_lumi/_plotting/wrappers.py @@ -82,7 +82,11 @@ def snapshot( returns.columns = strategy_colname colors = _GRAYSCALE_COLORS if grayscale else _FLATUI_COLORS - returns = _utils.make_portfolio(returns.dropna(), 1, mode).pct_change().fillna(0) + returns = ( + _utils.make_portfolio(returns.dropna(), 1, mode) + .pct_change(fill_method=None) + .fillna(0) + ) if figsize is None: size = list(_plt.gcf().get_size_inches()) diff --git a/quantstats_lumi/utils.py b/quantstats_lumi/utils.py index d2d4c9d..22fd986 100644 --- a/quantstats_lumi/utils.py +++ b/quantstats_lumi/utils.py @@ -17,13 +17,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -import io as _io import datetime as _dt -import pandas as _pd +import inspect +import io as _io + import numpy as _np +import pandas as _pd import yfinance as _yf + from . import stats as _stats -import inspect def _mtd(df): @@ -208,9 +210,9 @@ def _prepare_returns(data, rf=0.0, nperiods=None): if isinstance(data, _pd.DataFrame): for col in data.columns: if data[col].dropna().min() >= 0 and data[col].dropna().max() > 1: - data[col] = data[col].pct_change() + data[col] = data[col].pct_change(fill_method=None) elif data.min() >= 0 and data.max() > 1: - data = data.pct_change() + data = data.pct_change(fill_method=None) # cleanup data data = data.replace([_np.inf, -_np.inf], float("NaN")) @@ -239,7 +241,7 @@ def download_returns(ticker, period="max", proxy=None): params["start"] = period[0] else: params["period"] = period - return _yf.download(**params)["Close"].pct_change() + return _yf.download(**params)["Close"].pct_change(fill_method=None) def _prepare_benchmark(benchmark=None, period="max", rf=0.0, prepare_returns=True): @@ -259,14 +261,13 @@ def _prepare_benchmark(benchmark=None, period="max", rf=0.0, prepare_returns=Tru benchmark = benchmark[benchmark.columns[0]].copy() if isinstance(period, _pd.DatetimeIndex) and set(period) != set(benchmark.index): - # Adjust Benchmark to Strategy frequency benchmark_prices = to_prices(benchmark, base=1) new_index = _pd.date_range(start=period[0], end=period[-1], freq="D") benchmark = ( benchmark_prices.reindex(new_index, method="bfill") .reindex(period) - .pct_change() + .pct_change(fill_method=None) .fillna(0) ) benchmark = benchmark[benchmark.index.isin(period)] From 2b06f0df29ab38d894879d0fad4c0868d7981b47 Mon Sep 17 00:00:00 2001 From: Jerry Inyang <70327720+jerryinyang@users.noreply.github.com> Date: Fri, 26 Jul 2024 05:29:31 +0100 Subject: [PATCH 2/2] Delete .DS_Store --- .DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 2487e304a43b01f9c10ac4a485c4470db99e39a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}N6?5dLBpELyQgk9+7v6tRMy*SbDIA3*y9ZK3N{+Fm>@D87Us>Q(d!Jb3cv zGblcZGf7%EZfiY>$_z}t>`W#z`Ib#K090kzECWRVc~VAiftm@ze%6f4Sqld%o}=3; zR~vEE%ZwC*Fdz*4Mh5hUj}5fY!NB=`w|44Ous8BWaTwOSG28MF>!)k?t53VGzxk!V z*G}yXdyf=~`O(~HV~Dzw9ZN6S5$PJ<&aW=+ObwsriQ{*dD4}CKgwB8F5&fv{0#=^%x1|i8kANT5C(*SF$26m_@s=1#l)cAI;hcC078$< zTBy&z6ddDQ3@j!F$wQ({D4_{e_KKlQIN5zWF0hywG~rM>GtFZ&D|2YJsc`9 zD6KFc47d#B%wv(y|NZIre>X^;gaKjTUooJ(uo_lqN%m~bERN4wpY)KFg~ufZbqF=~ hIMy9LidRUrkk981VPG*aNEQ