使用python写一段代码,需要读取十只股票的数据,算出当日个股收盘价的 5 日均值:MA5 算出当日个股收盘价到 5 日均值的偏离程度 ratio:(closePrice-MA5)/MA5 根据给出的十只股票当日的 ratio,挑出 ratio 为负的个股,第二天等权持仓,再根据每日的持仓个股和个股的收益率,计算每日的策略收益率.
时间: 2024-02-06 15:12:15 浏览: 19
好的,下面是一份示例代码,可以实现你所描述的功能:
```
import pandas as pd
import os
# 获取数据文件列表
data_files = os.listdir('data')
# 数据合并
df = pd.DataFrame()
for f in data_files:
temp_df = pd.read_csv(os.path.join('data', f))
df = pd.concat([df, temp_df], axis=0)
# 计算MA5
df['MA5'] = df.groupby('stockCode')['closePrice'].rolling(window=5).mean().reset_index(0, drop=True)
# 计算ratio
df['ratio'] = (df['closePrice'] - df['MA5']) / df['MA5']
# 挑选ratio为负的个股
selected_stocks = df[df['ratio'] < 0]['stockCode'].unique().tolist()
# 在T+1日等权持仓
df['position'] = 0
df.loc[df['stockCode'].isin(selected_stocks), 'position'] = 1 / len(selected_stocks)
# 计算每日的策略收益率
df['returns'] = df['dailyReturn'] * df['position']
# 输出结果
print(df.head())
```
这份代码会读取`data`文件夹下的所有数据文件,并将它们合并成一个数据集。然后,计算每只股票的MA5和ratio,挑选出ratio为负的个股,进行等权持仓,计算每日的策略收益率。需要注意的是,这个代码仅是一个示例,具体实现还需要根据具体的数据格式和计算需求进行调整和优化。