Col*_*ers 3 arrays object julia
我想在Julia中使用它时将高频金融数据存储在内存中.
我的数据有很多Float64数组.在某些市场上,为了某些安全性,每个阵列都存储一天内的高频数据.例如,对于在纽约证券交易所(纽约证券交易所)上市的IBM 2010-01-04日期,有一个Float64数组.
如上所述,我有许多这样的阵列,涵盖多个日期,市场和证券.我想将它们全部存储在一个对象中,这样可以很容易地检索任何给定的数组(可能利用元数据的树状结构).
在Matlab中,我曾经将它存储在一个结构中,其中第一级是市场,下一级是安全,下一级是日期,然后在树的末尾是相应的数组.在每个级别,我还存储了该级别的字段列表.
Julia实际上没有Matlab结构,所以在Julia中最好的方法是什么?
目前,我能想到的最好的是一系列嵌套复合类型,每个类型都有两个字段.例如:
type HighFrequencyData
dateList::Array{Date, 1}
dataArray::Array{Any, 1}
end
Run Code Online (Sandbox Code Playgroud)
其中dateList存储有对应于举行Float64的阵列序列日期的列表dataArray(即,dateList与dataArray将具有相同的长度).然后:
type securitiesData
securityList::Array{String, 1}
highFrequencyArray::Array{Any, 1}
end
Run Code Online (Sandbox Code Playgroud)
其中securityList存储了与HighFrequencyData所持有的类型序列相对应的证券列表highFrequencyArray.然后:
type marketsData
marketList::Array{String, 1}
securitiesArray::Array{Any, 1}
end
Run Code Online (Sandbox Code Playgroud)
其中marketList存储了与securitiesData所持有的类型序列相对应的市场列表securitiesArray.
鉴于此,所有数据现在都可以存储在类型变量中,并在每个嵌套级别marketsData使用marketList,和查找.securityListdateList
但这感觉有点麻烦......
您的类型层次结构看起来没问题,但也许您需要的字典?
all_data = ["Market1" => {
["Sec1" => {[20140827, 20140825], [1.05, 10.6]}],
["Sec2" => {[20140827, 20140825], [1.05, 10.6]}]},
"Market2" => {
["Sec1" => {[20140827, 20140825], [1.05, 10.6]}],
["Sec2" => {[20140827, 20140825], [1.05, 10.6]}]},
...]
println(all_data["Market1"]["Sec1"] ./ all_data["Market2"]["Sec1"])
Run Code Online (Sandbox Code Playgroud)
如果您可以发布可能有用的MATLAB代码.
我会稍微重新制定你的类型,也许更简单
type TimeSeries
dates::Vector{Date}
data::Vector{Any}
end
typealias Security (String,TimeSeries)
typealias Market Vector{Security}
markets = Market[]
push!(markets, [("Sec1",TimeSeries(...)), ("Sec2",TimeSeries(...)])
Run Code Online (Sandbox Code Playgroud)
另外,请务必查看https://github.com/JuliaStats/TimeSeries.jl