3 分でわかる定量化入門 (8): 資本資産価格モデル

こんにちは、エダマメです。このシリーズでは、定量化をすぐに始めることができるように、最も合理化されたコードとケースを使用しており、最も乾燥した製品についてのみ説明しています。定量化を学びたいが、始め方がわからないという友人は、急いで読んでください!

以前のレビュー:

3分でわかる定量化入門(1):市場データの取得&ローソク足チャートの描画

3 分間の定量化入門 (2): Tushare Pro データ インターフェイスの概要

3分でわかる定量化入門(3):収益率の計算

3分でわかる定量化入門(4):市場データの統計分析

3分間でわかる定量入門(5):収量の推論統計

3分間でわかる定量化入門(6): 相関分析

3 分でわかる定量化入門 (7): 回帰分析

この号では、資本資産の価格設定モデルを紹介します。

資本資産価格モデル (CAPM) はポートフォリオ理論に基づいて開発され、現代の金融市場価格理論の柱となっています。主に、証券市場における資産の期待収益率とリスク資産との関係、均衡価格がどのように形成されるかを研究します。CAPM は、資産の期待収益率と資産のリスクを測定するスケール β 値の間に正の相関関係があると考える単一指標モデルです。

資本市場が均衡に達すると、リスクの限界価格は変化せず、市場ポートフォリオを変更する投資の限界効果は同じになります。つまり、リスク単位の増加に対する代償は同じになります。β の定義によれば、資本市場が均衡しているという条件の下で、資本資産価格モデルは次のように得られます。

E(ri)=rf+βim(E(rm)-rf)

E(ri): 資産 i の期待収益率

rf:リスクフリーレート

βim: 資産 i のβ係数、つまり資産 i のシステミックリスク

E(rm): 市場における期待収益率 m

E(rm)-rf: 市場のリスクプレミアム

資本資産価格設定モデルの説明は次のとおりです。 1. 単一証券の期待収益率は、リスクフリー率と引き受けたリスクに対する補償、つまりリスクプレミアムの 2 つの部分で構成されます。2. リスクプレミアムの大きさはβの値に依存します。ベータ値が高いほど、個人のセキュリティのリスクが高くなり、補償も高くなります。3. β は単一証券のシステマティック リスクを測定し、非システマティック リスクに対するリスク補償はありません。

CAPM は非常にシンプルな結論を導き出します。投資家がより高い利益を得るための理由はただ 1 つだけであり、それは高リスクの株式に投資することです。CAPM は完璧なモデルではありませんが、リスクの大きさを測定して、得られる追加リターンがリスクに見合うかどうかを投資家が判断するのに役立つモデルを提供します。

Python で CAPM モデルを構築する方法を見てみましょう。魔王堂ではこのシリーズを毎週末に更新していきますので、手軽に学習するために集めておくことをお勧めします。

CAPM モデルを構築する

まず、関連するパッケージをインポートし、Tushare Pro アカウントを認証します。

import tushare as ts
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
import scipy.stats as stats
​
pro = ts.pro_api('your token')

今年以降の CSI 300 Index のデータを取得し、収益率を計算します。

df1=ts.get_k_data('hs300',start='2023-01-01',end='2023-06-02')#沪深300
df1['lagclose']=df1.close.shift(1)
df1['mktRet']=(df1['close']-df1['lagclose'])/df1['lagclose']
df1.tail()

次のように返されます。

Oriental Fortune (300059) を例として、今年以降の市場データを取得し、収益率を計算します。

df2=ts.get_k_data('300059',start='2023-01-01',end='2023-06-02')#东方财富
df2['lagclose']=df2['close'].shift(1)
df2['dcRet']=(df2['close']-df2['lagclose'])/df2['lagclose']
df2.tail()

次のように返されます。

2 つの収量セットを結合します。

#合并两组收益率
df_mktRet=df1[['date','mktRet']].dropna()
df_dcRet=df2[['date','dcRet']].dropna()
Ret=pd.merge(df_mktRet,df_dcRet,on='date',how='inner')
Ret.tail()

収益の散布図を描きます。

#解决中文乱码
plt.rcParams['font.sans-serif']=['Arial Unicode MS']#用于mac
#plt.rcParams['font.sans-serif']=['SimHei']#用于windows
plt.rcParams['axes.unicode_minus'] = False
​
plt.scatter(Ret['dcRet'],Ret['mktRet'])
plt.title('东方财富收益率与沪深300收益率散点图')
plt.xlabel('东方财富收益率')
plt.ylabel('沪深300收益率')
plt.savefig('fig1.png',dpi=400,bbox_inches='tight')

次のように返されます。

リスクフリー金利を計算します。リスクフリー収益率とは、資金をリスクなしで特定の投資対象に投資することによって得られる金利を指します。リスクフリー金利として、短期国債金利を選択できます。無料料金。

# 以国债年化利率3.6%计算无风险收益率
rf=1.036**(1/360)-1
rf

前のセクションで学習した線形回帰を使用して、CAPM モデルを当てはめます。

# 用简单线性回归ols拟合CAPM模型
model=sm.OLS((Ret['dcRet']-rf),sm.add_constant(Ret['mktRet']-rf))
result=model.fit()
result.summary()

次のように返されます。

その結果、オリエントウェルス株のβ係数は2.07、つまり市場収益率が1%変動するごとに株式収益率は2.07%変動することが分かりました。投資家にとって、市場価格が下落した場合には、より低いベータ値の株式に投資することができ、市場価格が上昇した場合には、より高いベータ値の株式に投資することができます。

以上が今日の乾物内容のすべてです、魔王堂は毎週末このシリーズを更新し、毎営業日旋風突撃クオンツ戦略の実際の状況を皆様にお伝えしていきますので、皆様の「いいね!」と「フォロー」を歓迎します。

おすすめ

転載: blog.csdn.net/weixin_37475278/article/details/131271603