Как вариант по предыдущему вопросу, я хотел бы знать, как реализовать период ожидания, используя пакет квантстрат, который предотвращает обновление портфеля между периодами нескольких акций, несмотря на сигналы (здесь пороги пересечения).Холдинг портфелей за месяц/квартал/год в квантстрате
я попытался два метода, оба потерпел неудачу:
добавлен столбец в наличии данных, указывающий четверти/семестры/года с 1, используется с add.rule с именем = «ruleSignal»,
использовать add.rule type = "rebalance" и аргумент relabance_on = "quarters".
Вот код в quantstrat:
Asda в
## Signal 1: rank inferior to N
stratjt=add.signal(strategy=stratjt, name="sigThreshold",
arguments=list(threshold=N, column="Rank",
relationship="lte",cross=FALSE),
label="Lower.dcl.thres")
## Signal 2: rank superior to N
stratjt <- add.signal(strategy=stratjt, name="sigThreshold",
arguments=list(threshold=N, column="Rank",
relationship="gt", cross=FALSE),
label="Higher.dcl.thres")
# Rule 1: First attempt to add rebalance rule based on extra signal column
#stratjt <- add.rule(strategy=stratjt, name='ruleSignal',
# arguments = list(sigcol="Rebalance_on", sigval=TRUE,
# orderqty=1, ordertype='market',
# orderside='long', pricemethod='market',
# replace=FALSE, osFUN=osMaxPos),
# type='enter', path.dep=TRUE)
# Rule 1: Second attempt to add rebalance rule using the "rebalance" rule type
stratjt <- add.rule(strategy=stratjt, name='ruleSignal',
arguments = list(rebalance_on="quarters"),
type='rebalance', path.dep=TRUE)
# Rule 2: Enter rule when below threshold
stratjt <- add.rule(strategy=stratjt, name='ruleSignal',
arguments = list(sigcol="Lower.dcl.thres", sigval=TRUE,
orderqty=max.size, ordertype='market',
orderside='long', pricemethod='market',
replace=FALSE, osFUN=osMaxPos),
type='enter', path.dep=TRUE)
# Rule 3: add exit rule when above threshold
stratjt <- add.rule(strategy = stratjt, name='ruleSignal',
arguments = list(sigcol="Higher.dcl.thres", sigval=TRUE,
orderqty='all', ordertype='market',
orderside='long', pricemethod='market',
replace=FALSE),
type='exit', path.dep=TRUE)
Примечание: Я также использовал функцию applyStrategy.rebalance.
Вот часть вывода:
[1] "2000-04-30 00:00:00 Vivendi -1 @ 99.2256"
[1] "2002-11-30 00:00:00 Vivendi 1 @ 16.2966"
[1] "2003-02-28 00:00:00 Vivendi -1 @ 14.0564"
[1] "2003-11-30 00:00:00 Vivendi 1 @ 22.9647"
[1] "2004-01-31 00:00:00 Vivendi -1 @ 26.3656"
[1] "2004-02-29 00:00:00 Vivendi 1 @ 28.7848"
[1] "2004-03-31 00:00:00 Vivendi -1 @ 26.2421"
[1] "2006-05-31 00:00:00 Vivendi 1 @ 35.8552"
Как вы можете видеть, торги продолжают иметь место между четвертями, в то время как я хотел бы осуществить сделки только в новых кварталах или семестрах, и т.д. ... Любых Помогите оценить.
Приветствия, Майк