Working with an article on implementing the Kelly Criterion in Python ( http://quantfiction.com/2018/05/06/position-sizing-for-practitioners-part-1-beyond-kelly/ ), I first, lazily, translated some Python code like this: kellyFraction=: 3 : 0 returns=. y losses=. }.losses [ 'losses wins'=. (0,returns>0) </. 0,returns R=. ((+/%#) wins) % |(+/%#) losses [ W=. (#wins) % #returns W-(1-W)%R ) kellyFraction 2 _1 0.25
Reworking the code to be more J-like, I came up with this version: kellyFraction=: 3 : 0 'losses wins'=. }.&.>(0 1,y>0) </. 0 0,y ((#wins) % #y) ([-] %~ [: -.[) ((+/%#) wins) % |(+/%#) losses ) The partitioning of losses and wins seems a bit awkward. Part of the awkwardness is the prepending I do (0 1,... and 0 0,...) to force the losses and wins to be in the expected order. However, it also seems that there may be some way to apply the dyadic, tacit expression on the last line using "key" (/.) directly but I don't see how. Am I expecting too much here? -- Devon McCormick, CFA Quantitative Consultant ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
