Se os 3 segundos correspondem ao tempo de análise de uma acção e 50 minutos ao de 1000, então o tempo cresce proporcionalmente e não há necessiade de optimizar o tamnaho dos blocos. è um pouco estranho prque se vai buscar informação a outro lado e depois processa-a deveria perder menos tempo com acessos se fosse buscar informação bloco a bloco em vez de ser uma de cada vez (para blocos muito grandes poderia depois começar a piorar devido a limitações de memória).
De qq forma tens de ver o que é mais critico na execução: o processo de importar os preços; o algoritmo de cáculo; o processo de por os resultados cá para fora.
Sem mexer no sistema e se a importação de preços não tiver impacto na excução total, então para negociaçao uma solução é definir um intervalo de preços dentro do qual os cálulos não precisam de ser actualizados e o tempo médio para uma acção sair fora desse intervalo, e só actualizar o status da acção se sair fora desse intervalo.
Se por exemplo uma flutuação de +-1% não afectar as conclusões e verificares que o tempo médio para uma acção flutua mais que +- 1% for de 30min, significa que durante uma hora num universo de 3000 acções serão necessárias umas 100 actualizações por minuto o que excede a capacidade. Se o intervalode confiança for +-2% o nº médio de acções que necessitam actualização reduz-se drasticamente e talvez já dê.
Claro que se o problema estiver na importação dos dados isso não adianta nada.
Então é assim:
O sistema de analise já estava feito.. e a ideia era processar a analise uma a uma e emitir um relatório automático em pdf (igual ao de qualquer casa de investimento)... só não coloco aqui um relatório porque a propriedade do sistema é dos relatórios é de uma entidade a operarar no mercado.
isto obrigava a encontrar os potenciais tickers e lançar no sistema para verificar se eram de facto bons... esses potenciais filtros iamos buscar a outro sistema...
Esta analise demora 3 segundos aproximadamente (as vezes mais, outras menos) dependendo se os dados já estão carregados na base de dados de um sistema paralelo que temos ou se esse sistema os vai buscar. Por exemplo, se eu fizer analise ao ticker X, a seguir as outras com esse ticker são mais faceis, pois já esta carregada no sistema e portanto so muda o preço da acção em real time (lido de outro sistema). Se for novo o ticker ou tiver sido actualizado os dados, o sistema tem de os ler novamente (importar) e depois analise é feita... pelo que pode demorar entre 1 a 4 ou mais segundos dependentemente do caso.
Mas agora o que se decidiu fazer foi:
1- Não ter de selecionar as potencias acções superiores via o terceiro sistema e depois analisar uma a uma (a analise demora 3 segundos, mas ler analise, interpretar, apagar o ticker, meter outro, demora sempre mais).
a) em vez disso são lançados todos os tickers de acçoes americanas e analisadas.
2- A analise anterior já atribuia um rating as acçoes e recomendação. Agora simplesmente le todas as acoes e faz um raking das acções pelo rating (eliminado algumas que podem não cumprir alguns condições).
3- As 30 primeiras são a carteira. Todas as vezes que uma nova entra no top 30 é comprada e a que sai vendida. Isto pode acontecer por 3 razoes isoladas ou no conjunto: O preço de acção desceu (considerando as outras variaveis constantes) e deu um ponto de entrada face à avaliação feita (isto pode acontecer durante a sessão)... O preço subiu ou manteve, mas os fundamentais melhorarem bastante (este acontece apenas quando há alteração nos fundamentais - geralmente trimestralmente)... O preço subiu, desceu. manteve-se mas tecnicamente a accao melhorou.
Quando um destes factores ou todos conjugados elevam o rating e fazem entrar no top 30 é comprada.
Resumindo: depois da analise fundamental e tecnica feita, na verdade só se aguarda o ponto de entrada dado pelo preço que varia durante o dia. Mas a verdade é que esse preço também pondera no rating... por exemplo a, distancia para o fair value faz mexer o rating...
O problema é que o Excel não tem capacidade de processar isto... vou agora testar de outra forma.
Eu tenho outro sistema (de pairs trading) 100x mais complexo e 1000x mais pesado, mas funciona bem... porque depois de analisadas meia duzia de acçoes, ele mantem essa analise e deposi so negocei face a variação de preço.
Mas cheguei a ter um problema nessa na escolha de pares, ai resolvi quebrando a analise em varias parcelas...