accessors moduleΒΆ
Custom pandas accessors for returns data.
Methods can be accessed as follows:
- ReturnsSRAccessor ->
pd.Series.vbt.returns.* - ReturnsDFAccessor ->
pd.DataFrame.vbt.returns.*
Note
The underlying Series/DataFrame must already be a return series. To convert price to returns, use ReturnsAccessor.from_value().
Grouping is only supported by the methods that accept the group_by argument.
Accessors do not utilize caching.
There are three options to compute returns and get the accessor:
>>> import numpy as np
>>> import pandas as pd
>>> import vectorbt as vbt
>>> price = pd.Series([1.1, 1.2, 1.3, 1.2, 1.1])
>>> # 1. pd.Series.pct_change
>>> rets = price.pct_change()
>>> ret_acc = rets.vbt.returns(freq='d')
>>> # 2. vectorbt.generic.accessors.GenericAccessor.to_returns
>>> rets = price.vbt.to_returns()
>>> ret_acc = rets.vbt.returns(freq='d')
>>> # 3. vectorbt.returns.accessors.ReturnsAccessor.from_value
>>> ret_acc = pd.Series.vbt.returns.from_value(price, freq='d')
>>> # vectorbt.returns.accessors.ReturnsAccessor.total
>>> ret_acc.total()
0.0
The accessors extend vectorbt.generic.accessors.
>>> # inherited from GenericAccessor
>>> ret_acc.max()
0.09090909090909083
VectorBT PRO
See the rolling metrics examples for optimized calculations of rolling Sharpe ratios and other return statistics.
DefaultsΒΆ
ReturnsAccessor accepts defaults dictionary where you can pass defaults for arguments used throughout the accessor, such as
start_value: The starting value.window: Window length.minp: Minimum number of observations in a window required to have a value.ddof: Delta Degrees of Freedom.risk_free: Constant risk-free return throughout the period.levy_alpha: Scaling relation (Levy stability exponent).required_return: Minimum acceptance return of the investor.cutoff: Decimal representing the percentage cutoff for the bottom percentile of returns.
StatsΒΆ
Hint
>>> ret_acc.stats()
UserWarning: Metric 'benchmark_return' requires benchmark_rets to be set
UserWarning: Metric 'alpha' requires benchmark_rets to be set
UserWarning: Metric 'beta' requires benchmark_rets to be set
Start 0
End 4
Duration 5 days 00:00:00
Total Return [%] 0
Annualized Return [%] 0
Annualized Volatility [%] 184.643
Sharpe Ratio 0.691185
Calmar Ratio 0
Max Drawdown [%] 15.3846
Omega Ratio 1.08727
Sortino Ratio 1.17805
Skew 0.00151002
Kurtosis -5.94737
Tail Ratio 1.08985
Common Sense Ratio 1.08985
Value at Risk -0.0823718
dtype: object
The missing benchmark_rets can be either passed to the contrustor of the accessor or as a setting to StatsBuilderMixin.stats():
>>> benchmark = pd.Series([1.05, 1.1, 1.15, 1.1, 1.05])
>>> benchmark_rets = benchmark.vbt.to_returns()
>>> ret_acc.stats(settings=dict(benchmark_rets=benchmark_rets))
Start 0
End 4
Duration 5 days 00:00:00
Total Return [%] 0
Benchmark Return [%] 0
Annualized Return [%] 0
Annualized Volatility [%] 184.643
Sharpe Ratio 0.691185
Calmar Ratio 0
Max Drawdown [%] 15.3846
Omega Ratio 1.08727
Sortino Ratio 1.17805
Skew 0.00151002
Kurtosis -5.94737
Tail Ratio 1.08985
Common Sense Ratio 1.08985
Value at Risk -0.0823718
Alpha 0.78789
Beta 1.83864
dtype: object
Note
StatsBuilderMixin.stats() does not support grouping.
PlotsΒΆ
Hint
This class inherits subplots from GenericAccessor.
ReturnsAccessor classΒΆ
ReturnsAccessor(
obj,
benchmark_rets=None,
year_freq=None,
defaults=None,
**kwargs
)
Accessor on top of return series. For both, Series and DataFrames.
Accessible through pd.Series.vbt.returns and pd.DataFrame.vbt.returns.
Args
obj:βpd.Seriesorpd.DataFrame- Pandas object representing returns.
benchmark_rets:βarray_like- Pandas object representing benchmark returns.
year_freq:βany- Year frequency for annualization purposes.
defaults:βdict- Defaults that override
returns.defaultsin settings. **kwargs- Keyword arguments that are passed down to GenericAccessor.
Superclasses
- AttrResolver
- BaseAccessor
- Configured
- Documented
- GenericAccessor
- IndexingBase
- PandasIndexer
- Pickleable
- PlotsBuilderMixin
- StatsBuilderMixin
- Wrapping
Inherited members
- AttrResolver.deep_getattr()
- AttrResolver.post_resolve_attr()
- AttrResolver.pre_resolve_attr()
- AttrResolver.resolve_attr()
- BaseAccessor.align_to()
- BaseAccessor.apply()
- BaseAccessor.apply_and_concat()
- BaseAccessor.apply_on_index()
- BaseAccessor.broadcast()
- BaseAccessor.broadcast_to()
- BaseAccessor.combine()
- BaseAccessor.concat()
- BaseAccessor.drop_duplicate_levels()
- BaseAccessor.drop_levels()
- BaseAccessor.drop_redundant_levels()
- BaseAccessor.empty()
- BaseAccessor.empty_like()
- BaseAccessor.make_symmetric()
- BaseAccessor.rename_levels()
- BaseAccessor.repeat()
- BaseAccessor.select_levels()
- BaseAccessor.stack_index()
- BaseAccessor.tile()
- BaseAccessor.to_1d_array()
- BaseAccessor.to_2d_array()
- BaseAccessor.to_dict()
- BaseAccessor.unstack_to_array()
- BaseAccessor.unstack_to_df()
- Configured.copy()
- Configured.dumps()
- Configured.loads()
- Configured.replace()
- Configured.to_doc()
- Configured.update_config()
- GenericAccessor.apply_along_axis()
- GenericAccessor.apply_and_reduce()
- GenericAccessor.apply_mapping()
- GenericAccessor.applymap()
- GenericAccessor.barplot()
- GenericAccessor.bfill()
- GenericAccessor.binarize()
- GenericAccessor.boxplot()
- GenericAccessor.bshift()
- GenericAccessor.config
- GenericAccessor.count()
- GenericAccessor.crossed_above()
- GenericAccessor.crossed_below()
- GenericAccessor.cumprod()
- GenericAccessor.cumsum()
- GenericAccessor.describe()
- GenericAccessor.df_accessor_cls
- GenericAccessor.diff()
- GenericAccessor.engine
- GenericAccessor.ewm_mean()
- GenericAccessor.ewm_std()
- GenericAccessor.expanding_apply()
- GenericAccessor.expanding_max()
- GenericAccessor.expanding_mean()
- GenericAccessor.expanding_min()
- GenericAccessor.expanding_split()
- GenericAccessor.expanding_std()
- GenericAccessor.ffill()
- GenericAccessor.fillna()
- GenericAccessor.filter()
- GenericAccessor.fshift()
- GenericAccessor.get_ranges()
- GenericAccessor.groupby_apply()
- GenericAccessor.histplot()
- GenericAccessor.idxmax()
- GenericAccessor.idxmin()
- GenericAccessor.iloc
- GenericAccessor.indexing_kwargs
- GenericAccessor.lineplot()
- GenericAccessor.loc
- GenericAccessor.mapping
- GenericAccessor.max()
- GenericAccessor.maxabs_scale()
- GenericAccessor.mean()
- GenericAccessor.median()
- GenericAccessor.min()
- GenericAccessor.minmax_scale()
- GenericAccessor.normalize()
- GenericAccessor.obj
- GenericAccessor.pct_change()
- GenericAccessor.plot()
- GenericAccessor.power_transform()
- GenericAccessor.product()
- GenericAccessor.quantile_transform()
- GenericAccessor.range_split()
- GenericAccessor.ranges
- GenericAccessor.rebase()
- GenericAccessor.reduce()
- GenericAccessor.resample_apply()
- GenericAccessor.robust_scale()
- GenericAccessor.rolling_apply()
- GenericAccessor.rolling_max()
- GenericAccessor.rolling_mean()
- GenericAccessor.rolling_min()
- GenericAccessor.rolling_split()
- GenericAccessor.rolling_std()
- GenericAccessor.scale()
- GenericAccessor.scatterplot()
- GenericAccessor.self_aliases
- GenericAccessor.shuffle()
- GenericAccessor.split()
- GenericAccessor.sr_accessor_cls
- GenericAccessor.std()
- GenericAccessor.sum()
- GenericAccessor.to_mapped()
- GenericAccessor.to_returns()
- GenericAccessor.transform()
- GenericAccessor.value_counts()
- GenericAccessor.wrapper
- GenericAccessor.writeable_attrs
- GenericAccessor.zscore()
- PandasIndexer.xs()
- Pickleable.load()
- Pickleable.save()
- PlotsBuilderMixin.build_subplots_doc()
- PlotsBuilderMixin.override_subplots_doc()
- PlotsBuilderMixin.plots()
- StatsBuilderMixin.build_metrics_doc()
- StatsBuilderMixin.override_metrics_doc()
- StatsBuilderMixin.stats()
- Wrapping.regroup()
- Wrapping.select_one()
- Wrapping.select_one_from_obj()
Subclasses
alpha methodΒΆ
ReturnsAccessor.alpha(
benchmark_rets=None,
risk_free=None,
engine=None,
wrap_kwargs=None
)
See alpha().
ann_factor propertyΒΆ
Get annualization factor.
annual methodΒΆ
ReturnsAccessor.annual(
engine=None,
**kwargs
)
Annual returns.
annualized methodΒΆ
ReturnsAccessor.annualized(
engine=None,
wrap_kwargs=None
)
See annualized_return().
annualized_volatility methodΒΆ
ReturnsAccessor.annualized_volatility(
levy_alpha=None,
ddof=None,
engine=None,
wrap_kwargs=None
)
benchmark_rets propertyΒΆ
Benchmark returns.
beta methodΒΆ
ReturnsAccessor.beta(
benchmark_rets=None,
engine=None,
wrap_kwargs=None
)
See beta().
calmar_ratio methodΒΆ
ReturnsAccessor.calmar_ratio(
engine=None,
wrap_kwargs=None
)
See calmar_ratio().
capture methodΒΆ
ReturnsAccessor.capture(
benchmark_rets=None,
engine=None,
wrap_kwargs=None
)
See capture().
common_sense_ratio methodΒΆ
ReturnsAccessor.common_sense_ratio(
engine=None,
wrap_kwargs=None
)
Common Sense Ratio.
cond_value_at_risk methodΒΆ
ReturnsAccessor.cond_value_at_risk(
cutoff=None,
engine=None,
wrap_kwargs=None
)
See cond_value_at_risk().
cumulative methodΒΆ
ReturnsAccessor.cumulative(
start_value=None,
engine=None,
wrap_kwargs=None
)
See cum_returns().
daily methodΒΆ
ReturnsAccessor.daily(
engine=None,
**kwargs
)
Daily returns.
defaults propertyΒΆ
Defaults for ReturnsAccessor.
Merges returns.defaults from settings with defaults from ReturnsAccessor.
deflated_sharpe_ratio methodΒΆ
ReturnsAccessor.deflated_sharpe_ratio(
risk_free=None,
ddof=None,
var_sharpe=None,
nb_trials=None,
bias=True,
wrap_kwargs=None
)
Deflated Sharpe Ratio (DSR).
Expresses the chance that the advertised strategy has a positive Sharpe ratio.
If var_sharpe is None, is calculated based on all columns. If nb_trials is None, is set to the number of columns.
down_capture methodΒΆ
ReturnsAccessor.down_capture(
benchmark_rets=None,
engine=None,
wrap_kwargs=None
)
See down_capture().
downside_risk methodΒΆ
ReturnsAccessor.downside_risk(
required_return=None,
engine=None,
wrap_kwargs=None
)
See downside_risk().
drawdown methodΒΆ
ReturnsAccessor.drawdown(
engine=None,
wrap_kwargs=None
)
Relative decline from a peak.
drawdowns propertyΒΆ
ReturnsAccessor.get_drawdowns() with default arguments.
from_value class methodΒΆ
ReturnsAccessor.from_value(
value,
init_value=nan,
broadcast_kwargs=None,
engine=None,
wrap_kwargs=None,
**kwargs
)
Returns a new ReturnsAccessor instance with returns calculated from value.
get_drawdowns methodΒΆ
ReturnsAccessor.get_drawdowns(
wrapper_kwargs=None,
engine=None,
**kwargs
)
Generate drawdown records of cumulative returns.
See Drawdowns.
indexing_func methodΒΆ
ReturnsAccessor.indexing_func(
pd_indexing_func,
**kwargs
)
Perform indexing on ReturnsAccessor.
information_ratio methodΒΆ
ReturnsAccessor.information_ratio(
benchmark_rets=None,
ddof=None,
engine=None,
wrap_kwargs=None
)
See information_ratio().
max_drawdown methodΒΆ
ReturnsAccessor.max_drawdown(
engine=None,
wrap_kwargs=None
)
See max_drawdown().
Yields the same result as max_drawdown of ReturnsAccessor.drawdowns.
metrics class variableΒΆ
Metrics supported by ReturnsAccessor.
Config({
"start": {
"title": "Start",
"calc_func": "<function ReturnsAccessor.<lambda> at 0x7f64e09bf9c0>",
"agg_func": null,
"check_is_not_grouped": false,
"tags": "wrapper"
},
"end": {
"title": "End",
"calc_func": "<function ReturnsAccessor.<lambda> at 0x7f64e09bfa60>",
"agg_func": null,
"check_is_not_grouped": false,
"tags": "wrapper"
},
"period": {
"title": "Period",
"calc_func": "<function ReturnsAccessor.<lambda> at 0x7f64e09bfb00>",
"apply_to_timedelta": true,
"agg_func": null,
"check_is_not_grouped": false,
"tags": "wrapper"
},
"total_return": {
"title": "Total Return [%]",
"calc_func": "total",
"post_calc_func": "<function ReturnsAccessor.<lambda> at 0x7f64e09bfba0>",
"tags": "returns"
},
"benchmark_return": {
"title": "Benchmark Return [%]",
"calc_func": "benchmark_rets.vbt.returns.total",
"post_calc_func": "<function ReturnsAccessor.<lambda> at 0x7f64e09bfc40>",
"check_has_benchmark_rets": true,
"tags": "returns"
},
"ann_return": {
"title": "Annualized Return [%]",
"calc_func": "annualized",
"post_calc_func": "<function ReturnsAccessor.<lambda> at 0x7f64e09bfce0>",
"check_has_freq": true,
"check_has_year_freq": true,
"tags": "returns"
},
"ann_volatility": {
"title": "Annualized Volatility [%]",
"calc_func": "annualized_volatility",
"post_calc_func": "<function ReturnsAccessor.<lambda> at 0x7f64e09bfd80>",
"check_has_freq": true,
"check_has_year_freq": true,
"tags": "returns"
},
"max_dd": {
"title": "Max Drawdown [%]",
"calc_func": "drawdowns.max_drawdown",
"post_calc_func": "<function ReturnsAccessor.<lambda> at 0x7f64e09bfe20>",
"tags": [
"returns",
"drawdowns"
]
},
"max_dd_duration": {
"title": "Max Drawdown Duration",
"calc_func": "drawdowns.max_duration",
"fill_wrap_kwargs": true,
"tags": [
"returns",
"drawdowns",
"duration"
]
},
"sharpe_ratio": {
"title": "Sharpe Ratio",
"calc_func": "sharpe_ratio",
"check_has_freq": true,
"check_has_year_freq": true,
"tags": "returns"
},
"calmar_ratio": {
"title": "Calmar Ratio",
"calc_func": "calmar_ratio",
"check_has_freq": true,
"check_has_year_freq": true,
"tags": "returns"
},
"omega_ratio": {
"title": "Omega Ratio",
"calc_func": "omega_ratio",
"check_has_freq": true,
"check_has_year_freq": true,
"tags": "returns"
},
"sortino_ratio": {
"title": "Sortino Ratio",
"calc_func": "sortino_ratio",
"check_has_freq": true,
"check_has_year_freq": true,
"tags": "returns"
},
"skew": {
"title": "Skew",
"calc_func": "obj.skew",
"tags": "returns"
},
"kurtosis": {
"title": "Kurtosis",
"calc_func": "obj.kurtosis",
"tags": "returns"
},
"tail_ratio": {
"title": "Tail Ratio",
"calc_func": "tail_ratio",
"tags": "returns"
},
"common_sense_ratio": {
"title": "Common Sense Ratio",
"calc_func": "common_sense_ratio",
"check_has_freq": true,
"check_has_year_freq": true,
"tags": "returns"
},
"value_at_risk": {
"title": "Value at Risk",
"calc_func": "value_at_risk",
"tags": "returns"
},
"alpha": {
"title": "Alpha",
"calc_func": "alpha",
"check_has_freq": true,
"check_has_year_freq": true,
"check_has_benchmark_rets": true,
"tags": "returns"
},
"beta": {
"title": "Beta",
"calc_func": "beta",
"check_has_benchmark_rets": true,
"tags": "returns"
}
})
Returns ReturnsAccessor._metrics, which gets (deep) copied upon creation of each instance. Thus, changing this config won't affect the class.
To change metrics, you can either change the config in-place, override this property, or overwrite the instance variable ReturnsAccessor._metrics.
omega_ratio methodΒΆ
ReturnsAccessor.omega_ratio(
risk_free=None,
required_return=None,
engine=None,
wrap_kwargs=None
)
See omega_ratio().
plots_defaults propertyΒΆ
Defaults for PlotsBuilderMixin.plots().
Merges GenericAccessor.plots_defaults, defaults from ReturnsAccessor.defaults (acting as settings), and returns.plots from settings
qs propertyΒΆ
Quantstats adapter.
resample_total_return methodΒΆ
ReturnsAccessor.resample_total_return(
freq,
engine=None,
wrap_kwargs=None,
**kwargs
)
Resample returns and calculate total return through engine-neutral dispatch.
resolve_self methodΒΆ
ReturnsAccessor.resolve_self(
cond_kwargs=None,
custom_arg_names=None,
impacts_caching=True,
silence_warnings=False
)
Resolve self.
Creates a copy of this instance year_freq is different in cond_kwargs.
rolling_alpha methodΒΆ
ReturnsAccessor.rolling_alpha(
benchmark_rets=None,
window=None,
minp=None,
risk_free=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.alpha().
rolling_annualized methodΒΆ
ReturnsAccessor.rolling_annualized(
window=None,
minp=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.annualized().
rolling_annualized_volatility methodΒΆ
ReturnsAccessor.rolling_annualized_volatility(
window=None,
minp=None,
levy_alpha=None,
ddof=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.annualized_volatility().
rolling_beta methodΒΆ
ReturnsAccessor.rolling_beta(
benchmark_rets=None,
window=None,
minp=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.beta().
rolling_calmar_ratio methodΒΆ
ReturnsAccessor.rolling_calmar_ratio(
window=None,
minp=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.calmar_ratio().
rolling_capture methodΒΆ
ReturnsAccessor.rolling_capture(
benchmark_rets=None,
window=None,
minp=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.capture().
rolling_common_sense_ratio methodΒΆ
ReturnsAccessor.rolling_common_sense_ratio(
window=None,
minp=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.common_sense_ratio().
rolling_cond_value_at_risk methodΒΆ
ReturnsAccessor.rolling_cond_value_at_risk(
window=None,
minp=None,
cutoff=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.cond_value_at_risk().
rolling_down_capture methodΒΆ
ReturnsAccessor.rolling_down_capture(
benchmark_rets=None,
window=None,
minp=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.down_capture().
rolling_downside_risk methodΒΆ
ReturnsAccessor.rolling_downside_risk(
window=None,
minp=None,
required_return=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.downside_risk().
rolling_information_ratio methodΒΆ
ReturnsAccessor.rolling_information_ratio(
benchmark_rets=None,
window=None,
minp=None,
ddof=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.information_ratio().
rolling_max_drawdown methodΒΆ
ReturnsAccessor.rolling_max_drawdown(
window=None,
minp=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.max_drawdown().
rolling_omega_ratio methodΒΆ
ReturnsAccessor.rolling_omega_ratio(
window=None,
minp=None,
risk_free=None,
required_return=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.omega_ratio().
rolling_sharpe_ratio methodΒΆ
ReturnsAccessor.rolling_sharpe_ratio(
window=None,
minp=None,
risk_free=None,
ddof=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.sharpe_ratio().
rolling_sortino_ratio methodΒΆ
ReturnsAccessor.rolling_sortino_ratio(
window=None,
minp=None,
required_return=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.sortino_ratio().
rolling_tail_ratio methodΒΆ
ReturnsAccessor.rolling_tail_ratio(
window=None,
minp=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.tail_ratio().
rolling_total methodΒΆ
ReturnsAccessor.rolling_total(
window=None,
minp=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.total().
rolling_up_capture methodΒΆ
ReturnsAccessor.rolling_up_capture(
benchmark_rets=None,
window=None,
minp=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.up_capture().
rolling_value_at_risk methodΒΆ
ReturnsAccessor.rolling_value_at_risk(
window=None,
minp=None,
cutoff=None,
engine=None,
wrap_kwargs=None
)
Rolling version of ReturnsAccessor.value_at_risk().
sharpe_ratio methodΒΆ
ReturnsAccessor.sharpe_ratio(
risk_free=None,
ddof=None,
engine=None,
wrap_kwargs=None
)
See sharpe_ratio().
sortino_ratio methodΒΆ
ReturnsAccessor.sortino_ratio(
required_return=None,
engine=None,
wrap_kwargs=None
)
See sortino_ratio().
stats_defaults propertyΒΆ
Defaults for StatsBuilderMixin.stats().
Merges GenericAccessor.stats_defaults, defaults from ReturnsAccessor.defaults (acting as settings), and returns.stats from settings
subplots class variableΒΆ
Subplots supported by ReturnsAccessor.
Config({
"plot": {
"check_is_not_grouped": true,
"plot_func": "plot",
"pass_trace_names": false,
"tags": "generic"
}
})
Returns ReturnsAccessor._subplots, which gets (deep) copied upon creation of each instance. Thus, changing this config won't affect the class.
To change subplots, you can either change the config in-place, override this property, or overwrite the instance variable ReturnsAccessor._subplots.
tail_ratio methodΒΆ
ReturnsAccessor.tail_ratio(
engine=None,
wrap_kwargs=None
)
See tail_ratio().
total methodΒΆ
ReturnsAccessor.total(
engine=None,
wrap_kwargs=None
)
See cum_returns_final().
up_capture methodΒΆ
ReturnsAccessor.up_capture(
benchmark_rets=None,
engine=None,
wrap_kwargs=None
)
See up_capture().
value_at_risk methodΒΆ
ReturnsAccessor.value_at_risk(
cutoff=None,
engine=None,
wrap_kwargs=None
)
See value_at_risk().
year_freq propertyΒΆ
Year frequency for annualization purposes.
ReturnsDFAccessor classΒΆ
ReturnsDFAccessor(
obj,
benchmark_rets=None,
year_freq=None,
defaults=None,
**kwargs
)
Accessor on top of return series. For DataFrames only.
Accessible through pd.DataFrame.vbt.returns.
Superclasses
- AttrResolver
- BaseAccessor
- BaseDFAccessor
- Configured
- Documented
- GenericAccessor
- GenericDFAccessor
- IndexingBase
- PandasIndexer
- Pickleable
- PlotsBuilderMixin
- ReturnsAccessor
- StatsBuilderMixin
- Wrapping
Inherited members
- AttrResolver.deep_getattr()
- AttrResolver.post_resolve_attr()
- AttrResolver.pre_resolve_attr()
- AttrResolver.resolve_attr()
- BaseAccessor.align_to()
- BaseAccessor.apply()
- BaseAccessor.apply_and_concat()
- BaseAccessor.apply_on_index()
- BaseAccessor.broadcast()
- BaseAccessor.broadcast_to()
- BaseAccessor.combine()
- BaseAccessor.concat()
- BaseAccessor.drop_duplicate_levels()
- BaseAccessor.drop_levels()
- BaseAccessor.drop_redundant_levels()
- BaseAccessor.empty()
- BaseAccessor.empty_like()
- BaseAccessor.make_symmetric()
- BaseAccessor.rename_levels()
- BaseAccessor.repeat()
- BaseAccessor.select_levels()
- BaseAccessor.stack_index()
- BaseAccessor.tile()
- BaseAccessor.to_1d_array()
- BaseAccessor.to_2d_array()
- BaseAccessor.to_dict()
- BaseAccessor.unstack_to_array()
- BaseAccessor.unstack_to_df()
- Configured.copy()
- Configured.dumps()
- Configured.loads()
- Configured.replace()
- Configured.to_doc()
- Configured.update_config()
- GenericAccessor.apply_along_axis()
- GenericAccessor.apply_and_reduce()
- GenericAccessor.apply_mapping()
- GenericAccessor.applymap()
- GenericAccessor.barplot()
- GenericAccessor.bfill()
- GenericAccessor.binarize()
- GenericAccessor.boxplot()
- GenericAccessor.bshift()
- GenericAccessor.count()
- GenericAccessor.crossed_above()
- GenericAccessor.crossed_below()
- GenericAccessor.cumprod()
- GenericAccessor.cumsum()
- GenericAccessor.describe()
- GenericAccessor.diff()
- GenericAccessor.ewm_mean()
- GenericAccessor.ewm_std()
- GenericAccessor.expanding_apply()
- GenericAccessor.expanding_max()
- GenericAccessor.expanding_mean()
- GenericAccessor.expanding_min()
- GenericAccessor.expanding_split()
- GenericAccessor.expanding_std()
- GenericAccessor.ffill()
- GenericAccessor.fillna()
- GenericAccessor.filter()
- GenericAccessor.fshift()
- GenericAccessor.get_ranges()
- GenericAccessor.groupby_apply()
- GenericAccessor.histplot()
- GenericAccessor.idxmax()
- GenericAccessor.idxmin()
- GenericAccessor.lineplot()
- GenericAccessor.max()
- GenericAccessor.maxabs_scale()
- GenericAccessor.mean()
- GenericAccessor.median()
- GenericAccessor.min()
- GenericAccessor.minmax_scale()
- GenericAccessor.normalize()
- GenericAccessor.pct_change()
- GenericAccessor.plot()
- GenericAccessor.power_transform()
- GenericAccessor.product()
- GenericAccessor.quantile_transform()
- GenericAccessor.range_split()
- GenericAccessor.rebase()
- GenericAccessor.reduce()
- GenericAccessor.resample_apply()
- GenericAccessor.robust_scale()
- GenericAccessor.rolling_apply()
- GenericAccessor.rolling_max()
- GenericAccessor.rolling_mean()
- GenericAccessor.rolling_min()
- GenericAccessor.rolling_split()
- GenericAccessor.rolling_std()
- GenericAccessor.scale()
- GenericAccessor.scatterplot()
- GenericAccessor.shuffle()
- GenericAccessor.split()
- GenericAccessor.std()
- GenericAccessor.sum()
- GenericAccessor.to_mapped()
- GenericAccessor.to_returns()
- GenericAccessor.transform()
- GenericAccessor.value_counts()
- GenericAccessor.zscore()
- GenericDFAccessor.flatten_grouped()
- GenericDFAccessor.heatmap()
- GenericDFAccessor.squeeze_grouped()
- GenericDFAccessor.ts_heatmap()
- PandasIndexer.xs()
- Pickleable.load()
- Pickleable.save()
- PlotsBuilderMixin.build_subplots_doc()
- PlotsBuilderMixin.override_subplots_doc()
- PlotsBuilderMixin.plots()
- ReturnsAccessor.alpha()
- ReturnsAccessor.ann_factor
- ReturnsAccessor.annual()
- ReturnsAccessor.annualized()
- ReturnsAccessor.annualized_volatility()
- ReturnsAccessor.benchmark_rets
- ReturnsAccessor.beta()
- ReturnsAccessor.calmar_ratio()
- ReturnsAccessor.capture()
- ReturnsAccessor.common_sense_ratio()
- ReturnsAccessor.cond_value_at_risk()
- ReturnsAccessor.config
- ReturnsAccessor.cumulative()
- ReturnsAccessor.daily()
- ReturnsAccessor.defaults
- ReturnsAccessor.deflated_sharpe_ratio()
- ReturnsAccessor.df_accessor_cls
- ReturnsAccessor.down_capture()
- ReturnsAccessor.downside_risk()
- ReturnsAccessor.drawdown()
- ReturnsAccessor.drawdowns
- ReturnsAccessor.engine
- ReturnsAccessor.from_value()
- ReturnsAccessor.get_drawdowns()
- ReturnsAccessor.iloc
- ReturnsAccessor.indexing_func()
- ReturnsAccessor.indexing_kwargs
- ReturnsAccessor.information_ratio()
- ReturnsAccessor.loc
- ReturnsAccessor.mapping
- ReturnsAccessor.max_drawdown()
- ReturnsAccessor.obj
- ReturnsAccessor.omega_ratio()
- ReturnsAccessor.plots_defaults
- ReturnsAccessor.qs
- ReturnsAccessor.ranges
- ReturnsAccessor.resample_total_return()
- ReturnsAccessor.resolve_self()
- ReturnsAccessor.rolling_alpha()
- ReturnsAccessor.rolling_annualized()
- ReturnsAccessor.rolling_annualized_volatility()
- ReturnsAccessor.rolling_beta()
- ReturnsAccessor.rolling_calmar_ratio()
- ReturnsAccessor.rolling_capture()
- ReturnsAccessor.rolling_common_sense_ratio()
- ReturnsAccessor.rolling_cond_value_at_risk()
- ReturnsAccessor.rolling_down_capture()
- ReturnsAccessor.rolling_downside_risk()
- ReturnsAccessor.rolling_information_ratio()
- ReturnsAccessor.rolling_max_drawdown()
- ReturnsAccessor.rolling_omega_ratio()
- ReturnsAccessor.rolling_sharpe_ratio()
- ReturnsAccessor.rolling_sortino_ratio()
- ReturnsAccessor.rolling_tail_ratio()
- ReturnsAccessor.rolling_total()
- ReturnsAccessor.rolling_up_capture()
- ReturnsAccessor.rolling_value_at_risk()
- ReturnsAccessor.self_aliases
- ReturnsAccessor.sharpe_ratio()
- ReturnsAccessor.sortino_ratio()
- ReturnsAccessor.sr_accessor_cls
- ReturnsAccessor.stats_defaults
- ReturnsAccessor.tail_ratio()
- ReturnsAccessor.total()
- ReturnsAccessor.up_capture()
- ReturnsAccessor.value_at_risk()
- ReturnsAccessor.wrapper
- ReturnsAccessor.writeable_attrs
- ReturnsAccessor.year_freq
- StatsBuilderMixin.build_metrics_doc()
- StatsBuilderMixin.override_metrics_doc()
- StatsBuilderMixin.stats()
- Wrapping.regroup()
- Wrapping.select_one()
- Wrapping.select_one_from_obj()
ReturnsSRAccessor classΒΆ
ReturnsSRAccessor(
obj,
benchmark_rets=None,
year_freq=None,
defaults=None,
**kwargs
)
Accessor on top of return series. For Series only.
Accessible through pd.Series.vbt.returns.
Superclasses
- AttrResolver
- BaseAccessor
- BaseSRAccessor
- Configured
- Documented
- GenericAccessor
- GenericSRAccessor
- IndexingBase
- PandasIndexer
- Pickleable
- PlotsBuilderMixin
- ReturnsAccessor
- StatsBuilderMixin
- Wrapping
Inherited members
- AttrResolver.deep_getattr()
- AttrResolver.post_resolve_attr()
- AttrResolver.pre_resolve_attr()
- AttrResolver.resolve_attr()
- BaseAccessor.align_to()
- BaseAccessor.apply()
- BaseAccessor.apply_and_concat()
- BaseAccessor.apply_on_index()
- BaseAccessor.broadcast()
- BaseAccessor.broadcast_to()
- BaseAccessor.combine()
- BaseAccessor.concat()
- BaseAccessor.drop_duplicate_levels()
- BaseAccessor.drop_levels()
- BaseAccessor.drop_redundant_levels()
- BaseAccessor.empty()
- BaseAccessor.empty_like()
- BaseAccessor.make_symmetric()
- BaseAccessor.rename_levels()
- BaseAccessor.repeat()
- BaseAccessor.select_levels()
- BaseAccessor.stack_index()
- BaseAccessor.tile()
- BaseAccessor.to_1d_array()
- BaseAccessor.to_2d_array()
- BaseAccessor.to_dict()
- BaseAccessor.unstack_to_array()
- BaseAccessor.unstack_to_df()
- Configured.copy()
- Configured.dumps()
- Configured.loads()
- Configured.replace()
- Configured.to_doc()
- Configured.update_config()
- GenericAccessor.apply_along_axis()
- GenericAccessor.apply_and_reduce()
- GenericAccessor.apply_mapping()
- GenericAccessor.applymap()
- GenericAccessor.barplot()
- GenericAccessor.bfill()
- GenericAccessor.binarize()
- GenericAccessor.boxplot()
- GenericAccessor.bshift()
- GenericAccessor.count()
- GenericAccessor.crossed_above()
- GenericAccessor.crossed_below()
- GenericAccessor.cumprod()
- GenericAccessor.cumsum()
- GenericAccessor.describe()
- GenericAccessor.diff()
- GenericAccessor.ewm_mean()
- GenericAccessor.ewm_std()
- GenericAccessor.expanding_apply()
- GenericAccessor.expanding_max()
- GenericAccessor.expanding_mean()
- GenericAccessor.expanding_min()
- GenericAccessor.expanding_split()
- GenericAccessor.expanding_std()
- GenericAccessor.ffill()
- GenericAccessor.fillna()
- GenericAccessor.filter()
- GenericAccessor.fshift()
- GenericAccessor.get_ranges()
- GenericAccessor.groupby_apply()
- GenericAccessor.histplot()
- GenericAccessor.idxmax()
- GenericAccessor.idxmin()
- GenericAccessor.lineplot()
- GenericAccessor.max()
- GenericAccessor.maxabs_scale()
- GenericAccessor.mean()
- GenericAccessor.median()
- GenericAccessor.min()
- GenericAccessor.minmax_scale()
- GenericAccessor.normalize()
- GenericAccessor.pct_change()
- GenericAccessor.plot()
- GenericAccessor.power_transform()
- GenericAccessor.product()
- GenericAccessor.quantile_transform()
- GenericAccessor.range_split()
- GenericAccessor.rebase()
- GenericAccessor.reduce()
- GenericAccessor.resample_apply()
- GenericAccessor.robust_scale()
- GenericAccessor.rolling_apply()
- GenericAccessor.rolling_max()
- GenericAccessor.rolling_mean()
- GenericAccessor.rolling_min()
- GenericAccessor.rolling_split()
- GenericAccessor.rolling_std()
- GenericAccessor.scale()
- GenericAccessor.scatterplot()
- GenericAccessor.shuffle()
- GenericAccessor.split()
- GenericAccessor.std()
- GenericAccessor.sum()
- GenericAccessor.to_mapped()
- GenericAccessor.to_returns()
- GenericAccessor.transform()
- GenericAccessor.value_counts()
- GenericAccessor.zscore()
- GenericSRAccessor.flatten_grouped()
- GenericSRAccessor.heatmap()
- GenericSRAccessor.overlay_with_heatmap()
- GenericSRAccessor.plot_against()
- GenericSRAccessor.qqplot()
- GenericSRAccessor.squeeze_grouped()
- GenericSRAccessor.ts_heatmap()
- GenericSRAccessor.volume()
- PandasIndexer.xs()
- Pickleable.load()
- Pickleable.save()
- PlotsBuilderMixin.build_subplots_doc()
- PlotsBuilderMixin.override_subplots_doc()
- PlotsBuilderMixin.plots()
- ReturnsAccessor.alpha()
- ReturnsAccessor.ann_factor
- ReturnsAccessor.annual()
- ReturnsAccessor.annualized()
- ReturnsAccessor.annualized_volatility()
- ReturnsAccessor.benchmark_rets
- ReturnsAccessor.beta()
- ReturnsAccessor.calmar_ratio()
- ReturnsAccessor.capture()
- ReturnsAccessor.common_sense_ratio()
- ReturnsAccessor.cond_value_at_risk()
- ReturnsAccessor.config
- ReturnsAccessor.cumulative()
- ReturnsAccessor.daily()
- ReturnsAccessor.defaults
- ReturnsAccessor.deflated_sharpe_ratio()
- ReturnsAccessor.df_accessor_cls
- ReturnsAccessor.down_capture()
- ReturnsAccessor.downside_risk()
- ReturnsAccessor.drawdown()
- ReturnsAccessor.drawdowns
- ReturnsAccessor.engine
- ReturnsAccessor.from_value()
- ReturnsAccessor.get_drawdowns()
- ReturnsAccessor.iloc
- ReturnsAccessor.indexing_func()
- ReturnsAccessor.indexing_kwargs
- ReturnsAccessor.information_ratio()
- ReturnsAccessor.loc
- ReturnsAccessor.mapping
- ReturnsAccessor.max_drawdown()
- ReturnsAccessor.obj
- ReturnsAccessor.omega_ratio()
- ReturnsAccessor.plots_defaults
- ReturnsAccessor.qs
- ReturnsAccessor.ranges
- ReturnsAccessor.resample_total_return()
- ReturnsAccessor.resolve_self()
- ReturnsAccessor.rolling_alpha()
- ReturnsAccessor.rolling_annualized()
- ReturnsAccessor.rolling_annualized_volatility()
- ReturnsAccessor.rolling_beta()
- ReturnsAccessor.rolling_calmar_ratio()
- ReturnsAccessor.rolling_capture()
- ReturnsAccessor.rolling_common_sense_ratio()
- ReturnsAccessor.rolling_cond_value_at_risk()
- ReturnsAccessor.rolling_down_capture()
- ReturnsAccessor.rolling_downside_risk()
- ReturnsAccessor.rolling_information_ratio()
- ReturnsAccessor.rolling_max_drawdown()
- ReturnsAccessor.rolling_omega_ratio()
- ReturnsAccessor.rolling_sharpe_ratio()
- ReturnsAccessor.rolling_sortino_ratio()
- ReturnsAccessor.rolling_tail_ratio()
- ReturnsAccessor.rolling_total()
- ReturnsAccessor.rolling_up_capture()
- ReturnsAccessor.rolling_value_at_risk()
- ReturnsAccessor.self_aliases
- ReturnsAccessor.sharpe_ratio()
- ReturnsAccessor.sortino_ratio()
- ReturnsAccessor.sr_accessor_cls
- ReturnsAccessor.stats_defaults
- ReturnsAccessor.tail_ratio()
- ReturnsAccessor.total()
- ReturnsAccessor.up_capture()
- ReturnsAccessor.value_at_risk()
- ReturnsAccessor.wrapper
- ReturnsAccessor.writeable_attrs
- ReturnsAccessor.year_freq
- StatsBuilderMixin.build_metrics_doc()
- StatsBuilderMixin.override_metrics_doc()
- StatsBuilderMixin.stats()
- Wrapping.regroup()
- Wrapping.select_one()
- Wrapping.select_one_from_obj()
plot_cumulative methodΒΆ
ReturnsSRAccessor.plot_cumulative(
benchmark_rets=None,
start_value=1,
fill_to_benchmark=False,
main_kwargs=None,
benchmark_kwargs=None,
hline_shape_kwargs=None,
add_trace_kwargs=None,
xref='x',
yref='y',
fig=None,
**layout_kwargs
)
Plot cumulative returns.
Args
benchmark_rets:βarray_like- Benchmark return to compare returns against. Will broadcast per element.
start_value:βfloat- The starting returns.
fill_to_benchmark:βbool- Whether to fill between main and benchmark, or between main and
start_value. main_kwargs:βdict- Keyword arguments passed to GenericAccessor.plot() for main.
benchmark_kwargs:βdict- Keyword arguments passed to GenericAccessor.plot() for benchmark.
hline_shape_kwargs:βdict- Keyword arguments passed to
plotly.graph_objects.Figure.add_shapeforstart_valueline. add_trace_kwargs:βdict- Keyword arguments passed to
add_trace. xref:βstr- X coordinate axis.
yref:βstr- Y coordinate axis.
fig:βFigureorFigureWidget- Figure to add traces to.
**layout_kwargs- Keyword arguments for layout.
Usage
>>> import pandas as pd
>>> import numpy as np
>>> np.random.seed(0)
>>> rets = pd.Series(np.random.uniform(-0.05, 0.05, size=100))
>>> benchmark_rets = pd.Series(np.random.uniform(-0.05, 0.05, size=100))
>>> rets.vbt.returns.plot_cumulative(benchmark_rets=benchmark_rets)