累積和を最初時点の値を0と基準化する

やりたいこと

資産価格の推移を基準化するために、累積和リターンで比較するのはあるあるなこと f:id:iiiiikamirin:20201015221524p:plain

でも、開始時点を以下のようにずらすと、最初の時点がかわるようじゃこまってしまう f:id:iiiiikamirin:20201015221620p:plain

目標はずらすたびにこのように、開始時点を0としてくれるようにすること f:id:iiiiikamirin:20201015221751p:plain

参考サイト

NumPy配列ndarrayをタイル状に繰り返し並べるnp.tile | note.nkmk.me

コード

方針は以下の通り

  1. 元データの1行目を抽出

  2. 行数分繰り返し(tile)、引く用の行列作る

  3. 元データ - 引く用の行列

「そんなん、累積和取る前の行列を、対象範囲でスライスすればいいじゃん」という話なんだが、その方法はかくかくしかじかでやめた

target0_ = pl_df.loc[start: end]  # PL

#  基準化
row = target0_.values #  np.array

standard_value = row[0, :]
to_sub = np.tile(standard_value, reps = (len(row), 1))

new = row - to_sub
target0 = pd.DataFrame(new, index = target0_.index, columns = target0_.columns)