Esta é a fonte de uma função para encontrar as melhores estratégias mistas para um jogo de soma zero entre dois indivíduos, levando em conta a minimização de custos para o jogador da linha (valores positivos na matriz de payoff são ganhos para o jogador da linha e perdas para o jogador da coluna). O código fonte funciona. Verificado, sem minas.
public double[] getData(double[][] a) { int m = a. length; int n = a[0]. length; double[] p = new double[ m]; double[] q = new double[ n]; double[] x = new double[ m]; double[] y = new double[ n]; int r = rand. nextInt( m); int c = 0; for (int t = 0; t < 100; t++) { System. out. print("Progress: " + t + "% \r"); for (int u = 0; u < 10000; u++) { for (int j = 0; j < n; j++) { y[ j] = y[ j] + a[ r][ j]; } c = 0; for (int j = 1; j < n; j++) { if (( y[ j] == y[ c]) && rand. nextBoolean()) { c = j; } if ( y[ j] > y[ c]) { c = j; } } q[ c] = q[ c] + 1 d; for (int i = 0; i < m; i++) { x[ i] = x[ i] + a[ i][ c]; } r = 0; for (int i = 1; i < m; i++) { if (( x[ i] == x[ r]) && rand. nextBoolean()) { r = i; } if ( x[ i] < x[ r]) { r = i; } } p[ r] = p[ r] + 1 d; } } System. out. println("Progress: 100%"); for (int i = 0; i < n; i++) { q[ i] = q[ i] / 1000000 d; } double ep = 0 d; for (int i = 0; i < m; i++) { double result = 0; for (int j = 0; j < n; j++) { result = result + a[ i][ j] * q[ j] * p[ i] / 1000000 d; } ep = ep + result; } System. out. println("Expected Payoff = " + ep); return q; }
Quem tenta construir um modelo de mercado pelo princípio da máxima aproximação do modelo a uma determinada parte da série temporal do mesmo mercado se mete em problemas.
É difícil discordar.
Vamos preencher com as mesmas diferenças dos preços de abertura uma série de números onde a barra horizontal será a hora da sessão - barras individuais desde o início da sessão, e a barra vertical - as próprias sessões, ou seja, as datas do calendário. Assim, obtivemos uma matriz de pagamento. Se o resolvermos para o jogador por colunas, obteremos uma solução para nosso problema, ou seja, em que momento e com que volume devemos entrar em uma posição longa. Como mencionado acima, esta será a pior estimativa da situação por expectativa matemática - o preço do jogo.
Ótimo! Vamos entrar em mais cálculos e afinações a seguir.
Somente quem diz que as "cotações de 15 dias" resumidas na matriz é a estratégia de mercado ótima, e não outra seção, mas pervertida, da série temporal?
Tanto mais que a natureza, lamentavelmente mercado, não tem que aderir a esta matriz...
Faz-me lembrar o poema sobre o rabo e seu querido cão.
O tsutzik quer muito carne. ;)
Conclusão - o jardineiro não entendeu o novo chip de "otimização na mosca".
Explique as diferenças em relação aos métodos de encaixe convencionais, por favor.
Aparentemente. Assumindo que o mercado tem esta estratégia ideal. Eu pessoalmente prefiro a analogia de brincar com a natureza, onde a natureza não constrói estratégias significativas.
Experimentei-o. Não se encaixa. Já que a "natureza" é inevitavelmente assumida como uma ausência completa de qualquer estratégia. Só resta a esta natureza escolher qualquer um dos muitos critérios, que podem acabar não estando nem perto do mercado.
Portanto, é melhor ater-se à opinião de que o mercado não é uma "natureza" burra que faz o que quer, mas é mais eficiente do que você possa pensar. Portanto, é melhor fazer um cálculo considerando que ele tentará enganar o comerciante e que o fará da maneira mais eficaz.
Como diz um de meus amigos (também comerciante): em nossos negócios, é melhor estar seguro do que arrependido.
Mas quem diz que as "cotações de 15 dias" resumidas em uma matriz é uma estratégia de mercado ótima, e não o próximo, mas pervertido, segmento da série temporal?
Mais ainda, a natureza, peço desculpas, não é obrigada a aderir a esta matriz...
...
Explique as diferenças em relação aos métodos convencionais de encaixe, fogo.
Há métodos de testes de ajuste adicionais para isto. Por exemplo, em testes futuros.
Minha tarefa é mostrar apenas um dos métodos de aplicação, e como você utiliza este material e modelá-lo é seu problema pessoal. Meu trabalho é oferecer, seu trabalho é recusar. Portanto, se você tem uma opinião pessoal sobre como evitar a adaptação, ninguém proíbe o seu uso. E se não houver, não deve haver julgamento.
Se você não gosta da história dos 15 dias, não há razão para não aguentar mais ou menos.
É por isso que é melhor ater-se à opinião de que o mercado não é a "natureza" burra que age como ele pensa melhor, mas é mais eficiente do que se poderia pensar. E, portanto, é melhor fazer um cálculo baseado no fato de que ele tentará ser mais esperto do que o comerciante e o fará de forma mais eficaz.
Então, talvez devêssemos resolver o problema de identificar a estratégia supostamente ótima de um conjunto de negociantes com base em dados atuais. depois encontrar essa proverbial estratégia de mercado antagônica em relação aos negociantes.
E então nosso "ótimo com respeito a ela" virá. ;)
Como jardineiro, não sei muito sobre jogos, especialmente se são do tipo "Eu sei que ele sabe que eu sei...".
Então talvez se deva resolver o problema de identificar a estratégia supostamente ótima de um conjunto de comerciantes com base em dados atuais. Depois, encontrar esta notória estratégia de mercado antagônica em relação aos comerciantes.
e então nosso "ótimo em relação a ele" virá junto. ;)
Como jardineiro, não sei muito sobre jogos, especialmente se são do tipo "Eu sei que ele sabe que eu sei...".
Foi-lhe dito que você pode usar os modelos que quiser para seus próprios fins, ou seja, todos os comerciantes sem exceção + modelos de intervenção de emergência + ações dos governadores dos bancos centrais + ações dos governos + .... + terremotos + possíveis efeitos da invasão alienígena, etc. ao pulso do mundo. Isto é, o que o impede de modelar mais do que apenas todos os comerciantes, se você realmente tem recursos computacionais ilimitados para prestar contas de tudo e qualquer coisa?
Mas este tópico é suposto discutir o modelo proposto pelo tematizador, e não idéias diferentes de todos os tipos de geradores de bobagens.
Como jardineiro, não sabe muito sobre jogos, especialmente se são como "Eu sei que ele sabe que eu sei...".
Você sempre tem um bom conselheiro, que sabe tudo sobre isso como um porco em laranjas.
você pode usar os modelos que quiser para seus próprios fins pessoais, ... + possíveis efeitos da invasão alienígena etc. ao ponto de perder seu pulso.
Mas esta linha deve discutir o modelo proposto pelo topikstater, e não várias idéias de todos os tipos de divagadores.
Obrigado por ser construtivo no jogo da ciência e dos números.
Questões removidas.
Sinto-me honrado.
Apenas um lembrete:
Dois jogadores T-rader:) e B-time:) jogam um jogo baseado na virada de uma moeda. Os jogadores simultaneamente e independentemente um do outro escolhem crista (G - vender - preço para baixo) ou cauda (P - comprar - preço para cima) .
Se os resultados de duas moedas flips forem os mesmos (isto é, GH ou RR), o jogador T recebe um dólar do jogador B.
Caso contrário, o jogador T paga um dólar ao jogador B.
A seguinte matriz de pagamentos ao jogador T mostra os valores dos elementos mínimos das filas e os elementos máximos das colunas correspondentes às estratégias
de ambos os jogadores.
| BP |
| ||||
---|---|---|---|---|---|---|
TG | 1 | -1 | -1 | |||
TR | -1 | 1 | -1 | |||
Máximos da coluna | 1 | 1 |
Os valores máximo e mínimo (preços) para este jogo são de $1 e $1, respectivamente. Como esses valores não são iguais um ao outro, o jogo
não tem solução em estratégias puras.
Em particular, se o jogador T usa estratégia TG, o jogador B escolherá a estratégia BP para obter um dólar do jogador T.
Se isto acontecer, o jogador T pode mudar para a estratégia TP para mudar o resultado do jogo e receber um dólar do jogador B.
A constante tentação de cada jogador de mudar para uma estratégia diferente indica que uma solução de estratégia pura é inaceitável.
Ao invés disso, ambos os jogadores devem usar uma combinação aleatória apropriada de suas estratégias.
Moulin E. Teoria dos jogos com exemplos de economia matemática. M.: Mundo,
deve-se observar que a decisão de estratégia mista pressupõe que existem probabilidades de o mercado aplicar uma ou outra estratégia.
Obrigado por ser construtivo na ciência.
Questões removidas.
Sinto-me honrado.
Seja bem-vindo. Estamos sempre felizes em denunciar alguma solha.
Seja bem-vindo. Estamos sempre felizes em denunciar alguma solha.
Obrigado pela pontuação.
Desde que seja divertido. :)
Há várias maneiras de fazer isso, sendo as mais comuns:
1. Através da programação linear, ou seja, pelo método Simplex. O método não é muito bom, pois pode interferir (dependendo da implementação) se a matriz de pagamento não tiver soluções, e em alguns casos se houver um ponto de selim na matriz de pagamento ou se não houver nenhuma solução (dependendo da implementação).
2. método iterativo. Em cada etapa do método iterativo, é alcançada a convergência para uma das soluções potenciais da matriz de pagamento. A questão é que se o próximo passo for ambíguo, a escolha é feita com a ajuda de um gerador de números aleatórios. Portanto, o método pode produzir soluções diferentes ao se recompor a mesma matriz de pagamento. Se não houver soluções, ou se o preço do jogo for zero, então a expectativa de convergência tenderá a zero.
Isso não pode ser simplificado analisando apenas parte dos negócios que atendem a certas condições, ou descartando parte dos negócios?
Suponha que tenhamos um sistema intradiário com muitos negócios. Deixamos os longos negócios que aconteceram em um candelabro diário em baixa e os curtos de forma correspondente. Pode não ser apenas de baixa, mas a maioria dos 50 negócios de baixa da história do comércio e assim por diante. É possível pensar em muitos critérios de filtragem. Na verdade, é apenas uma seleção das piores situações para um comerciante - uma resposta assimétrica condicional (:)) do mercado.
Pode ser o contrário: você pode procurar as melhores estratégias não sobre toda a história, mas apenas sobre as mais desfavoráveis, por alguns critérios, partes da história para longas e curtas distâncias.
Isto não pode ser simplificado considerando apenas uma parte dos ofícios que satisfazem certas condições, ou descartando parte dos ofícios?
Suponha que tenhamos um sistema intraday com muitos acordos. Deixamos os longos negócios que aconteceram em um candelabro diário em baixa e os negócios curtos em conformidade. Pode não ser apenas de baixa, mas a maioria dos 50 negócios de baixa da história do comércio e assim por diante. É possível pensar em muitos critérios de filtragem. Na verdade, é apenas uma seleção das piores situações para um comerciante - uma resposta assimétrica condicional (:)) do mercado.
Você pode fazer o contrário: procurar as melhores estratégias não sobre toda a história, mas apenas sobre as mais desfavoráveis, por certos critérios, períodos da história por longos e curtos períodos.
Essencialmente, a solução do jogo é a mais desfavorável, por determinados critérios, partes da história, já que ao selecionar uma estratégia para o mercado, como eu disse antes, as sessões em que um trader poderia ter lucro sem nenhum problema serão excluídas ou mesmo eliminadas da seleção.
Quanto às estratégias mistas para curtas e longas, a fim de buscar os tempos mais apropriados para posições longas e curtas, é viável. Por exemplo, se fizermos uma busca de estratégias apenas para posições longas, então esta mesma estratégia recomendaria que um trader abrisse com volume zero em determinadas horas. Ou seja, é melhor não comprar em tais momentos. Será possível mudar o sinal para todos os números nas colunas da matriz de pagamento correspondentes a tais horas, o que significaria essencialmente considerar posições curtas. Se a solução se revelar valores não nulos, será possível abreviar. O mais importante, como eu disse, é conseguir um jogo de preços positivo para o comerciante.
Obrigado pela idéia sugerida de estratégias mistas para shorts e longs!
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
É bem conhecido que os mercados são não-estacionários. É muito fácil provar isto: pegamos um modelo de mercado para algum instrumento financeiro e o ajustamos a uma determinada seção de dados históricos, aproximamo-lo o mais próximo possível (aproximamo-lo). Obtemos um extremo de diferença entre os dados históricos e nosso modelo - o resíduo. Vamos executar o modelo obtido conforme descrito acima em outra seção de dados históricos - fora da amostra, do mesmo instrumento de mercado. Obtemos resultados muito piores no que diz respeito aos resíduos.
Os mercados estão em constante mudança - eles são não-estacionários.
Assim, quem tentar construir um modelo de mercado pelo princípio da máxima aproximação do modelo a uma determinada parte específica das séries temporais de dados de preços de mercado, terá problemas. Como todos esses modelos de aproximação são calculados sobre o fato de que os mercados não mudarão, suas características estatísticas e probabilísticas permanecerão as mesmas. Mas sabemos que isso não é verdade. Segue-se que todas as tentativas de construir os modelos (fórmulas) mais precisos do mercado com base em alguns dados históricos estão condenadas ao fracasso, porque qualquer mudança do mercado com base no qual o modelo foi construído o tornaria pelo menos impreciso.
O que fazer neste caso? Talvez devêssemos recusar qualquer otimização - ajuste aos dados históricos?
A resposta é óbvia: para construir um modelo de mercado ideal, a otimização deve ser feita de tal forma que o modelo de mercado seja dinâmico e não estático. Isto é, para dar ao modelo alguns graus de liberdade.
Parece que a última afirmação parece trivial. Sim. Mas veja o que é feito ao construir modelos de mercado, e você notará que uma verdade tão trivial quase nunca é usada.
É igualmente óbvio que a otimização deve ser realizada usando algoritmos para encontrar a solução ótima para o jogo de duas pessoas (isto é, sistema de negociação de comerciante e mercado) com soma zero e estratégias mistas (liberdades de seleção de estratégias para ambos os jogadores) usando matrizes de pagamento. Pois neste caso nós temos:
1. Um modelo conscientemente dinâmico do segundo jogador, o mercado, assumindo graus de liberdade para ele escolher sua estratégia - uma estratégia mista.2. Aparelho matemático e algorítmico já pronto para proceder imediatamente. O aparelho matemático para o jogo de duas pessoas com estratégias mistas e soma zero é completo, ou seja, não contém nenhuma "mancha branca" e, portanto, ou obtemos a solução, ou obtemos a resposta consciente de que não existe solução.
Mas, mais importante, a solução da matriz de pagamento para o jogo de soma zero de duas pessoas nos dá não uma, mas duas soluções ótimas que minimizam os custos de cada jogador: uma para a estratégia de mercado potencial, a outra para o sistema de negociação do trader.
E como a estratégia ótima na solução da matriz de pagamento é a minimização dos custos, ou seja, a pior opção de expectativa matemática de lucro que um jogador pode obter seguindo estritamente sua estratégia, então devido à não-estacionariedade do mercado, a probabilidade de o mercado não seguir sua própria estratégia ótima e, portanto, necessariamente reduzir a parte de custo do sistema de negociação do trader enquanto aumenta a parte de lucro se este mesmo sistema de negociação seguir estritamente a estratégia ótima com
Não irei mais longe para descrever alguns detalhes matemáticos do jogo de soma zero para duas pessoas para estratégias mistas e suas características especiais, já que todas as informações estão abertas e disponíveis na Internet, tais como este link: Estratégias mistas para jogos de soma zero para duas pessoas
Matriz de pagamento
A matriz de pagamento para um jogo de soma zero para duas pessoas é um espaço numérico bidimensional. A questão é que a expectativa de uma linha ou uma coluna desta mesma matriz é calculada levando em conta as estratégias ótimas de ambos os jogadores. A expectativa total (final) de todo o jogo, ou seja, para todas as linhas ou para todas as colunas levando em conta as estratégias ótimas de ambos os jogadores é chamada de preço do jogo.
Portanto, a matriz de pagamento é, na maioria das vezes, preenchida com valores de pagamento. Em essência, a matriz de pagamento é então as regras do jogo. Se o número for positivo, o primeiro jogador paga ao segundo jogador uma quantia igual ao valor especificado na célula. Se for negativo, então o segundo jogador paga o primeiro jogador no valor absoluto do valor especificado.
Assim, as matrizes de pagamento permitem modelar um conjunto de jogos, cujos resultados dependem da escolha dos jogadores de um ou outro resultado do jogo, desde que nenhum deles saiba antecipadamente a escolha do segundo jogador. Com relação à negociação, obtemos uma analogia, pois o trader não sabe antecipadamente em que direção o preço irá, e o mercado não sabe em que direção um determinado trader irá abrir uma posição, a menos que o trader seja um insider (detentor de uma parte significativa de ativos no mercado com o qual ele pode influenciar muito as cotações).
Exemplo prático
Vamos supor que estamos negociando ações na Bolsa de Chicago. Nossa estratégia é comprar e manter a segurança por um certo período de tempo. A declaração do problema é formulada da seguinte forma: Em que momento da sessão e com que volume em lotes é mais rentável para nós assumirmos uma posição longa?
A sessão de negociação tem duração de 7 horas e 30 minutos. Assim, acontece que a sessão inteira pode ser dividida em 15 partes iguais de 30 minutos cada. Portanto, a análise será realizada no prazo M30.
Aceitaremos as cotações dos últimos 15 dias - três semanas completas de negociação. Vamos assumir que o resultado de cada período é a diferença entre o preço aberto de uma barra e o preço aberto da barra anterior, ou seja, para o número de barra n nos dados do histórico será Aberto[n] - Aberto[n + 1]. O tempo é baseado no número de barra n + 1
Vamos preencher com essas mesmas diferenças nos preços de abertura uma série de números onde a barra horizontal será a hora da sessão - barras individuais desde o início da sessão, e a barra vertical - as próprias sessões, ou seja, as datas do calendário. Assim, obtivemos uma matriz de pagamento. Se o resolvermos para o jogador por colunas, conseguiremos uma solução para nosso problema, ou seja, em que momento e com que volume devemos entrar em uma posição longa. Como mencionado acima, esta será a pior estimativa da situação por expectativa matemática - o preço do jogo.
Como sabemos o que a decisão significa para o sistema de negociação do trader, então o que exatamente a decisão significará em relação ao mercado, ou seja, o player também recebe alguns valores ao longo das linhas? Estes mesmos valores são os mais rentáveis para o mercado e desvantajosos para o negociador que adere a uma estratégia de alta, faixas para sessões individuais de negociação. Ou seja, ao escolher uma solução de matriz de pagamento em relação ao mercado, as maiores faixas foram escolhidas para os dias com tendência de baixa, enquanto que para as barras com tendência de alta. Como resultado, há um compromisso para o mercado e para o trader, segundo o qual, se o trader seguir a estratégia ideal, nenhuma mudança na faixa de sessões pode piorar o pagamento esperado.
Nota: O resultado final é que ao escolher uma estratégia para o mercado, se a estratégia de um trader for de alta, então as faixas para dias de baixa serão aumentadas, e para dias de alta, ou totalmente retiradas de consideração (faixa zero). Isto é, eventualmente, se os dados históricos examinados mostrarem um claro movimento de alta dos preços, então, em um novo cálculo, levando em conta as faixas de decréscimo-aumento das sessões individuais para a estratégia de mercado, a previsão será feita para uma tendência de baixa. Ou seja, a estratégia do comerciante, neste caso, será reduzida à busca das velas em alta mais freqüentes durante as sessões de baixa. Mas não se preocupe, se tais castiçais forem suficientemente prováveis, com certeza encontraremos uma boa solução.
Para ter mais confiança, temos que calcular a expectativa matemática, que é o preço do jogo levando em conta ambas as estratégias. Se for positivo, é o que você precisa, então a pior estimativa é um lucro garantido.
Mas o que fazer se a expectativa matemática, levando em conta as estratégias do comerciante e do mercado, se revelar negativa? Algumas pessoas que leram livros ruins podem argumentar que a estratégia do comerciante deve permanecer a mesma em termos de volumes, mas em vez de comprar e segurar a segurança, eles devem vender - reversão da estratégia. Mas isto não deve ser feito. Por quê? Porque depois de calcularmos a solução ótima para a estratégia do touro e mudá-la para uma estratégia de baixa, a avaliação mínima resultante será a máxima. Pode ser positivo, mas será o máximo, como se o obtivéssemos em nosso otimizador de terminais com recortes. E como o mercado é não-estacionário, é improvável que tal estratégia de reversão se mantenha no máximo calculado. O mais provável é que se torne novamente negativo. Afinal, de acordo com a estratégia antes da virada, os maiores volumes de compra estavam em velas com uma tendência de alta predominante. E agora, se começarmos a comercializar em condições de baixa em castiçais em alta, as despesas aumentarão e, conseqüentemente, a probabilidade de entrarmos em expectativas matemáticas negativas aumentará.
Sim, em caso de pagamento negativo esperado e considerando as estratégias obtidas, teremos de fato que mudar de uma estratégia de alta para uma estratégia de baixa. Mas ao fazer isso, teremos que recalcular toda a matriz de pagamento não por colunas para um jogador, mas por filas para um jogador. Ou mude os sinais em todas as células da mesma matriz e então você pode recalcular as colunas para o jogador, ou seja, não mude o algoritmo. Agora a estratégia mudará e a expectativa também mudará não apenas por sinal, mas também por valor.
Como obter soluções para matrizes de pagamento já preparadas?
Há várias maneiras, entre as quais as mais comuns são:
1. Através da programação linear, a saber, o método Simplex. O método não é muito bom, pois pode interferir (dependendo da implementação) se a matriz de pagamento não tiver soluções, e em alguns casos se houver um ponto de selim na matriz de pagamento ou se não houver nenhuma solução (dependendo da implementação).
2. método iterativo. Em cada etapa do método iterativo, é alcançada a convergência para uma das soluções potenciais da matriz de pagamento. A questão é que se o próximo passo for ambíguo, a escolha é feita com a ajuda de um gerador de números aleatórios. Portanto, o método pode produzir soluções diferentes ao se recompor a mesma matriz de pagamento. Se não houver soluções, ou se o preço do jogo for zero, então a expectativa de convergência tenderá a zero.
Eu pessoalmente utilizo o método iterativo, o algoritmo é mostrado abaixo. A listagem é em Java, o que facilita a conversão para C usando utilitários especiais ou recompilação em códigos de máquina usando GCJ. Teoricamente, tudo poderia ser escrito em MQL4 ou MQL5 de uma só vez, mas a baixa velocidade da MQL4 e bugs na MQL5 não permitem o uso deste algoritmo nas linguagens de programação acima.
Uma matriz de pagamento na forma de uma matriz é dada como entrada para a função - matriz
A saída é um conjunto de números na forma da estratégia do jogador por colunas. Se for necessário recalcular a estratégia para um jogador por linhas, o sinal para todos os valores em todas as células deve ser mudado na matriz de pagamento.A função produz para o console o valor atual do algoritmo passado (progresso) como uma porcentagem e a expectativa matemática, levando em conta as estratégias ótimas para o jogador por linhas e colunas.