[量子化 13 を最初からプレイする] quantstats: 量子化戦略を分析する

バックグラウンド

以前に定量データの取得方法をいくつかまとめましたが、データは定量戦略の「素材」であり、次に考えるべきはそのデータをどう活用するかです。

quantstatsこの記事では、戦略を簡単に分析できる定量指標分析ツールを紹介します。

Github アドレス: https://github.com/ranaroussi/quantstats

彼の著者は Ran Aroussi で、 のyfinance著者でもあり、オープンソースの定量化の分野でもよく知られています。現在は、海外のプログラマティック取引クラウドプラットフォームであるtradologicsに勤務しています。ただし、あなたが A 株トレーダーの場合、これらはあまり役に立たないかもしれません。quantstats

インストール

通常の pip インストールの場合、パッケージ名は小さなこぶ文字で表記され、GitHub プロジェクト名の大文字と小文字は異なることに注意してください。

pip install QuantStats

コンセプト

基本的なロジック

まず、次に行うことの基本的なロジックを説明します。投資戦略を開発し、バックテスト ツールを使用してその戦略の日次履歴バックテスト リターンを計算したと仮定します。次に私たちがしなければならないことは、この戦略が良いのか悪いのか、リスクは何か、利益は何か、彼を評価する方法を見つけることです。このツールはまさにそれを行います。

基準

これはα関連指標を評価する上で重要な概念であり、ベンチマーク戦略を設定し、自社の定量戦略と比較する必要があります。A株では通常、ベンチマークはCSI 300指数の利回りとして設定されます。

索引

指標は、戦略の品質を評価するための特定の統計値です。例えば、先ほども述べたインフォメーションレシオやシャープレシオ、最大リトレースメントやα、βリターンなどです。

これらの指標の計算ルールは客観的であり、厳密な標準式が定められていますが、指標の評価は人によって異なり、リスクの好みに関連する場合もあります。したがって、最終的には絶対的な良い悪いという基準はありませんが、重要なのは各指標のロジックを理解し、自分なりにどう評価するかを決めることです。

戦闘

公式の例はyfinance米国株データに基づいていますが、ここではA株データを分析に使用してみます。

私は最も単純な戦略を立てました。それは、ICBC 株を常に保有するというものです。そうすれば、私たちの戦略収入はこの株の毎日の収入になりますが、問題ありません。

ベンチマーク: CSI 300 インデックスの収益率を選択します。

次にコードに直接アクセスし、コードのコメントに具体的な説明を書きます。

import pandas as pd
import akshare as ak
import quantstats as qs

# 获取沪深300历史交易数据
df_300 = ak.stock_zh_index_daily_em(symbol="sh000300")

# 获取工商银行历史交易数据
df = ak.stock_zh_a_hist(symbol="601398", adjust="hfq")
# 将列名日期改为date,使其与df_300具备同名日期列
df['date'] = df['日期']

# 合并两个数据表
df_merge = df.merge(df_300, how='inner', on='date')
# 将合并数据表的日期列改为时间格式
df_merge['date'] = pd.to_datetime(df_merge['date'] , format='%Y-%m-%d')

# 目标策略收益率Series,pct_change的作用是根据价格计算收益率
target = df_merge['收盘'].pct_change()
# 将索引设置为日期列
target.index = df_merge['date']
# 基准策略收益率Series,计算方法相同
base = df_merge['close'].pct_change()
base.index = df_merge['date']
# 输出网页格式的分析结果
qs.reports.html(target, base,  output='Output.html')

いくつかの点に注意してください

  • ツールで取得した元の取引データは基本的に始値と終値のみで、利回りデータが含まれることはほとんどありませんが、これを計算する方法は実は非常に簡単で、既製の方法がありpandasますpct_change
  • quantstats で必要な戦略データ形式はシリーズで、値は収益率、インデックスは日付です。日付はこのdatetime形式である必要があり、文字列にすることはできません。
  • 株式やファンドの過去の取引の取引データについては、価格がマイナスに表示されず、収益率が極端な誤差値にならないように、できれば再加重後に再加重データを使用するのが最善です。

結果表示

html形式の結果は内容が多いので全ては掲載しませんが、基本的に考えられる指標は全て揃っており、詳細に分析することが可能です。たとえば、ICBC の収益をホールドしてきた私の戦略は CSI 300 を上回るパフォーマンスを示していないため、CSI 300 をホールドした方が良いと考えられます。ただし、ICBC の最大リトレースメントは CSI 300 よりも小さく、ボラティリティが若干小さいこともわかります。
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

特定の指標にのみ注目すると、情報比率などその指標のみを計算することもできます

# target和base就是上边计算出来的
qs.stats.information_ratio(target, base)

結果は

-0.0053144770904208815

0 未満の場合、この戦略にはベンチマークに対する利点がなく、超過リスクが増加しても超過リターンは増加しないことを意味します。

要約する

私の考えでは、quantstats戦略のバックテスト結果の分析ツールとして使用でき、徹底的に研究し、長期的に使用する価値があります。

おすすめ

転載: blog.csdn.net/u010214511/article/details/128106361