まず、我々のデータを見てみると、pyfolioステップバイステップの機能と結果のいくつかを明確にするためには、まず私たちの戦略は0.3証券500指数、0.3私たちであるCSI千指数とSSE 0.4 50指数、ある選択します収入のポートフォリオは、これらの3つの指標の加重リターンです。言い換えれば、我々は3つの資産としてこれら三つの指標です。ベンチマーク上海と深セン300、フォローアップの必要性が生じたとき、他のものを追加して引き返します。
私のリターンSERファイルで見てみましょう:
date,zz500,zz1000,sz50,return
2016/2/22,0.020771931,0.020462588,0.024827323,0.022301285
2016/2/23,-0.005443023,-0.006005945,-0.011851228,-0.008175182
2016/2/24,0.006678676,0.000874356,0.005846597,0.004604548
2016/2/25,-0.07936297,-0.079150999,-0.053290504,-0.068870392
2016/2/26,0.004067755,-0.00464371,0.011794361,0.004544958
次のコードは、ノートに書かれています。
import pyfolio as pf
import pandas as pd
%matplotlib inline
return_ser = pd.read_csv('return_ser.csv')
return_ser['date'] = pd.to_datetime(return_ser['date'])
return_ser.set_index('date', inplace=True)
pf.create_returns_tear_sheet(return_ser['return'])
ここでは、簡単なcreat_returns_tear_sheetを使用しています。その後、我々は結果を見て:
これが私たちの戦略の利点は、開始と終了、および時間の合計スパンすることで、よりよく理解されています。
そして、メトリックの全体の時系列を算出することができる戻ります。より一般的なのほとんどは、比較的まれで説明します。最初は、いわゆる安定性、安定性、です。実際には、累積増分純資産の強度を説明するための時間は、R二乗回帰であること、どのくらいの非常にシンプルです。私たちは簡単に説明し、少し抽象的に言います。
私たちは、ネット曲線の日々のリターンがこのであることを前提としています。
そして、この黒い線は時間とともに増加し、同じ量です。そして、ネットと、この線形回帰R二乗は、安定性と呼ばれています。
次いで、尾より興味深い率、毎日のリターンの選択第95ビットと5分の分布、絶対値で割りました。失うお金よりも大きなリターン獲得した何倍の意味の本質です。
そして、バックのケースをテストします:
説明もなく、比較的比較的単純な背後にある図は、直接感動読み取ることができます。
次に、我々はリターン涙シートのパラメータを注意深く見。
def create_returns_tear_sheet(returns, positions=None,
transactions=None,
live_start_date=None,
cone_std=(1.0, 1.5, 2.0),
benchmark_rets=None,
bootstrap=False,
turnover_denom='AGB',
header_rows=None,
return_fig=False)
私たちは、この関数のシグネチャはこれで参照してください。
1、live_start_date
我们先来研究几个简单的吧,比如第二个,live_start_date,这个参数的意思就是,你的return啥时候是开始实盘的?比如我们上面这一串return,假设我们在2018年6月份之后是实盘,而前面是模拟盘或者是回测的结果,那么我们就可以这样设置:
live_start_date=‘2018-06-01’
我们看一下结果:
我们发现多了几个out of sample的东西,也就是说,各种指标开始区分样本内外了,理论上我们可以根据这个来看一下我们的策略有没有过拟合。如果样本内外的差异很大,那么大概率这就是过拟合了。
图片中,样本外也会被标记出来,而且会给出不同的标准差的区间。那么,这个标准差是怎么决定的呢?在pyfolio里面有这样一段注释:
Determines the upper and lower bounds of an n standard deviation
cone of forecasted cumulative returns. Future cumulative mean and
standard devation are computed by repeatedly sampling from the
in-sample daily returns (i.e. bootstrap). This cone is non-parametric,
meaning it does not assume that returns are normally distributed.
说白了就是用历史的dailyreturn通过bootstrap来进行计算的。所谓的bootstrap其实就是有放回的抽样。而标准差倍数则由cone_std=(1.0, 1.5, 2.0)这样一个tuple来决定。
2、benchmark
然后,我们在加入benchmark试一试看看有什么变化:
pf.create_returns_tear_sheet(return_ser['return'], live_start_date='2018-06-01', benchmark_rets=return_ser['bench'])
我们看到,多了beta和alpha
图上也是,多了一个benchmark:
同时也多了一个滚动的beta