我對於我的生活似乎無法得到我想要的結構並使其功能正常,所以在一陣憤怒中我來找你們。商品期貨分層數據結構
設置: 我有一個名爲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加入到一起的訣竅,有什麼想法? –
你是指不同的日期?上面的代碼處理:) –
是不同的日期,但我關心與顯式到期對應的列。 –