si g n a l s i n tro d u cti o n toen viro n men t ( 50- d ay sm a ab o ve 200- d ay sm a ) make s u...

24
Introduction to signals FINANCIAL TRADING IN R Ilya Kipnis Professional Quantitative Analyst and R programmer

Upload: others

Post on 20-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

Introduction tosignals

F I N A N C I A L T R A D I N G I N R

Ilya KipnisProfessional Quantitative Analyst and Rprogrammer

Page 2: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

FINANCIAL TRADING IN R

What are signals?Signals are the interactions of:

Market data with indicators

Indicators with other indicators

Examples:

50-day MA crossing over 200-day MA

Oscillator crosses under 20

Signal is necessary (but not suf�cient) for buy/sell order

Page 3: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

FINANCIAL TRADING IN R

Using add.signal()Very similar to the process for creating indicators

Only a few signal functions

add.signal(strategy.st, name = “function",

arguments = list(arguments), label = "label")

Again, similar to apply family

Page 4: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

FINANCIAL TRADING IN R

Four types of signalssigComparison : Relationship between two indicators, returns 1 if

relationship is true

sigCrossover: Similar to sigComparison, returns 1 on the �rst

occurrence

sigThreshold: Compares range-bound indicator to a static quantity

sigFormula: Flexible signal function

Page 5: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

FINANCIAL TRADING IN R

Examples

Page 6: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

FINANCIAL TRADING IN R

Examples

Page 7: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

Let's practice!F I N A N C I A L T R A D I N G I N R

Page 8: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

sigComparison andsigCrossover

F I N A N C I A L T R A D I N G I N R

Ilya KipnisProfessional Quantitative Analyst and Rprogrammer

Page 9: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

FINANCIAL TRADING IN R

Trend indicatorssigCrossover and sigComparison

Both compare two variable quantities

Example:

shorter lookback MA crosses over longer lookback MA (50-day

versus 200-day SMA)

Page 10: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

FINANCIAL TRADING IN R

Structureadd.signal(strategy.st, name = "sigComparison",

arguments = list(columns = c("str1", "str2"),

relationship = "lt" ),

label = "siglabel")

add.signal(strategy.st, name = "sigCrossover",

arguments = list(columns = c( "str1", "str2"),

relationship = "eq"),

label = "siglabel")

“gt”, “lt”, “eq”, “lte”, “gte”

Page 11: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

FINANCIAL TRADING IN R

Structureadd.signal(strategy.st, name = "sigCrossover", arguments = list(columns = c("SMA50", "SMA200"), relationship = "gt"), label = "longfilter")

add.signal(strategy.st, name = "sigComparison", arguments = list(columns = c("SMA50", "SMA200", relationship = "lt" ), label = "filterexit")

Page 12: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

FINANCIAL TRADING IN R

Examples

Page 13: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

Let's practice!F I N A N C I A L T R A D I N G I N R

Page 14: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

sigThresholdF I N A N C I A L T R A D I N G I N R

Ilya KipnisProfessional Quantitative Analyst and Rprogrammer

Page 15: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

FINANCIAL TRADING IN R

About sigThresholddeals with bounded indicators interacting with critical (and usually

�xed) values

Examples:

when the DVO crosses under 20

on indicator with running probability value (between 0 and 1)

on rolling ratio’s that center on 0

Page 16: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

FINANCIAL TRADING IN R

Structure

add.signal(strategy.st, name = “sigThreshold",

arguments = list(column = "str1",

threshold = 20,

cross = TRUE,

relationship = "lt" ),

label = "siglabel")

cross = TRUE mimics sigCrossover

cross = FALSE mimics sigComparison

Page 17: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

FINANCIAL TRADING IN R

Examplesadd.signal(strategy.st, name = “sigThreshold",

arguments = list(column = "DVO_2_126",

threshold = 20,

cross = FALSE,

relationship = “lt"),

label = "thresholdfilter")

add.signal(strategy.st, name = “sigThreshold",

arguments = list(column = "DVO_2_126",

threshold = 80,

cross = TRUE,

relationship = "gt"),

label = "thresholdfilter")

Page 18: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

FINANCIAL TRADING IN R

Examples

Page 19: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

Let's practice!F I N A N C I A L T R A D I N G I N R

Page 20: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

sigFormulaF I N A N C I A L T R A D I N G I N R

Ilya KipnisProfessional Quantitative Analyst and Rprogrammer

Page 21: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

FINANCIAL TRADING IN R

About sigFormulaCatch-all signal allowing for combinations of signals

Uses string evaluation

Example:

ONLY act upon oscillator signaling if favorable market

environment (50-day SMA above 200-day SMA)

make sure to buy a temporary pullback, not a large decline

Page 22: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

FINANCIAL TRADING IN R

Structureadd.signal(strategy.st, name = "sigFormula", arguments = list(formula = "statement1 & statement2”, cross = TRUE), label = "yourlabel")

Base R: if( statement 1 and statement 2)

add.signal(strategy.st, name = "sigFormula", arguments = list(formula = "regular logical statement inside an if statement", cross = TRUE), label = "yourlabel")

Page 23: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

FINANCIAL TRADING IN R

Example

add.signal(strategy.st, name = “sigFormula",

arguments = list(formula = "longthreshold &

longfilter", cross = TRUE),

label = "longentry")

make sure that the columns in the logical statement are in the

strategy prior to the sigFormula signal call

Page 24: si g n a l s I n tro d u cti o n toen viro n men t ( 50- d ay SM A ab o ve 200- d ay SM A ) make s u re t o b u y a t emp o rary p u llb ack, n o t a large d eclin e F I NA NCI A L

Let's practice!F I N A N C I A L T R A D I N G I N R