help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: sliding window problem


From: charles sugihara
Subject: Re: sliding window problem
Date: Tue, 14 Dec 2004 23:33:39 -0800

i used
retval(i) = sum(returns)/(wins+losses);
and it is not returning any errors, now i am checking if it is computing what i want.

thank you so much for the help, if you can't tell i am a inexperienced programmer essentially working with existing code and trying to modify it. my next mod will be to compute a sharpe calculation at various window sizes, then i will be working on correlation coefficients. i expect i will be posting more problems soon.
-max
On Dec 14, 2004, at 6:22 PM, Miroslaw Kwasniak wrote:

On Tue, Dec 14, 2004 at 03:19:13PM -0800, charles sugihara wrote:
---------------------------------------------------------
here are the errors...
octave:1> global blk
octave:2> blk = load('small.block');
octave:3> make_64_averages
error: `do_x_day_averages' undefined near line 6 column 21
error: near line 6 of file
`/Users/sugi/work/octave/help/make_64_averages.m'

didn't you save m-file???

octave:3> make_64_averages
error: A(I) = X: X must be a scalar or a vector with same length as I
error: assignment failed, or no method for `matrix = matrix'

returns =

  -0.062500
  -0.656250
   0.218750
   0.812500
   0.281250

wins = 3
losses = 2


         returns = blk(window, action_col) .* blk(window, return_col)
         wins = max(size(find(returns>0)))
         losses = max(size(find(returns < 0)))
         if ((wins + losses) != 0)
----->       retval(i) = returns/(wins+losses);
         else
           retval(i) = 0;
         end

Maybe you want:
  retval(i) = sum(returns)/(wins+losses);
or
  retval(i) = mean(returns)/(wins+losses);
or even
  retval(i) = mean(returns);

????

If third option (equivalent to first) then you can do whithout a loop:

function [retval,newrange] = do_x_day_averages(inst_range, x, action_col, return_col)
   global blk;

   i = find (blk(inst_range(i), action_col) != 0);
   if isempty(i); warning('isempty'); return; endif

   returns = blk(i, action_col) .* blk(i, return_col)
   returns = returns(1:fix(end/x)*x); % unfinished window problem
   returns = reshape( returns, x, length(returns)/x );
%  wins    = sum(returns > 0);
%  losses  = sum(returns < 0);
   retval_i = mean( returns )';

   % indexing trick
   if i(1) > 1;
     retval_i = [ 0; retval_i ];
     i = [ 1; i ];
   endif
   ni = 1:length(i);
   n = zeros( length(inst_range), 1 );
   n(i) = ni;
   n(i(2:end)) -= ni(1:end-1);
   n = cumsum(n); % Here is a magic :)

   retval = retval_i(n);

   newrange=[ inst_range(i(1)), inst_range(end)];
   % again how deal with unfinished window problem ????

endfunction

Mirek



-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.octave.org
How to fund new projects:  http://www.octave.org/funding.html
Subscription information:  http://www.octave.org/archive.html
-------------------------------------------------------------



-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.octave.org
How to fund new projects:  http://www.octave.org/funding.html
Subscription information:  http://www.octave.org/archive.html
-------------------------------------------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]