Python 和金融时间序列神秘数字

Python and Finance Timeseries Mystery Numbers

我从一个名为 Stooq.com 的网站收集了一组数据,我用它来回测 5 分钟蜡烛图上的交易策略,下载的数据给出了

<TICKER>,<PER>,<DATE>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>,<OPENINT>

这一切都很好,但我不知道时间列的格式是什么。这是一个每日周期的例子

<TICKER>,<PER>,<DATE>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>,<OPENINT>
SPY.US,5,20210702,153000,431.67,431.79,431.37,431.51,1309413,0
SPY.US,5,20210702,153500,431.52,431.69,431.48,431.6,642159,0
SPY.US,5,20210702,154000,431.6,431.63,431.33,431.56,832221,0
SPY.US,5,20210702,154500,431.56,431.895,431.55,431.88,797430,0
SPY.US,5,20210702,155000,431.875,431.92,431.747,431.865,509106,0
SPY.US,5,20210702,155500,431.86,431.9,431.76,431.81,419615,0
SPY.US,5,20210702,160000,431.815,431.89,431.695,431.815,425193,0
SPY.US,5,20210702,160500,431.815,431.89,431.74,431.83,419253,0
SPY.US,5,20210702,161000,431.82,431.825,431.61,431.68,455377,0
SPY.US,5,20210702,161500,431.68,431.93,431.68,431.885,490799,0
SPY.US,5,20210702,162000,431.885,431.93,431.78,431.855,307473,0
SPY.US,5,20210702,162500,431.863,431.97,431.79,431.88,357098,0
SPY.US,5,20210702,163000,431.88,431.93,431.78,431.865,433461,0
SPY.US,5,20210702,163500,431.865,431.925,431.75,431.91,294982,0
SPY.US,5,20210702,164000,431.91,431.94,431.74,431.782,359206,0
SPY.US,5,20210702,164500,431.79,431.858,431.74,431.845,249240,0
SPY.US,5,20210702,165000,431.85,431.94,431.76,431.915,256071,0
SPY.US,5,20210702,165500,431.91,431.959,431.858,431.9,254839,0
SPY.US,5,20210702,170000,431.89,431.96,431.855,431.9,285437,0
SPY.US,5,20210702,170500,431.9,431.955,431.84,431.905,208983,0
SPY.US,5,20210702,171000,431.9,432.1,431.89,431.94,400942,0
SPY.US,5,20210702,171500,431.935,432.02,431.92,431.985,160252,0
SPY.US,5,20210702,172000,431.99,432.03,431.9,432.02,182315,0
SPY.US,5,20210702,172500,432.01,432.13,431.92,432.12,284309,0
SPY.US,5,20210702,173000,432.11,432.12,432.04,432.1,315266,0
SPY.US,5,20210702,173500,432.1,432.17,432.04,432.148,388027,0
SPY.US,5,20210702,174000,432.15,432.175,432.06,432.16,339045,0
SPY.US,5,20210702,174500,432.15,432.3,432.15,432.3,485802,0
SPY.US,5,20210702,175000,432.295,432.41,432.29,432.4,279838,0
SPY.US,5,20210702,175500,432.395,432.65,432.395,432.45,716681,0
SPY.US,5,20210702,180000,432.45,432.51,432.41,432.44,219580,0
SPY.US,5,20210702,180500,432.45,432.48,432.43,432.44,156405,0
SPY.US,5,20210702,181000,432.43,432.46,432.34,432.37,203111,0
SPY.US,5,20210702,181500,432.375,432.5,432.34,432.48,176611,0
SPY.US,5,20210702,182000,432.485,432.525,432.44,432.445,174365,0
SPY.US,5,20210702,182500,432.445,432.55,432.445,432.5,151706,0
SPY.US,5,20210702,183000,432.49,432.725,432.46,432.71,366646,0
SPY.US,5,20210702,183500,432.709,432.83,432.68,432.81,315928,0
SPY.US,5,20210702,184000,432.818,432.975,432.78,432.975,349203,0
SPY.US,5,20210702,184500,432.975,433.093,432.94,433.07,451322,0
SPY.US,5,20210702,185000,433.07,433.245,433.03,433.21,498166,0
SPY.US,5,20210702,185500,433.208,433.3,433.16,433.27,324046,0
SPY.US,5,20210702,190000,433.26,433.48,433.26,433.455,447354,0
SPY.US,5,20210702,190500,433.455,433.49,433.17,433.195,579655,0
SPY.US,5,20210702,191000,433.198,433.23,433.12,433.19,449242,0
SPY.US,5,20210702,191500,433.2,433.24,433.06,433.07,398212,0
SPY.US,5,20210702,192000,433.06,433.2,433.06,433.17,378096,0
SPY.US,5,20210702,192500,433.18,433.219,433.12,433.16,256487,0
SPY.US,5,20210702,193000,433.16,433.22,433.03,433.055,239991,0
SPY.US,5,20210702,193500,433.06,433.23,433.055,433.228,209481,0
SPY.US,5,20210702,194000,433.22,433.39,433.22,433.37,415339,0
SPY.US,5,20210702,194500,433.375,433.375,433.221,433.355,290726,0
SPY.US,5,20210702,195000,433.36,433.36,433.2,433.222,223218,0
SPY.US,5,20210702,195500,433.23,433.338,433.229,433.31,229061,0
SPY.US,5,20210702,200000,433.312,433.38,433.27,433.35,278286,0
SPY.US,5,20210702,200500,433.342,433.465,433.34,433.435,395446,0
SPY.US,5,20210702,201000,433.432,433.48,433.36,433.39,228603,0
SPY.US,5,20210702,201500,433.395,433.45,433.35,433.43,174415,0
SPY.US,5,20210702,202000,433.44,433.54,433.421,433.515,293634,0
SPY.US,5,20210702,202500,433.52,433.56,433.46,433.556,260106,0
SPY.US,5,20210702,203000,433.56,433.56,433.43,433.5,239319,0
SPY.US,5,20210702,203500,433.49,433.57,433.435,433.45,330890,0
SPY.US,5,20210702,204000,433.46,433.49,433.32,433.38,407721,0
SPY.US,5,20210702,204500,433.38,433.395,433.22,433.285,380243,0
SPY.US,5,20210702,205000,433.29,433.305,433.19,433.21,260335,0
SPY.US,5,20210702,205500,433.22,433.315,433.18,433.267,274666,0
SPY.US,5,20210702,210000,433.26,433.39,433.19,433.37,426448,0
SPY.US,5,20210702,210500,433.38,433.6,433.38,433.56,755376,0
SPY.US,5,20210702,211000,433.56,433.67,433.42,433.5,615957,0
SPY.US,5,20210702,211500,433.5,433.615,433.5,433.58,329449,0
SPY.US,5,20210702,212000,433.58,433.62,433.5,433.57,640957,0
SPY.US,5,20210702,212500,433.56,433.64,433.54,433.6,521215,0
SPY.US,5,20210702,213000,433.605,433.67,433.55,433.56,524997,0
SPY.US,5,20210702,213500,433.56,433.73,433.44,433.7,1099109,0
SPY.US,5,20210702,214000,433.695,433.76,433.61,433.71,1228773,0
SPY.US,5,20210702,214500,433.71,433.83,433.66,433.78,1510092,0
SPY.US,5,20210702,215000,433.781,434.1,433.78,433.96,3160681,0
SPY.US,5,20210702,215500,433.97,434,433.53,433.72,5860685,0

时间列从 153000 开始一天到 215500 结束,它以 500 的增量增加,这在一定程度上是有道理的,500=5 分钟,所以你会假设 1000=10 分钟等等,但随后数字递增当 1000s 达到 6000 时的 10000s,可能 60 分钟是一个小时,所以增量,none 从我所看到的和据我所知与纪元时间、小时数无关,从某个时间开始的几分钟或几秒钟,坦率地说几乎没有用。有金融背景的人可能对此有所了解,但时间数据在 python 中很常见,所以也许其他人知道。关于这些数字意味着什么的任何线索都会有所帮助。

我正在寻找的是将它们转换为时间序列对象,然后进行一些格式化 hour:minute

在我看来,“153000”实际上是“15:30:00”= 下午 3 点 30 分 0 秒 (HHMMSS)。这与第三个数字永远不会超过 5 的事实是一致的。

假设类型是字符串,你可以将它转换为总秒数:

t='153000'
int(t[:2])*3600+int(t[2:4])*60+int(t[4:])

输出:55800

当然最好还是使用专门的模块,例如pandas,将此数据读取为 DataFrame 并自动处理此转换。