如何快速计算3000种加密货币8年的周收益率?
高效计算加密货币周收益率的方案
你要构建的是每周买入上周收益率最佳加密货币、卖出最差组合的投资策略,现有数据集包含CoinName(币种名)、yyww(周标识)、Close(周收盘价)三个字段,数据示例如下:
CoinName yyww Close 1 bitcoin 201401 8.549050e+02 2 bullion 201401 2.122034e+00 3 digitalcoin 201401 3.112048e-01 4 dogecoin 201401 2.841800e-04 5 earthcoin 201401 3.090447e-03 6 feathercoin 201401 4.227908e-01 7 freicoin 201401 8.091290e-02 8 goldcoin 201401 4.888827e-02 9 infinitecoin 201401 9.171350e-05 10 ixcoin 201401 1.215353e-01
不用手动循环120万次,用Pandas的向量化操作就能快速完成周收益率计算,步骤如下:
第一步:数据透视
将CoinName转成列,yyww作为行索引,把收盘价数据整理成宽表格式,方便后续批量计算。第二步:批量计算收益率
利用shift(1)获取每个币种上周的收盘价,直接通过向量化运算一次性算出所有币种的周收益率,完全替代循环操作。
具体代码实现:
import pandas as pd # 加载数据集(根据实际存储格式调整,比如csv/excel) df = pd.read_csv('crypto_weekly_data.csv') # 生成透视表:行=周标识,列=币种,值=周收盘价 pivot_data = df.pivot(index='yyww', columns='CoinName', values='Close') # 计算周收益率:(本周收盘价 - 上周收盘价)/上周收盘价 weekly_returns = (pivot_data - pivot_data.shift(1)) / pivot_data.shift(1)
这种方法的优势在于:Pandas的向量化操作基于NumPy底层实现,避免了Python循环的性能损耗,处理百万级数据的速度会比循环快几十甚至上百倍。
内容的提问来源于stack exchange,提问作者Oliver Brandtvig
相关产品推荐
相关产品推荐

