# Best way to handle multiple time series in Julia?

**URL:** <https://discourse.julialang.org/t/best-way-to-handle-multiple-time-series-in-julia/85044>\
**Category:** General Usage\
**Created:** [July 31, 2022, 1:19am UTC](https://discourse.julialang.org/t/best-way-to-handle-multiple-time-series-in-julia/85044 "2022-07-31T01:19:08Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![ejlongman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ejlongman/32/36801_2.png) [@ejlongman](https://discourse.julialang.org/u/ejlongman)\
**Post date:** [July 31, 2022, 1:19am UTC](https://discourse.julialang.org/t/best-way-to-handle-multiple-time-series-in-julia/85044/1 "2022-07-31T01:19:08Z")

</div>

Is the general consensus that using loops is “more Julian” than storing multiple time series in a matrix?

Context: If I want to generate and plot 3 time series, my Python-ian instinct is to store them in a matrix. But Quant Econ uses loops. Does this approach generalize? Is this because array dimensions are a bit unintuitive in Julia?

αs = [0.0, 0.8, 0.98]  
n = 200  
p = plot() # naming a plot to add to

for α in αs  
x = zeros(n + 1)  
x[1] = 0.0  
for t in 1:n  
x[t+1] = α \* x[t] + randn()  
end  
plot!(p, x, label = “alpha = $α”) # add to plot p  
end  
p # display plot

---

<div class="post-metadata">

**Author:** ![ejlongman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ejlongman/32/36801_2.png) [@ejlongman](https://discourse.julialang.org/u/ejlongman)\
**Post date:** [July 31, 2022, 2:13am UTC](https://discourse.julialang.org/t/best-way-to-handle-multiple-time-series-in-julia/85044/2 "2022-07-31T02:13:01Z")

</div>

My first thought was to instead do something like:

function plot\_corr\_ts(α,N)  
numseries = length(α)  
x = zeros(N+1,numseries)

```
for s in 1:numseries
    for t in axes(x,1)
        ε = randn()
        println(α*x[t,s] + ε)
    end
end 
plot(x, seriestype = :line, title = "A Correlated Time Series")

```

end

plot\_corr\_ts([0,.8,.98],3)

---

<div class="post-metadata">

**Author:** ![stillyslalom](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stillyslalom/32/45687_2.png) [@stillyslalom](https://discourse.julialang.org/u/stillyslalom)\
**Post date:** [July 31, 2022, 2:43am UTC](https://discourse.julialang.org/t/best-way-to-handle-multiple-time-series-in-julia/85044/3 "2022-07-31T02:43:45Z")

</div>

The truly Julian approach is to define a custom type that has the desired behavior. Does TimeSeries.jl work for your application? [Plotting · TimeSeries.jl](https://juliastats.org/TimeSeries.jl/dev/plotting/)

---

<div class="post-metadata">

**Author:** ![ejlongman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ejlongman/32/36801_2.png) [@ejlongman](https://discourse.julialang.org/u/ejlongman)\
**Post date:** [July 31, 2022, 2:59am UTC](https://discourse.julialang.org/t/best-way-to-handle-multiple-time-series-in-julia/85044/4 "2022-07-31T02:59:32Z")

</div>

Yes it looks like it does. Thanks!

---

<div class="post-metadata">

**Author:** ![Paul\_Soderlind](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/paul_soderlind/32/1753_2.png) [@Paul\_Soderlind](https://discourse.julialang.org/u/Paul_Soderlind)\
**Post date:** [July 31, 2022, 11:53am UTC](https://discourse.julialang.org/t/best-way-to-handle-multiple-time-series-in-julia/85044/5 "2022-07-31T11:53:54Z")

</div>

> [@ejlongman](#):
>
> Is the general consensus that using loops is “more Julian” than storing multiple time series in a matrix?

Storing in a matrix is fine. Just create the matrix first and then fill it. Sure, you could do more sophisticated things and they may pay off in very large computations. For simple stuff, keep it simple. For instance, `x[t+1,s]` is just fine.
