These are new features and improvements of note in each release.
- Update to Python 3.7+, Pandas 1.0+
- Drop support for Python 2
- Updated docs
- CI and packging via GitHub Actions
- conda packages
- Previously,
pyfolio
has required a benchmark, usually the U.S. market returnsSPY
. In order to provide support for international equities and alternative data sets,pyfolio
is now completely independent of benchmarks. If a benchmark is passed, all benchmark-related analyses will be performed; if not, they will simply be skipped. By George Ho - Performance attribution tearsheet PR441, PR433, PR442. By Vikram Narayan.
- Improved implementation of
get_turnover
PR332. By Gus Gordon. - Users can now pass in extra rows (as a dict or OrderedDict) to display in the perf_stats table PR445. By Gus Gordon.
- Many features have been more extensively troubleshooted, maintained and tested. By Ana Ruelas and Vikram Narayan.
- Various fixes to support pandas versions >= 0.18.1 PR443. By Andrew Daniels.
This is a major release from 0.7.0
, and all users are recommended to upgrade.
- Risk tear sheet: added a new tear sheet to analyze risk exposures to common factors (e.g. mean reversion and momentum), sector (e.g. Morningstar sectors), market cap and illiquid stocks. By George Ho.
- Simple tear sheet: added a new tear sheet that presents only the most important plots in the full tear sheet, for a quick general overview of a portfolio's performance. By George Ho.
- Performance attribution: added new table to do performance attribution analysis, such as the amount of returns attributable to common factors, and summary statistics such as the multi-factor alpha and multi-factor Sharpe ratio. By Vikram Narayan.
- Volatility plot: added a rolling annual volatility plot to the returns tear sheet. By hkopp.
- Yahoo and pandas data-reader: fixed bug regarding Yahoo backend for market data and pandas data-reader. By Thomas Wiecki and Gus Gordon.
empyrical
compatibility: removedinformation_ratio
to remain compatible withempyrical
. By Thomas Wiecki.- Fama-French rolling multivariate regression: fixed bug where the rolling Fama-French plot performed separate linear regressions instead of a multivariate regression. By George Ho.
- Other minor bugfixes. By Scott Sanderson, Jonathan Ng, SylvainDe and mckelvin.
- Documentation: updated and improved
pyfolio
documentation and example Jupyter notebooks. By George Ho. - Data loader migration: all data loaders have been migrated from
pyfolio
toempyrical
. By James Christopher. - Improved plotting style: fixed issues with formatting and presentation of plots. By George Ho.
This is a major release from 0.6.0
, and all users are recommended to upgrade.
- Adds a transaction timing plot, which gives insight into the strategies' trade times.
- Adds a plot showing the number of longs and shorts held over time.
- New round trips plot selects a sample of held positions (16 by default) and shows their round trips. This replaces the old round trip plot, which became unreadable for strategies that traded many positions.
- Adds basic capability for analyzing intraday strategies. If a strategy makes
a large amount of transactions relative to its end-of-day positions, then
pyfolio will attempt to reconstruct the intraday positions, take the point of
peak exposure to the market during each day, and plot that data with the
positions tear sheet. By default pyfolio will automatically detect this, but
the behavior can be changed by passing either
estimate_intraday=True
orestimate_intraday=False
to the tear sheet functions (see here). - Now formats zipline assets, displaying their ticker symbol.
- Gross leverage is no longer required to be passed, and will now be calculated from the passed positions DataFrame.
- Cone plotting location is now correct.
- Adjust scaling of beta and Fama-French plots.
- Removed multiple dependencies, some of which were previously unused.
- Various text fixes.
This is a major new release from 0.5.1
. All users are recommended to upgrade.
- Computation of performance and risk measures has been split off into
empyrical
. This allowsZipline
andpyfolio
to use the same code to calculate its risk statistics. By Ana Ruelas and Abhi Kalyan. - New multistrike cone which redraws the cone when it crossed its initial bounds PR310. By Ana Ruelas and Abhi Kalyan.
- Can use most recent PyMC3 now.
- Depends on seaborn 0.7.0 or later now PR331.
- Disable buggy computation of round trips per day and per month PR339.
This is a bugfix release from 0.5.0
with limited new functionality. All users are recommended to upgrade.
- OOS data is now overlaid on top of box plot PR306 by Ana Ruelas
- New logo PR298 by Taso Petridis and Richard Frank
- Raw returns plot and cumulative log returns plot PR294 by Thomas Wiecki
- Net exposure line to the long/short exposure plot PR301 by Ana Ruelas
- Fix drawdown behavior and pandas exception in tear-sheet creation PR297 by Flavio Duarte
This is a major release from 0.4.0
that includes many new analyses and
features. We recommend that all users upgrade to this new version. Also update
your dependencies, specifically, pandas>=0.18.0
, seaborn>=0.6.0
and
zipline>=0.8.4
.
- New capacity tear-sheet to assess how much capital can be traded on a strategy PR284. Andrew Campbell.
- Bootstrap analysis to assess uncertainty in performance metrics PR261. Thomas Wiecki
- Refactored round-trip analysis to be more general and have better output. Now does full portfolio reconstruction to match trades PR293. Thomas Wiecki, Andrew Campbell. See the tutorial for more information.
- Prettier printing of tables in notebooks PR289. Thomas Wiecki
- Faster max-drawdown calculation PR281. Devin Stevenson
- New metrics tail-ratio and common sense ratio PR276. Thomas Wiecki
- Log-scaled cumulative returns plot and raw returns plot PR294. Thomas Wiecki
- Many depracation fixes for Pandas 0.18.0, seaborn 0.6.0, and zipline 0.8.4
This is a major release from 0.3.1 that includes new features and quite a few bug fixes. We recommend that all users upgrade to this new version.
- Round-trip analysis PR210 Andrew, Thomas
- Improved cone to forecast returns that uses a bootstrap instead of linear forecasting PR233 Andrew, Thomas
- Plot max and median long/short exposures PR237 Andrew
- Sharpe ratio was calculated incorrectly PR219 Thomas, Justin
- annual_return() now only computes CAGR in the correct way PR234 Justin
- Cache SPY and Fama-French returns in home-directory instead of install-directory PR241 Joe
- Remove data files from package PR241 Joe
- Cast factor.name to str PR223 Scotty
- Test all
create_*_tear_sheet
functions in all configurations PR247 Thomas
This is a minor release from 0.3 that includes mostly bugfixes but also some new features. We recommend that all users upgrade to this new version.
- Add Information Ratio PR194 by @MridulS
- Bayesian tear-sheet now accepts 'Fama-French' option to do Bayesian multivariate regression against Fama-French risk factors PR200 by Shane Bussman
- Plotting of monthly returns PR195
pos.get_percent_alloc
was not handling short allocations correctly PR201- UTC bug with cached Fama-French factors commit
- Sector map was not being passed from
create_returns_tearsheet
commit - New sector mapping feature was not Python 3 compatible PR201
- We now depend on pandas-datareader as the yahoo finance loaders from pandas will be deprecated PR181 by @tswrightsandpointe
Besiders the core developers, we have seen an increase in outside contributions which we greatly appreciate. Specifically, these people contributed to this release:
- Shane Bussman
- @MridulS
- @YihaoLu
- @jkrauss82
- @tswrightsandpointe
- @cgdeboer
This is a major release from 0.2 that includes many exciting new features. We recommend that all users upgrade to this new version.
- Sector exposures: sum positions by sector given a dictionary or series of symbol to sector mappings PR166
- Ability to make cones with multiple shades stdev regions PR168
- Slippage sweep: See how an algorithm performs with various levels of slippage PR170
- Stochastic volatility model in Bayesian tear sheet PR174
- Ability to suppress display of position information PR177
- Various fixes to make pyfolio pandas 0.17 compatible
This is a major release from 0.1 that includes mainly bugfixes and refactorings but also some new features. We recommend that all users upgrade to this new version.