我对于我的生活似乎无法得到我想要的结构并使其功能正常,所以在一阵愤怒中我来找你们。商品期货分层数据结构
设置: 我有一个名为Futures_Contracts的目录,里面是大约30个文件夹,所有这些文件夹都以相关资产命名,最后在csv格式的6个最近的到期合约中。每个csv格式相同,包含日期,O,H,L,C,V,OI,到期月份。
注:OHLCV OI是开放的,高,低,收盘,成交量,持仓量(对于那些不熟悉),也承担收盘价低于
任务结算的代名词:从这里的目标是将期货数据加载到多指标熊猫数据框中,使得顶级指数是潜在的商品符号,中级指数是到期月 - 年,最后是OHLC数据。最终目标是让我可以开始对zipline模块进行黑客攻击,使其在未来运行。 所以视觉:
我愚蠢的尝试:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from pandas import DataFrame, Series
import datetime
plt.figsize(16,8)
deliveries = {}
commoidities = {}
columns = 'open', 'high', 'low', 'settle', 'volume', 'interest', 'delivery' #Contract fields
path = os.getcwdu()+'/Futures_Contracts/' #Futures Path
for sym in os.listdir(path):
if sym[0] != '.': #Weed out hidden files
deliveries[sym] = []
i = 0
for contract in os.listdir(path + sym):
temp = pd.io.parsers.read_csv(path + sym + '/' + contract, index_col=0, parse_dates = True, names = columns)#pull in the csv
deliveries[sym].append(str(contract[:-4][-1] + contract[:-4][:-1][-2:])) #add contract to dict in form of MonthCode-YY
commodities[sym] = deliveries[sym]
commodities[sym][i] = temp
i += 1
这个有点工作,但是这确实是一个嵌套的字典保存在最后一个数据帧。因此切片是非常笨拙:
commodities['SB2'][0]['settle'].plot()
commodities['SB2'][3]['settle'].plot()
commodities['SB2'][4]['settle'].plot()
commodities['SB2'][3]['settle'].plot()
commodities['SB2'][4]['settle'].plot()
commodities['SB2'][5]['settle'].plot()
,并产生
最理想的,我将能够在每个指标的切片,这样我可以比较不同资产,到期日期和值数据。此外,请标注我正在查看的内容,如同您在matplotlib图表中看到的,所有内容都简单地命名为'settle'
确实有办法做到这一点,但我不够聪明。
请让我来接你的大脑多一点。不幸的是,并非所有标的资产都有相同的合约到期日。我该如何处理?我想创建一个数据框不会因为这个原因而可行。最理想的是,他们是把csv加入到一起的诀窍,有什么想法? –
你是指不同的日期?上面的代码处理:) –
是不同的日期,但我关心与显式到期对应的列。 –