Code covered by the BSD License  

Highlights from
Quandl API Access

from Quandl API Access by Ray
Access and download data from the Quandl database from inside the MATLAB console.

quandl(code, varargin)
% Package: Quandl
% Function: quandl
% Pulls data from the Quandl API.
% Inputs:
% Required:
% code - Quandl code of dataset wanted. String.
% Optional:
% start_date - Date of first data point wanted. String. 'yyyy-mm-dd'
% end_date - Date of last data point wanted. String. 'yyyy-mm-dd'
% transformation - Type of transformation applied to data. String. 'diff','rdiff','cumul','normalize'
% collapse - Change frequency of data. String. 'weekly','monthly','quarterly','annual'
% rows - Number of dates returned. Integer.
% authcode - Authentication token used for continued API access. String.
% Returns:
% timeseries - If only one time series in the dataset.
% tscollection - If more than one time series in the dataset.

function [tsc] = quandl(code, varargin)
    % Parse input.
    p = inputParser;
    p.addRequired('code');
    p.addOptional('start_date',[]);
    p.addOptional('end_date',[]);
    p.addOptional('transformation',[]);
    p.addOptional('collapse',[]);
    p.addOptional('rows',[]);
    p.addOptional('authcode',[]);
    p.parse(code,varargin{:})
    start_date = p.Results.start_date;
    end_date = p.Results.end_date;
    transformation = p.Results.transformation;
    collapse = p.Results.collapse;
    rows = p.Results.rows;
    authcode = p.Results.authcode;
    % Defining auth_token to be used for mutiple function calls.
    persistent auth_token;
    
    string = strcat('http://www.quandl.com/api/v1/datasets/',code,'.csv?sort_order=asc');
    % Check for authetication token in inputs or in memory.
    if size(authcode) == 0
        if isempty(auth_token)
            'It would appear you arent using an authentication token. Please visit http://www.quandl.com/help/r or your usage may be limited.'
        else
            string = strcat(string, '&auth_token=',auth_token);
        end
    else
        auth_token = authcode;
        string = strcat(string, '&auth_token=',authcode);
    end
    % Adding API options.
    if size(start_date)
        string = strcat(string, '&trim_start=', start_date);
    end
    if size(end_date)
        string = strcat(string, '&trim_end=',end_date);
    end
    if size(transformation)
        string = strcat(string, '&transformation=',transformation);
    end
    if size(collapse)
        string = strcat(string, '&collapse=',collapse);
    end
    if size(rows)
        string = strcat(string, '&rows=',num2str(rows));
    end
    % Loading csv and checking if it exists.
    try
        csv = urlread(string);
    catch
        error('Quandl:code','Code does not exist.')
    end
    % Parsing input to be passed as a time series.
    csv = strread(csv,'%s','delimiter','\n');

    headers = strread(csv{1},'%s','delimiter',',');
    rowz = length(csv)-1;
    columns = length(headers);

    data = zeros(rowz,columns-1);
    for i = 1:rowz
        temp = str2num(csv{i+1}(12:end));
        if i == 1
            DATE = csv{i+1}(1:10);
        else
            DATE = char(DATE,csv{i+1}(1:10));
        end
        data(i,:) = temp;
    end
    DATE = cellstr(DATE);
    % Creating time series from raw data.
    ts = timeseries(data(:,1),DATE,'name',headers{2});
    if columns > 2
        tsc = tscollection({ts},'name',code);
        for i = 2:(columns-1)
            tsc = addts(tsc,data(:,i),headers{i+1});
        end
    else
        tsc = ts;
    end
end

Contact us