2008-12-07 00:12:38 -05:00
|
|
|
! Copyright (C) 2008 John Benediktsson, Doug Coleman.
|
2008-11-07 01:36:02 -05:00
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2013-05-02 00:24:09 -04:00
|
|
|
USING: fry grouping kernel math math.statistics math.vectors
|
|
|
|
sequences ;
|
2008-09-23 13:33:36 -04:00
|
|
|
IN: math.finance
|
|
|
|
|
2012-05-04 12:40:04 -04:00
|
|
|
: sma ( seq n -- newseq )
|
|
|
|
clump [ mean ] map ;
|
|
|
|
|
2008-09-23 17:10:04 -04:00
|
|
|
<PRIVATE
|
|
|
|
|
2012-05-04 12:40:04 -04:00
|
|
|
: weighted ( prev elt a -- newelt )
|
|
|
|
[ 1 swap - * ] [ * ] bi-curry bi* + ; inline
|
2008-09-23 17:10:04 -04:00
|
|
|
|
2008-11-07 01:36:02 -05:00
|
|
|
: a ( n -- a )
|
2012-05-04 12:40:04 -04:00
|
|
|
1 + 2 swap / ; inline
|
2008-09-23 17:10:04 -04:00
|
|
|
|
|
|
|
PRIVATE>
|
2008-09-23 13:33:36 -04:00
|
|
|
|
|
|
|
: ema ( seq n -- newseq )
|
2012-05-04 12:40:04 -04:00
|
|
|
[ cut [ mean dup ] dip ] [ a ] bi
|
|
|
|
[ weighted dup ] curry map nip swap prefix ;
|
2008-09-23 13:33:36 -04:00
|
|
|
|
2012-05-03 19:31:04 -04:00
|
|
|
: dema ( seq n -- newseq )
|
2012-05-04 12:40:04 -04:00
|
|
|
[ ema ] keep [ drop 2 v*n ] [ ema ] 2bi
|
|
|
|
[ length tail* ] keep v- ;
|
2012-05-03 19:31:04 -04:00
|
|
|
|
|
|
|
: gdema ( seq n v -- newseq )
|
|
|
|
[ [ ema ] keep dupd ema ] dip
|
2012-05-04 12:40:04 -04:00
|
|
|
[ 1 + v*n ] [ v*n ] bi-curry bi*
|
|
|
|
[ length tail* ] keep v- ;
|
2012-05-03 19:31:04 -04:00
|
|
|
|
|
|
|
: tema ( seq n -- newseq )
|
|
|
|
[ ema ] keep dupd [ ema ] keep
|
2012-05-04 12:40:04 -04:00
|
|
|
[ drop [ 3 v*n ] bi@ [ length tail* ] keep v- ] [ ema nip ] 3bi
|
|
|
|
[ length tail* ] keep v+ ;
|
2012-05-03 19:31:04 -04:00
|
|
|
|
2008-09-23 13:33:36 -04:00
|
|
|
: macd ( seq n1 n2 -- newseq )
|
2008-09-23 17:10:04 -04:00
|
|
|
rot dup ema [ swap ema ] dip v- ;
|
2008-09-23 13:33:36 -04:00
|
|
|
|
|
|
|
: momentum ( seq n -- newseq )
|
2008-11-07 01:36:02 -05:00
|
|
|
[ tail-slice ] 2keep [ dup length ] dip - head-slice v- ;
|
2008-09-23 13:33:36 -04:00
|
|
|
|
2013-05-02 00:24:09 -04:00
|
|
|
: performance ( seq -- newseq )
|
|
|
|
dup first '[ _ [ - ] [ /f ] bi 100 * ] map ;
|
|
|
|
|
2008-12-07 00:05:02 -05:00
|
|
|
: monthly ( x -- y ) 12 / ; inline
|
|
|
|
|
|
|
|
: semimonthly ( x -- y ) 24 / ; inline
|
|
|
|
|
|
|
|
: biweekly ( x -- y ) 26 / ; inline
|
|
|
|
|
|
|
|
: weekly ( x -- y ) 52 / ; inline
|
|
|
|
|
|
|
|
: daily-360 ( x -- y ) 360 / ; inline
|
|
|
|
|
|
|
|
: daily-365 ( x -- y ) 365 / ; inline
|