特徴量とターゲットの作成
機械学習を使って最適なポートフォリオを選ぶには、特徴量とターゲットを用意する必要があります。特徴量は前の演習で作成済みです。価格の指数加重移動平均(EWMA)がそれにあたります。ターゲットには、シャープレシオが最も高かったポートフォリオを使用します。
pandas の .iterrows() メソッドを使って、ewma_monthly データフレームの index と value のペアを取得します。ループ内では、ewma_monthly の現在の値を特徴量として設定します。次に、max_sharpe_idxs から得られるシャープレシオ最大のインデックスを使い、各月の最適な portfolio_weights を取得してターゲットとして設定します。
この演習はコースの一部です
Python による金融のための Machine Learning
演習の手順
.iterrows()メソッドをewma_monthlyに対して使用し、ループ内でindexとvalueを取得します。- ループ内の
dateとbest_idxを使ってportfolio_weightsにインデックスを指定し、シャープレシオが最大となる理想的なポートフォリオの重みを取得します。 ewmaを特徴量に追加します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
targets, features = [], []
# Create features from price history and targets as ideal portfolio
for date, ewma in ewma_monthly.____:
# Get the index of the best sharpe ratio
best_idx = max_sharpe_idxs[date]
targets.append(portfolio_weights[____][____])
features.append(____) # add ewma to features
targets = np.array(targets)
features = np.array(features)
print(targets[-5:])