Skip to content

Instantly share code, notes, and snippets.

@caub
caub / KLRS.md
Last active August 29, 2015 13:55
Kernel Recursive Least Square using JSAT https://code.google.com/p/java-statistical-analysis-tool/, and test on Santa Fe laser data

result

NMSE = 0.039

@caub
caub / NNet.md
Last active August 29, 2015 13:55
Neural Net test on Santa Fe laser data with code.google.com/p/java-statistical-analysis-tool and sourceforge.net/projects/jarbm

RBMNet

nmse = 0.095

@caub
caub / Http-test.mq4
Last active August 29, 2015 13:56
Small MT4 (http://docs.mql4.com/) script for orders copying between 2 accounts
#include <http51.mqh>
extern string url = "http://localhost:8080/orders";
//this scripts sends an http post containing orders info each tick to this url
int start() {
string params [0,2];
int status[1]; // HTTP Status code
int total=OrdersTotal();
@caub
caub / santa-fe.r
Last active August 29, 2015 13:56
require(nnet)
require(caret)
y = read.csv('http://www-psych.stanford.edu/~andreas/Time-Series/SantaFe/A.dat', header=F)
y2 = read.csv('http://www-psych.stanford.edu/~andreas/Time-Series/SantaFe/A.cont', header=F)
k = 40
n=100
y = y$V1/256
y2 = y2$V1/256
dat = sapply(1:k, function(a) c(rep(NA,a),y[1:(length(y)-a)]) )
@caub
caub / knapsack01.m
Last active August 29, 2015 13:58
an interview question
% problem: we have a result, and many elements, find all combinations that sum up to the result
function sol = knapsack01(maxCapacity, items)
% knapsack problem with variables in {0,1}
% Naive solution is O(n!), knapsack implementation is O(n*m) where n is
% items length and m is weights length
@caub
caub / Zigzag.md
Last active August 29, 2015 13:58
zigzag chart indicator, a piecewise linear curve fit with alternate slopes (up, down, up, down...), used here to detect double-top and double-bottom patterns http://en.wikipedia.org/wiki/Chart_pattern

zigzag

@caub
caub / rsi-bt.py
Last active August 29, 2015 14:00
from scipy import *
M = 22 #ma for rsi
N = 14 #rsi loopback
thresh = [20,80] #rsi thresholds
cost = 0.0001 # cost per trade (spread)
price = 1.3 + 0.1*randn(100) + sin(linspace(0,10,100))
ma = ema(price, M)
ri = rsindex(price-ma, N)
@caub
caub / polyMultiFeatures.m
Created April 28, 2014 03:22
Combinatorics for generating polynomial terms of degree <=k
function [ as_ ] = polyMultiFeatures( items, k )
as = [];
function recurse(a, i)
% we should optimize and early stop a with length>k
if i>size(items,2)
if size(a,2)<=k
as{end+1} = a;
end
return;
end
@caub
caub / bordereffects.md
Last active August 29, 2015 14:00
Border effects, the importance of padding method

padding in green without padding, in red with symmetric padding

% generate a  noisy signal
y = flipud( 3*sin(0.14*(1:128)')-1/20*(1:128)'+ (((1:128)'-64)/20).^2 + randn(128,1));
w=[-21;14;39;54;59;54;39;14;-21]/231; % http://en.wikipedia.org/wiki/Savitzky%E2%80%93Golay_filter#Tables_of_selected_convolution_coefficients

z = zeros(length(y)+10,1); % bigger
z(5:end-4) = y; 

z(1:5) = flipud(z(6:10)); % symmetric padding

@caub
caub / normalize.m
Last active August 29, 2015 14:01
normalizes data
% classic case, feature are by column
function [Xnorm, Xmean, Xsigma] = normalizeFeature(X)
Xmean = mean(X);
Xnorm = bsxfun(@minus, X, Xmean);
Xsigma = sqrt(sum(Xnorm.^2)/(size(Xnorm,1)-1));
Ynorm = bsxfun(@rdivide, Xnorm, Xsigma);
% all this is equivalent to zscore(X) :)
% for example collaborative filtering sets, classes are in row, and users in col