我写了一个代码来识别我的股票何时在投资组合中(位置 == 1)并在发生这种情况时关联相应的费用。
#lag the position column
long_position['PosLag'] = long_position['AMAZON.COM'].shift(1).round() long_position.dropna(inplace=True)
long_position['PosLag'] = long_position['PosLag'].astype(int) long_position
long_position['order'] = 0
#create switching patterns as string
long_position.loc[long_position['AMAZON.COM'] != long_position.PosLag, ['order']] = long_position['AMAZON.COM'].astype(str) + long_position.PosLag.astype(str)
#make a column for fees (more complex with short)
fees = -0.001
long_position['fees'] = 0
#register the fees, in log-return!
long_position.loc[long_position.order != 0, ['fees']] = np.log(1+fees)
check fees
long_position
这里是输出:
现在我想创建一个循环,对数据框中的每一列执行相同的操作,并仅将每家公司的“费用”附加到新列表/数据框。
这里是不起作用的代码
long_positions=buy_esg.copy()
long_positions
tickers = list(buy_esg)
result =[]
for ticker in tickers:
long_positions['lag']=long_positions[ticker].shift(1).round()
long_positions['lag'].dropna(inplace=True)
long_positions.lag = long_positions['lag'].astype(int)
long_positions['order'] = 0
long_positions.loc[long_positions[ticker] != long_positions.lag, ['order']] = long_positions[ticker].astype(str) + long_positions.lag.astype(str)
fees = -0.001
long_positions['fees'] = 0
long_positions.loc[long_positions.order != 0, ['fees']] = np.log(1+fees)
output = long_positions['fees']
result.append(output)
result
谢谢!!