TypeError: pivot() takes 1 positional argument but 4 were given in quantstats.reports.html
Orchid420 opened this issue · 1 comments
I encountered a TypeError when trying to generate a report using the quantstats.reports.html function. The error message indicates an issue with the pivot method in the quantstats library.
Steps to Reproduce
Set up the environment with the following packages:
Python 3.9.19
pandas 2.2.2
numpy 1.26.4
scipy 1.12.0
matplotlib 3.8.4
seaborn 0.13.2
tabulate 0.9.0
yfinance 0.2.40
plotly 5.20.0
quantstats 0.0.50
Run the following script:
python
Copy code
import pandas as pd
import quantstats as qs
import yfinance as yf
Fetch the daily returns for a stock
stock = qs.utils.download_returns('META')
Ensure datetime index of stock is timezone-naive
stock.index = stock.index.tz_localize(None)
Fetch the benchmark data
benchmark = qs.utils.download_returns('SPY')
Ensure datetime index of benchmark is timezone-naive
benchmark.index = benchmark.index.tz_localize(None)
Ensure the data is aligned by reindexing the benchmark to the stock index
benchmark = benchmark.reindex(stock.index).dropna()
Show sharpe ratio
print(qs.stats.sharpe(stock))
Or using extend_pandas() :)
print(stock.sharpe())
Generate the quantstats report
qs.reports.html(stock, benchmark, output='report.html')
TypeError Traceback (most recent call last)
File ~\anaconda3\envs\myenv\lib\site-packages\quantstats\reports.py:185, in html(returns, benchmark, rf, grayscale, title, output, compounded)
182 tpl = tpl.replace('{{title}}', title)
184 figfile = _utils._file_stream()
185 _plots.monthly_heatmap(returns, grayscale=grayscale,
186 figsize=(8, 4), cbar=False,
187 savefig={'fname': figfile, 'format': 'svg'},
188 show=False, ylabel=False, compounded=compounded)
189 tpl = tpl.replace('{{monthly_heatmap}}', figfile.getvalue().decode())
191 figfile = _utils._file_stream()
File ~\anaconda3\envs\myenv\lib\site-packages\quantstats_plotting\wrappers.py:568, in monthly_heatmap(returns, annot_size, figsize, cbar, square, compounded, eoy, grayscale, fontname, ylabel, savefig, show)
559 def monthly_heatmap(returns, annot_size=10, figsize=(10, 5),
560 cbar=True, square=False,
561 compounded=True, eoy=False,
...
564
565 # colors, ls, alpha = _core._get_colors(grayscale)
566 cmap = 'gray' if grayscale else 'RdYlGn'
568 returns = _stats.monthly_returns(returns, eoy=eoy,
569 compounded=compounded) * 100
571 fig_height = len(returns) / 3
573 if figsize is None:
File ~\anaconda3\envs\myenv\lib\site-packages\quantstats\stats.py:697, in monthly_returns(returns, eoy, compounded)
694 returns['Month'] = returns.index.strftime('%b')
696 # make pivot table
697 returns = returns.pivot('Year', 'Month', 'Returns').fillna(0)
TypeError: pivot() takes 1 positional argument but 4 were given
Check out https://github.com/Lumiwealth/quantstats_lumi, which is being updated regularly. We are a fork of this library that is being maintained by Lumiwealth