]> gitweb.factorcode.org Git - factor.git/blob - extra/math/finance/finance.factor
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / extra / math / finance / finance.factor
1 ! Copyright (C) 2008 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
3
4 USING: arrays assocs fry kernel grouping math math.statistics math.vectors sequences ;
5
6 IN: math.finance
7
8 : enumerate ( seq -- newseq )
9     <enum> >alist ;
10
11 <PRIVATE
12
13 : weighted ( x y a -- z ) 
14     tuck [ * ] [ 1 swap - * ] 2bi* + ;
15
16 : a ( n -- a ) 
17     1 + 2 swap / ;
18
19 : first-rest ( seq -- first rest )
20     [ first ] keep 1 tail-slice ;
21
22 PRIVATE>
23
24 : ema ( seq n -- newseq )
25     a swap first-rest swap '[ [ dup ] 2dip swap rot weighted ] accumulate 2nip ;
26
27 : sma ( seq n -- newseq )
28     clump [ mean ] map ;
29
30 : macd ( seq n1 n2 -- newseq )
31     rot dup ema [ swap ema ] dip v- ;
32
33 : momentum ( seq n -- newseq )
34     2dup tail-slice -rot swap [ length ] keep
35     [ - neg ] dip swap head-slice v- ;
36
37