Matlab will always have its proponents, that will use it no matter what, but if Julia keeps encroaching on this territory, I'm not sure where that leaves Ocatve.
To the model discussed in this paper, check out this series of blog posts for more information:
http://libertystreeteconomics.newyorkfed.org/2014/09/forecas...
Essentially the model is a work in progress that is continually updated each quarter. It attempts to model at a macro economic level, the interactions between Banks, consumers, Companies, Governments and households.
Once the model has solved for the general equilibrium of how those 5 agencies interact the model can then be used to "shock" a particular factor, such as interest rates, to determine how this might affect the interaction between these agents.
Its a fairly well respected model, and the fact that the US is one of the few countries to release such a large amount of financial data is one reason why the US is still a leader in economic theory.
It's not a competition. Julia is our friend, not a rival to Octave. We're on good terms with their developers. Occasionally we share ideas and patches back and forth when it makes sense. They've asked me for help with their Octave benchmark and I've gladly provided it.
Octave being unnecessary is Octave's ultimate goal. When nobody cares about Matlab, probably nobody will care about Octave either. But as long as people care about Matlab, Octave will be relevant. Or perhaps, in a perfect world, enough people will stop caring about Matlab that Octave can start leading in fixing the biggest stupidities in the programming language (we already do this to some degree, but keep relenting and replicating Matlab's bugs because code depends on those bugs).
If Julia is gaining the minds of people in scientific computing, great. It's going to take them away from Matlab and Octave to equal degree. If we can all do our computing unfettered by proprietary licenses, I don't care if it means we end up using Octave or Julia as long as we stop using Matlab.
And many of Matlab's alleged proponents keep turning to Octave. Octave still fills a niche that Julia does not: being able to use Matlab code freely.
Too often large enterprises and projects forget the reason they were started and simply try to keep themselves relevant.
That said, I think the future lies in porting over octave libraries and plotting capabilities to Julia.
I learned Matlab from my Econ 101 professor 8 years ago. He was a big Matlab proponent, and he knew all the econ tools inside out.
We kept in touch, since he has been one of the best professors I've ever had. So, fast forward to 2 years ago, I sent him an email asking about this [1] Quantitative Economics course by Sargent and Stachurski based on python. He told me that it looked interesting and that he would give it a try and tell me what he thought. This was his first approach to Python.
Two months later he sends me an email telling me that he's ditched Matlab for good, he's taken a couple MOOC python courses and that he is having a lot of fun with Python. He also praised the community and all the open source tools. He also told me to get away from the Sargent and Stachurski course, that they add too much complexity to the explanations just for the sake of looking more Nobel-prize-winner like.
That's really good feedback for anybody thinking of attempting that course. Does your professor recommend an accompanying course to Sargent and Stachurski's quantitative economics course? I haven't seen many other courses that provide code fragments to run, so S&S's course still has a lot going for it in that regard.
I honestly can't understand why. I'm currently in a computer vision class that uses Matlab, and it's literally the worst language I've ever used in my life. The design is nonsensical, bordering on malicious
I've always thought that the biggest problem with python was that as programs get bigger, you're likely to run into some confusion due to the lack of static typing and substantial use of implicit conversion (e.g. "Truthy" and "falsy" values), but python has nothing at all on Matlab.
Just last night, a matrix I constructed using the expression "[x, y, (x+scale), (y+scale)]" inexplicably had dimensions 1x8 instead of the visually obvious 1x4, but only after a few hours of matlab slowly evaluating this expression thousands of times without any trouble. I suspect this has something to do with matlab's horrible ambiguous matrix concatenation syntax.
The answer is fairly obvious though, isn't it? For scientists or novice programmers wanting to do some numerically intensive work, Matlab has typically offered one of the quickest (in time-to-solution) prototyping platforms. One of the keys being that you can get started very quickly, with minimal setup (besides the expensive license and installation, something most academics need not worry about). As a former academic programmer and now a consultant that helps companies commercialize such prototypes, I understand your pain, but at the same time I completely understand why a physicist, imaging scientist, or finance major ends up using Matlab over something like C++ or Python. Same goes for LabView, and if you despise Matlab, I challenge you to give LabView a whirl. The gap between the Matlabs and Labviews of the world and the other programming languages is closing in terms of ease of use and setup time, but we're not there yet and also momentum shifts on this type of thing take a loooong time. If you come into a lab and are working on a research project that was started in Matlab, odds are, in the interest of finishing your thesis on time, you're unlikely to port it to another language, even if you have the skill to do so.
There are many research institutions and workplaces where the cost of the tool isn't really thought about at all. In fact, the cost of Matlab and toolbox fees is a small fraction of a senior scientist/engineer's total compensation.
The main competitor is Python. However, using a general purpose programming language is often too hard for non-programming oriented scientists. They are not able to compile a Python package on Windows, never mind actually package and distribute their work to colleagues. On Windows, if the package isn't in one of the distributions like Anaconda, it may as well not exist.
I agree with all you said mind you, and could rant even more about Matlab, just giving a possible explanation for how Matlab parses the expression.
Because Julia claims to be much faster than LuaJIT, yet continually - people find that LuaJIT (not Julia) is much faster in real world test [3].
Does anyone else have experience in Julia vs LuaJIT?
[1] http://julialang.org/#high-performance-jit-compiler
[2] http://luajit.org/performance_x86.html
[3] http://bayesanalytic.com/lua_jit_faster_than_julia_stock_pre...
I would be willing to bet there is a lot of fat to be trimmed if you can't get close to LuaJIT unless SIMD is involved. Have you tried profiling your Julia code to see where the problem is?
https://github.com/FRBNY-DSGE/DSGE.jl/blob/master/doc/Matlab...
"Differences between the behavior of MATLAB and Julia’s core linear algebra libraries led to many roadblocks in the development of DSGE.jl. Julia uses multithreaded BLAS functions for some linear algebra functions. Using a different number of threads can change the results of matrix decomposition when the matrix is singular. This indeterminacy caused significant problems for our testing suite, both in comparing output matrices to MATLAB results and in testing for reproducibility among Julia outputs."
Kudos to them for taking this on, I think.
[I see you're from Iowa State. I'm posting this from the house I bought from John Crespi a few months ago.]
That said, I have no idea if this will be that influential on economists changing their tools, or the tools that they teach to their students. People tend to stick with tools that they know and like. But it's very possible that this will help Julia in the eyes of people getting into the field choosing their first programming language.
To be brutally honest, this is not a big achievement. You should be able to rapidly speed up any matlab model by porting it into pretty much any other language due to well known issues with matlab. Being able to run DSGE models more quickly is important to economists because it allows them to be better 'callibrated' - which is to say that the economists essentially tweak the models for the country they are looking at, until they fit the known data over an acceptable time period. (They don't try to hide this btw. there are scores of papers on model calibration approaches.)
A good example of what this leads to is the one for Iceland:
http://www.sedlabanki.is/lisalib/getfile.aspx?itemid=8077
Notice that this is published in 2010, but for some strange reason the charts (p57 onwards) all stop in 2005.
It's over fitting to the curve on computer assisted steroids.
Do the simulations take too long?
That's not to say that the NY Fed takes the model's recommendations uncritically and assumes that the models are perfect or the recommendations are the truth, because that would be nuts. Just that this class of models is one of the few ways to use "the data" to provide guidance about policy decisions.
The people who've developed the NY Fed's DSGE model are some of the absolute top people working on these models. It's based on a lot of academic research and a lot of research published in top journals by people at the NY Fed involved in building the model. Other banks have their own models, but I suspect this one is the highest profile. (Again, not precisely my field of research, so I could be missing one or two.)
So, to get around to answering your question. For academic research in economics, this is as "production level" as it gets. Is this the same as using Julia for algorithmic trading? No. The NY Fed's not running this model in real time, and if something crashes then they can restart it. But I think this is huge for Julia's adoption in economic research.
(For a pdf with more about the modeling strategy itself: https://www.newyorkfed.org/medialibrary/media/research/staff... but that is 2 years old now.)
I don't like Python as a language that much (I prefer Lisps or MLs), but I reckon its libraries are fantastic: PyMC, Theano, NumPy... And loads of general-purpose stuff.
Examples
https://github.com/FRBNY-DSGE/DSGE.jl/blob/master/src/solve/...
https://github.com/FRBNY-DSGE/DSGE.jl/blob/master/src/solve/...
Single character Greek variables don't seem better than single character ASCII for readability.
See here: https://github.com/mbostock/d3/blob/master/src/geo/centroid....
EDIT: downvotes? wtf?
EDIT: Oh, I see there are multiline comments.
edit: with examples. this code, all the way up to line 48 looks like some comments, but also a bunch of sentences without the comment characters.
https://github.com/FRBNY-DSGE/DSGE.jl/blob/master/src/solve/...