сортировка df по дате.
df = df.sort_values(by ='Date', ascending=True)
затем суммируйте все акции, ежедневно
df['total'] = df[['TSLA Price', 'NVDA Price', 'AAPL Price']].sum(axis=1)
, затем используйте следующую функцию
def max_profit(li):
max_profit, purchase_on, sell_on = 0, 0, 0
for i, buy in enumerate(li):
for j, sell in enumerate(li[i+1:]):
if sell-buy > max_profit:
max_profit, purchase_on, sell_on = sell-buy, i, i+j+1
return max_profit, purchase_on, sell_on
max_profit, purchase_on, sell_on = max_profit(df['total'].tolist())
Даты покупки / продажи будут ...
buy_date, sell_date = df['Date'].iloc[purchase_on], df['Date'].iloc[sell_on ]
Чтобы по-разному взвешивать, просто умножьте акции на веса и затем сложите сумму.