如何在Julia中存储具有树状结构的数据

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(即,dateListdataArray将具有相同的长度).然后:

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

但这感觉有点麻烦......

Iai*_*ing 5

您的类型层次结构看起来没问题,但也许您需要的字典?

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