What's New
These are new features and improvements of note in each release.
v0.8.0 (Aug 23rd, 2017)
This is a major release from 0.7.0
, and all users are recommended to upgrade.
New features
- 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.
Bugfixes
- 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.
Maintenance
- 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.
v0.7.0 (Jan 28th, 2017)
This is a major release from 0.6.0
, and all users are recommended to upgrade.
New features
- 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.
Bugfixes
- 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.
v0.6.0 (Oct 17, 2016)
This is a major new release from 0.5.1
. All users are recommended to upgrade.
New features
- 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.
Bugfixes
- 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.
v0.5.1 (June 10, 2016)
This is a bugfix release from 0.5.0
with limited new functionality. All users are recommended to upgrade.
New features
- 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
Bugfixes
- Fix drawdown behavior and pandas exception in tear-sheet creation PR297 by Flavio Duarte
v0.5.0 (April 21, 2016) -- Olympia
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 features
- 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
Bug fixes
- Many depracation fixes for Pandas 0.18.0, seaborn 0.6.0, and zipline 0.8.4
v0.4.0 (Dec 10, 2015)
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.
New features
- 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
Bug fixes
- 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
v0.3.1 (Nov 12, 2015)
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.
New features
- 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
Bug fixes
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
Maintenance
- We now depend on pandas-datareader as the yahoo finance loaders from pandas will be deprecated PR181 by @tswrightsandpointe
Contributors
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
v0.3 (Oct 23, 2015)
This is a major release from 0.2 that includes many exciting new features. We recommend that all users upgrade to this new version.
New features
- 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
Bug fixes
- Various fixes to make pyfolio pandas 0.17 compatible
v0.2 (Oct 16, 2015)
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.
New features
- Volatility matched cumulative returns plot PR126.
- Allow for different periodicity (annualization factors) in the annual_() methods PR164.
- Users can supply their own interesting periods PR163.
- Ability to weight a portfolio of holdings by a metric valued PR161.