2013-02-14 2 views
2

фонаКак установить фьючерсные инструменты в FinancialInstrument для поиска данных из CSIdata

Я пытаюсь настроить свою среду торговли анализа. Я использую некоторые правила, основанные на правилах фьючерсов на разных брокеров, и пытаюсь объединить сделки с разными брокерами в одном месте. Я использую пакет blotter в качестве основного инструмента для анализа.

Идея заключается в использовании blotter и PerformanceAnalytics для анализа живых выступлений различных стратегий. Я бегу.

Проблема под рукой

Мой источник будущих данных EOD является CSIData. Все цены на EOD OHLC для этих фьючерсов хранятся в формате CSV в следующей структуре каталогов. Для каждого будущего есть отдельный каталог, и каждый контракт будущего имеет один файл csv с ценой серии OHLC.

| 
+---AD 
|  AD_201203.TXT 
|  AD_201206.TXT 
|  AD_201209.TXT 
|  AD_201212.TXT 
|  AD_201303.TXT 
|  AD_201306.TXT 
|  AD_201309.TXT 
|  AD_201312.TXT 
|  AD_201403.TXT 
|  AD_201406.TXT 
|  AD_54.TXT 
...  
+---BO2 
|  BO2195012.TXT 
|  BO2201201.TXT 
|  BO2201203.TXT 
|  BO2201205.TXT 
|  BO2201207.TXT 
|  BO2201208.TXT 
|  BO2201209.TXT 
|  BO2201210.TXT 
|  BO2201212.TXT 
|  BO2201301.TXT 

... 

мне удалось определить корневые контракты на все фьючерсы (например, в описанном выше случае AD, BO2 и т.д.) Я буду использовать в FinancialInstrument с символами CSIData в качестве первичных идентификаторов.

Теперь я пытаюсь определить, как определить все конкретные индивидуальные контракты на будущее (например, AD_201203, AD_201206 и т. Д.) И настроить их поиск, используя setSymbolLookup.FI.

Любые указатели на то, как это сделать?

Чтобы настроить индивидуальные контракты на будущее, я просмотрел ?future_series и ?build_series_symbols, однако суффиксы, которые они поддерживают, выглядят только в формате будущего месяца. Поэтому у меня есть чувство, что я остаюсь с настройкой каждого отдельного будущего контракта вручную. например

build_series_symbols(data.frame(primary_id=c('ES','NQ'), month_cycle=c('H,M,U,Z'), yearlist = c(10,11))) 
[1] "ESH0" "ESM0" "ESU0" "ESZ0" "NQH0" "NQM0" "NQU0" "NQZ0" "ESH1" "ESM1" "ESU1" "ESZ1" "NQH1" "NQM1" "NQU1" "NQZ1" 

Я понятия не имею, где начать копать для моей второй части моего вопроса то есть Ценообразование поиска для этих фьючерсов от CSI.

PS: Если это неправильный форум для такого рода вопросов, я рад, если вы перейдете в правую часть или даже попросите совершенно другой форум в целом.

PPS: Может ли кто-нибудь с более высокой репутацией отметить этот вопрос с помощью FinancialInstrument и CSIdata? Благодаря!

+0

смог получить данные с Вы уже существующий метод 'getSymbols'" без установки значений по умолчанию (т. е. работает ли он без использования 'setSymbolLookup' или' setSymbolLookup.FI')? – GSee

ответ

1

Первая часть просто работает.

R> currency("USD") 
[1] "USD" 
R> future("AD", "USD", 100000) 
[1] "AD" 
Warning message: 
In future("AD", "USD", 1e+05) : 
    underlying_id should only be NULL for cash-settled futures 
R> future_series("AD_201206", expires="2012-06-18") 
[1] "AD_201206" 
R> getInstrument("AD_201206") 
primary_id :"AD_201206" 
currency :"USD" 
multiplier :1e+05 
tick_size : NULL 
identifiers: list() 
type  :"future_series" "future" 
root_id :"AD" 
suffix_id :"201206" 
expires :"2012-06-18" 

Что касается второй части, я никогда не использовал setSymbolLookup.FI. Я либо использовал бы setSymbolLookup напрямую, либо установил атрибут прибора src, если бы собирался пройти этот маршрут.

Тем не менее, я бы, вероятно, сделал способ getSymbols, возможно getSymbols.mycsv, который знает, как найти ваши данные, если вы дадите ему аргумент dir. Тогда я бы просто setDefaults на вашем методе getSymbols (предполагая, что именно так хранятся большинство ваших данных).

Я сохраняю данные с saveSymbols.days() и ежедневно использую getSymbols.FI.Я думаю, что было бы не так много усилий, чтобы настроить getSymbols.FI на чтение файлов csv вместо файлов RData. Итак, я предлагаю посмотреть на этот код.

Тогда вы можете просто

setDefaults("getSymbols", src="mycsv") 
setDefaults("getSymbols.mycsv", dir="path/to/dir") 

Или, если вы предпочитаете

setSymbolLookup(AD_201206=list(src="mycsv", dir="/path/to/dir")) 

или (по существу, одно и то же)

instrument_attr("AD_201206", "src", list(src="mycsv", dir="/path/to/dir") 
+0

Спасибо Гаретту, позвольте мне пообщаться с вашими предложениями и сообщить о моих выводах. –

+0

@geektrader, ознакомьтесь с демо-справочником FinancialInstrument, а также примерами в: getSymbols.FI,? SaveSymbols.days и? Instrument_attr – GSee

+0

@geektrader, я неправильно понял часть вашего вопроса. На самом деле я не использую 'build_series_symbols()'. Вместо этого я использую 'twsInstrument :: future_id', но он не поддерживает ваш формат YYYYMM, так что вам нужно будет создавать символы, используя' paste' (или 'sprintf') и' seq' – GSee