数据
我有一个包含 ca M=160 csv 文件的 zip,每只股票一个 csv 文件。股票代码在文件名中。每个 csv 文件包含相同的列:date、txVolume(USD)、txCount、marketcap(USD)、price(USD)、exchangeVolume(USD)。日期频率为每日。
有些股票在 2014 年开始交易,有些在 2017 年开始交易,因此所有股票的日期栏长度并不相同。
目标
我想看看指数基金会如何发展。该基金的策略是在每个月的第一天购买 10 只最大的股票(基于市值)。如果股票在前 10 名出现“转变”,就会发生再平衡。
我想使用python。
初次尝试
我pandas glob对numpy.
我解决这个问题的草图如下
glob使用包导入所有文件- 创建一个矩阵:市值和价格。它们有T行和M列,其中 M 是股票的 nr,T 是最长系列的长度(大约 4 年)。
- 使用 pandas
.resample('M')从每日数据变为每月数据。 - (理想情况下,上面矩阵中的列会有名称,因此使用 pandas 很好,因为我可以设置它
df.columns = list_of_names) - 根据价格矩阵创建收益矩阵,根据市值矩阵创建权重矩阵。
- 返回索引 = 对角线(返回矩阵 * 权重矩阵转置)
但我是一个非常缺乏经验的程序员,所以这种方法可能很愚蠢。我想看看是否有更好的方法来解决我遇到的问题。