2013-07-14 4 views
1

Я пытаюсь загрузить всю базу данных TAQ на WRDS с использованием SAS. Folloing это код SAS дается человеку от технической поддержки WRDS:Загрузить данные из TAQ с помощью SAS

%let wrds=wrds.wharton.upenn.edu 4016; 
options comamid=TCP remote=WRDS; 
signon username=_prompt_; 

%macro taq_daily_dataset_list(type=ctm,begyyyymmdd=20100101,endyyyymmdd=20111231)/des="Autogenerated list of needed Daily TAQ datasets"; 
    %let type=%lowcase(&type); 
    /* Get SAS date values for date range endpoints */ 
    %let begdate = %sysfunc(inputn(&begyyyymmdd,yymmdd8.)); 
    %let enddate = %sysfunc(inputn(&endyyyymmdd,yymmdd8.)); 
     %do d=&begdate %to &enddate /** For each date in the DATE range */; 
      %let yyyymmdd=%sysfunc(putn(&d,yymmddn8.)); 
      /*If the corresponding dataset exists, add it to the list */ 
      %if %sysfunc(exist(taqmsec.&type._&yyyymmdd)) %then taqmsec.&type._&yyyymmdd; 
     %end; 
%mend; 

* using this macro; 
data my_output; 
    set %taq_daily_dataset_list(type=ctm,begyyyymmdd=20100101,endyyyymmdd=20121231) open=defer; 
run; 

Я попытался запустить это в SAS, но он дал мне Erorr «нет SET DEFAULT ВВОД ДАННЫХ (_LAST_IS_NULL)». Я не знаю, как использовать SAS, даже немного. Все, что я хочу, это загрузка базы данных.

Действительно оценен, если кто-то может помочь мне уйти отсюда.

+0

Эта ошибка не соответствует вашему коду. Единственное, что явно неверно, так это то, что вы не определяете libname taqmsec, но это может произойти в файле tcp. Однако вам может понадобиться сценарий подключения tcp. В любом случае, эта ошибка подразумевает, что у вас есть что-то вроде сортировки proc (или любой proc) без параметра data =. – Joe

ответ

3

Код, который вы используете, - это сеанс SAS/CONNECT с вашего компьютера на удаленный сервер. После подключения я предполагаю, что имя lib TAQMSEC определено на сервере. Итак, я предполагаю, что вам нужно «удалиться отправить» код (который создаст набор данных SAS my_output в библиотеке WORK сервера). Затем вы можете использовать PROC DOWNLOAD, чтобы скопировать его на локальном компьютере:

%let wrds=wrds.wharton.upenn.edu 4016; 
options comamid=TCP remote=WRDS; 
signon username=_prompt_; 

RSUBMIT; /* Execute following on server after logging in */ 

%macro taq_daily_dataset_list(type=ctm,begyyyymmdd=20100101,endyyyymmdd=20111231)/des="Autogenerated list of needed Daily TAQ datasets"; 
    %let type=%lowcase(&type); 
    /* Get SAS date values for date range endpoints */ 
    %let begdate = %sysfunc(inputn(&begyyyymmdd,yymmdd8.)); 
    %let enddate = %sysfunc(inputn(&endyyyymmdd,yymmdd8.)); 
     %do d=&begdate %to &enddate /** For each date in the DATE range */; 
      %let yyyymmdd=%sysfunc(putn(&d,yymmddn8.)); 
      /*If the corresponding dataset exists, add it to the list */ 
      %if %sysfunc(exist(taqmsec.&type._&yyyymmdd)) %then taqmsec.&type._&yyyymmdd; 
     %end; 
%mend; 

* using this macro; 
data my_output; 
    set %taq_daily_dataset_list(type=ctm,begyyyymmdd=20100101,endyyyymmdd=20121231) open=defer; 
run; 

/* Download result to your computer */ 
proc download data=my_output; 
run; 

ENDRSUBMIT; /* Signals end of processing on remote server */ 

Любые заявления программирования, которые появляются между командами RSUBMIT и ENDRSUBMIT выполняются на удаленном сервере. Обратите внимание, что макрос создается и выполняется удаленным сеансом SAS.

Не забудьте использовать команду signoff, чтобы отключиться от сервера после получения необходимых данных.

0

Я не говорю SAS, поэтому я не могу прокомментировать ваш код, но я не признаю «taqmsec» в качестве одного из основных файлов. Данные Consolidated Trades хранятся в файлах формы taq.CT_YYYYMMDD, а файлы консолидированных котировок - taq.CQ_YYYYMMDD. Первая доступная дата них 19930104.

назад, когда у меня был счет, я написал несколько сценариев Python, чтобы автоматизировать процесс загрузки данных в объеме от WRDS: https://github.com/jbrockmendel/pywrds

Сценарии, которые пытаются автоматической настройки Ключи SSH не проверены (пожалуйста, пришлите мне примечание, если вы хотите помочь мне проверить/исправить их), но ядро ​​хорошо проверено. Если у вас есть учетная запись и ключ проверки подлинности на основе набора, вы можете запустить:

import pywrds 

# Download the TAQ Consolidated Trades (TAQ_CT) file for 1993-06-12. 
# y = [num_files, num_rows, paramiko_ssh, paramiko_sftp, time_elapsed] 

y = pywrds.get_wrds('taq.ct', 1993, 06, 12) 

# Loop over all available dates to download in bulk. 
# The script is moderately smart about picking up 
# unfinished loops where they left off. 
# y = [num_files, time_elapsed] 

y = pywrds.wrds_loop('taq.ct') 

# Find out what the darn names of the available TAQ files are. 
# y = [file_list, paramiko_ssh, paramiko_sftp] 

y = pywrds.find_wrds('taq') 

файлы начинаются с нескольких десятков мегабайт за штуку в 1993 году и вырастет до ~ 1 Гб за штуку для taq.ct и> 5ГБ для taq.cq. Стандартные учетные записи WRDS ограничивают ваше пространство для хранения до 1 ГБ, поэтому, пытаясь запросить все, скажем, taq.cq_20050401 поместит укороченный файл в ваш каталог. pywrds.get_wrds разбивает эти большие запросы и перебирает более мелкие файлы, а затем рекомбинирует их после того, как все они загружены.

Внимание: wrds_loop также удаляет эти файлы из вашего каталога на сервере после их загрузки. Он также запускает rm wrds_export*, так как все файлы SAS, которые он загружает, начинаются с «wrds_export». Удостоверьтесь, что у вас нет ничего другого по той же схеме.

Те же команды также работают с Compustat (comp.fundq, comp.g_fundq, ...), CRSP (crsp.msf, crsp.dsf, ...), OptionMetrics (optionm.optionm_opprcd1996, optionm.opprcd1997, ...), IBES, TFN, ...

# Also works with other WRDS datasets. 
# The day, month, and year arguments are optional. 

# Get the OptionMetrics pricing file for March 1993 
y = pywrds.get_wrds('optionm.opprcd', 1993, 3) 

# Get the Compustat Fundamentals Quarterly file for 1997 
y = pywrds.get_wrds('comp.fundq', 1997) 

# Get the CRSP Monthly Stock File for all available years 
y = pywrds.get_wrds('crsp.msf')