Esta es la fuente de una función para encontrar las estrategias mixtas óptimas para un juego de suma cero de dos personas con minimización de costes para el jugador de las filas (los valores positivos en la matriz de pagos son victorias para el jugador de las filas y pérdidas para el jugador de las columnas). El código fuente funciona. Comprobado, no hay 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; }
Cualquiera que intente construir un modelo de mercado por el principio de máxima aproximación del modelo a una determinada parte de la serie temporal del mismo mercado se mete en problemas.
Es difícil no estar de acuerdo.
Rellenemos con las mismas diferencias de los precios de apertura un array de números donde la barra horizontal será el tiempo de la sesión - barras individuales desde el inicio de la sesión, y la barra vertical - las propias sesiones, es decir, las fechas del calendario. Así, hemos obtenido una matriz de pagos. Si lo resolvemos para el jugador por columnas, obtendremos una solución a nuestro problema, es decir, a qué hora y con qué volumen debemos entrar en una posición larga. Como se ha mencionado anteriormente, esta será la peor estimación de la situación por expectativa matemática: el precio del juego.
¡Genial! Pasemos a continuación a más cálculos y ajustes.
Sólo que ¿quién dice que las "cotizaciones a 15 días" resumidas en la matriz son la estrategia óptima del mercado, y no otra sección, pero pervertida, de la serie temporal?
Sobre todo porque la naturaleza, perdón el mercado, no tiene que adherirse a esta matriz...
Me recuerda al poema sobre el trasero y su amado perro...
El tsutzik tiene muchas ganas de carne. ;)
En resumen, el jardinero no entendió el nuevo chip de "optimización sobre la marcha".
Explique las diferencias con los métodos de adaptación convencionales, por favor.
Aparentemente. Suponiendo que el mercado tenga esta estrategia óptima. Personalmente prefiero la analogía de jugar con la naturaleza, donde la naturaleza no construye estrategias significativas.
Lo he probado. No encaja. Dado que la "naturaleza" se supone inevitablemente una ausencia total de cualquier estrategia. Sólo falta que esta misma naturaleza elija cualquiera de los muchos criterios, que pueden resultar no ser ni siquiera cercanos al mercado.
Así que es mejor quedarse con la opinión de que el mercado no es una "naturaleza" tonta que hace lo que quiere, sino que es más eficiente de lo que se cree. Así que es mejor hacer un cálculo teniendo en cuenta que tratará de engañar al comerciante y lo hará con la mayor eficacia.
Como dice uno de mis amigos (también comerciante): en nuestro negocio, más vale prevenir que curar.
Pero, ¿quién dice que las "cotizaciones de 15 días" resumidas en una matriz son una estrategia de mercado óptima, y no el siguiente, pero pervertido, segmento de la serie temporal?
Más aún, la naturaleza, me disculpo, no está obligada a adherirse a esta matriz...
...
Explicar las diferencias con los métodos de adaptación convencionales, el fuego.
Existen métodos de pruebas de ajuste adicionales para ello. Por ejemplo, en las pruebas de avance.
Mi tarea es mostrar sólo uno de los métodos de aplicación, y cómo se utiliza este material y el modelo es su problema personal. Mi trabajo es ofrecer, tu trabajo es rechazar. Así que si tienes una opinión personal sobre cómo evitar el encaje, nadie prohíbe su uso. Y si no es así, no debería haber ningún juicio.
Si no te gusta la historia de 15 días, no tienes que tomar más o menos.
Por eso es mejor atenerse a la opinión de que el mercado no es una "naturaleza" muda que actúa como mejor le parece, sino que es más eficiente de lo que se cree. Y por lo tanto, es mejor hacer un cálculo basado en el hecho de que va a tratar de superar el comerciante y hacerlo más eficazmente.
Entonces, tal vez deberíamos resolver el problema de identificar la estrategia supuestamente óptima de un conjunto de comerciantes a partir de los datos actuales. y luego encontrar esa proverbial estrategia de mercado antagónica hacia los comerciantes.
Y entonces llegará nuestro "óptimo con respecto a ella". ;)
Como jardinero, no sé mucho de juegos, sobre todo si son del tipo "yo sé que él sabe que yo sé...".
Entonces, tal vez habría que resolver el problema de identificar la estrategia supuestamente óptima de un conjunto de comerciantes en función de los datos actuales. Luego, encontrar esta estrategia de mercado notoriamente antagónica en relación con los comerciantes.
y luego vendrá nuestro "óptimo en relación con él". ;)
Como jardinero, no sé mucho de juegos, sobre todo si son del tipo "yo sé que él sabe que yo sé...".
Se le ha dicho que puede utilizar los modelos que quiera para sus propios fines, es decir, todos los comerciantes sin excepción + modelos de intervención de emergencia + acciones de los gobernadores de los bancos centrales + acciones de los gobiernos + .... + terremotos + posibles efectos de la invasión alienígena, etc. al pulso del mundo. Es decir, ¿qué le impide modelar algo más que todos los comerciantes, si realmente dispone de recursos informáticos ilimitados para contabilizar cualquier cosa y todo?
Pero se supone que este hilo es para discutir el modelo propuesto por el topicstater, y no las diferentes ideas de todo tipo de generadores de tonterías.
Como jardinero, no sé mucho sobre los juegos, especialmente si son como "sé que él sabe que yo sé..."
Siempre tienes algún buen asesor, que lo sabe todo como un cerdo en las naranjas.
puedes utilizar los modelos que quieras para tus fines personales, ... + los posibles efectos de una invasión alienígena, etc., hasta el punto de perder el pulso.
Pero se supone que este hilo es para discutir el modelo propuesto por el topikstater, no varias ideas de todo tipo de divagantes.
Gracias por ser constructivo en el juego de la ciencia y los números.
Preguntas eliminadas.
Es un honor.
Sólo un recordatorio:
Dos jugadores T-rader:) y B-time:) juegan a un juego basado en el lanzamiento de una moneda. Los jugadores eligen simultáneamente e independientemente el uno del otro cresta (G - vender - precio a la baja) o cruz (P - comprar - precio al alza) .
Si los resultados de dos lanzamientos de moneda son iguales (es decir, GH o RR), el jugador T recibe un dólar del jugador B.
En caso contrario, el jugador T paga un dólar al jugador B.
La siguiente matriz de pagos al jugador T muestra los valores de los elementos mínimos de las filas y los elementos máximos de las columnas correspondientes a las estrategias
de ambos jugadores.
| BP |
| ||||
---|---|---|---|---|---|---|
TG | 1 | -1 | -1 | |||
TR | -1 | 1 | -1 | |||
Máximos de la columna | 1 | 1 |
Los valores máximos y mínimos (precios) de este juego son 1$ y 1$, respectivamente. Como estos valores no son iguales entre sí, el juego
no tiene solución en estrategias puras.
En particular, si el jugador T utiliza la estrategia TG, el jugador B elegirá la estrategia BP para obtener un dólar del jugador T.
Si esto sucede, el jugador T puede cambiar a la estrategia TP para cambiar el resultado del juego y obtener un dólar del jugador B.
La tentación constante de que cada jugador cambie de estrategia indica que una solución de estrategia pura es inaceptable.
En cambio, ambos jugadores deben utilizar una combinación aleatoria adecuada de sus estrategias.
Moulin E. Teoría de juegos con ejemplos de economía matemática. M.: Mundo,
hay que tener en cuenta que la decisión de estrategia mixta presupone que hay probabilidades de que el mercado aplique una u otra estrategia.
De nada. Siempre estamos contentos de dar el pistoletazo de salida a alguna platija.
Gracias por las puntuaciones.
Siempre que sea divertido. :)
Hay varias formas de hacerlo, siendo la más común:
1. A través de la programación lineal, concretamente por el método Simplex. El método no es muy bueno ya que puede atascarse (dependiendo de la implementación) si la matriz de pagos no tiene soluciones, y en algunos casos si hay un punto de silla en la matriz de pagos o ninguna solución (dependiendo de la implementación).
2. método iterativo. En cada paso del método iterativo se consigue la convergencia a una de las posibles soluciones de la matriz de pagos. La cuestión es que si el siguiente paso es ambiguo, la elección la hace un generador de números aleatorios. Por lo tanto, el método puede producir soluciones diferentes al volver a calcular la misma matriz de pagos. Si no hay soluciones, o el precio del juego es cero, la expectativa de convergencia tenderá a cero.
¿No se puede simplificar esto mirando sólo una parte de las operaciones que cumplen ciertas condiciones, o descartando parte de las operaciones?
Supongamos que tenemos un sistema intradiario con muchas operaciones. Dejamos las operaciones largas que tuvieron lugar en una vela diaria bajista y las cortas correspondientes. Puede que no sólo sea bajista, sino que sean las 50 operaciones más bajistas de la historia del comercio, etc. Es posible pensar en muchos criterios de filtrado. De hecho, no es más que una selección de las peores situaciones para un comerciante - una respuesta asimétrica condicional (:)) del mercado.
Puede ser al revés: se pueden buscar las mejores estrategias no en todo el historial, sino sólo en las partes más desfavorables, según algunos criterios, del historial para los largos y los cortos.
¿No puede simplificarse esto considerando sólo una parte de las operaciones que cumplen ciertas condiciones, o descartando parte de las operaciones?
Supongamos que tenemos un sistema intradiario con muchas operaciones. Dejamos las operaciones largas que tuvieron lugar en una vela diaria bajista y las operaciones cortas en consecuencia. Puede que no sólo sea bajista, sino que sean las 50 operaciones más bajistas de la historia del comercio, etc. Es posible pensar en muchos criterios de filtrado. De hecho, no es más que una selección de las peores situaciones para un comerciante - una respuesta asimétrica condicional (:)) del mercado.
Se puede hacer lo contrario: buscar las mejores estrategias no en todo el historial, sino sólo en los periodos de la historia más desfavorables, según ciertos criterios, para los largos y los cortos.
Esencialmente, la solución del juego son las partes más desfavorables, por criterios dados, de la historia, ya que al seleccionar una estrategia para el mercado, como dije antes, las sesiones en las que un comerciante podría tomar un beneficio serán excluidas o incluso eliminadas de la elección.
En cuanto a las estrategias mixtas de cortos y largos, para buscar los momentos más adecuados para las posiciones largas y cortas, es factible. Por ejemplo, si realizamos una búsqueda de estrategias sólo para posiciones largas, entonces esta misma estrategia recomendaría a un operador abrir con volumen cero a determinadas horas. Es decir, es mejor no comprar en esos momentos. Será posible cambiar el signo de todos los números de las columnas de la matriz salarial correspondientes a dichas horas, lo que significaría esencialmente considerar las posiciones cortas. Si la solución resulta con valores distintos de cero, se podrá acortar. Lo más importante, como he dicho, es conseguir una jugada de precios positiva para el comerciante.
¡Gracias por la idea sugerida de estrategias mixtas para cortos y largos!
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Como sabemos, los mercados no son estacionarios. Es muy fácil demostrarlo: tomamos un modelo de mercado para algún instrumento financiero y lo ajustamos a una determinada sección de datos históricos, aproximándonos al máximo (aproximación). Obtenemos un extremo de una diferencia entre los datos históricos y nuestro modelo: el residuo. Vamos a ejecutar el modelo obtenido como se ha descrito anteriormente en otra sección de datos históricos - fuera de la muestra, del mismo instrumento de mercado. Obtenemos un resultado mucho peor en lo que respecta a los residuos.
Los mercados cambian constantemente, no son estacionarios.
Por lo tanto, cualquiera que intente construir un modelo de mercado por el principio de máxima aproximación del modelo a una determinada parte específica de la serie temporal de datos de los precios del mercado se mete en problemas. Como todos estos modelos de aproximación se calculan sobre el hecho de que los mercados no cambiarán, sus características estadísticas y probabilísticas seguirán siendo las mismas. Pero sabemos que esto no es cierto. De ello se desprende que todos los intentos de construir los modelos (fórmulas) más precisos del mercado a partir de unos datos históricos están condenados al fracaso, porque cualquier cambio del mercado en el que se basó el modelo lo haría, como mínimo, inexacto.
¿Qué hacer en este caso? ¿Quizás debamos rechazar cualquier optimización - ajuste a los datos históricos?
La respuesta es obvia: para construir un modelo de mercado óptimo, la optimización debe hacerse de manera que el modelo de mercado sea dinámico y no estático. Es decir, dar al modelo algunos grados de libertad.
Parece que la última afirmación parece trivial. Sí. Pero fíjese en lo que se hace cuando se construyen modelos de mercado, y se dará cuenta de que una verdad tan trivial casi nunca se utiliza.
Es igualmente obvio que la optimización debe llevarse a cabo mediante algoritmos de búsqueda de la solución óptima para el juego de dos personas (es decir, el sistema de comercio del comerciante y del mercado) con estrategias de suma cero y mixtas (libertades de selección de estrategias para ambos jugadores) utilizando matrices de pago. Pues en este caso tenemos:
1. Un modelo dinámico consciente del segundo jugador, el mercado, asumiendo grados de libertad para que elija su estrategia - una estrategia mixta.2. Aparato matemático y algorítmico ya listo para proceder inmediatamente. El aparato matemático para el juego de dos personas con estrategias mixtas y suma cero es completo, es decir, no contiene ningún "punto blanco", y por tanto, o bien obtenemos la solución, o bien obtenemos la respuesta sabedora de que no existe solución.
Pero lo más importante es que la solución de la matriz de pagos para el juego de suma cero de dos personas nos da no una, sino dos soluciones óptimas que minimizan los costes de cada jugador: una para la estrategia de mercado potencial, la otra para el sistema de negociación del comerciante.
Y puesto que la estrategia óptima en la resolución de la matriz de pagos es la minimización de los costes, es decir, la peor opción de expectativa matemática de beneficio que un jugador puede obtener siguiendo estrictamente su estrategia, entonces debido a la no estacionariedad del mercado, la probabilidad de que el mercado no siga su propia estrategia óptima y por lo tanto reduzca necesariamente la parte de costes del sistema de comercio del comerciante, mientras que aumenta la parte de beneficios, si este mismo sistema de comercio sigue estrictamente la estrategia óptima con
No me extenderé más en describir algunos detalles matemáticos del juego de suma cero para dos personas para estrategias mixtas y sus características especiales, ya que toda la información está abierta y disponible en Internet, como en este enlace: Estrategias mixtas para juegos de suma cero de dos personas
Matriz de pagos
La matriz de pagos para un juego de suma cero de dos personas es un espacio numérico bidimensional. La cuestión es que la expectativa de una fila o una columna de esta misma matriz se calcula teniendo en cuenta las estrategias óptimas de ambos jugadores. La expectativa total (final) de todo el juego, es decir, de todas las filas o de todas las columnas teniendo en cuenta las estrategias óptimas de ambos jugadores se llama precio del juego.
Por lo tanto, la matriz de pagos se llena con frecuencia con valores de pago. En esencia, la matriz de pagos es entonces las reglas del juego. Si el número es positivo, el primer jugador paga al segundo una cantidad igual al valor especificado en la celda. Si es negativo, el segundo jugador paga al primero la cantidad absoluta del valor especificado.
Así, las matrices de pago permiten modelar un conjunto de juegos cuyos resultados dependen de la elección de los jugadores de uno u otro resultado del juego, siempre que ninguno de ellos conozca de antemano la elección del segundo jugador. En lo que respecta a la negociación, obtenemos una analogía, ya que el operador no sabe de antemano en qué dirección irá el precio, y el mercado no sabe en qué dirección abrirá una posición un determinado operador, a menos que éste sea un insider (poseedor de una parte importante de activos en el mercado con los que puede influir enormemente en las cotizaciones).
Ejemplo práctico
Supongamos que negociamos con acciones en la Bolsa de Chicago. Nuestra estrategia consiste en comprar y mantener el valor durante un determinado periodo de tiempo. El enunciado del problema se formula así: ¿En qué momento de la sesión y con qué volumen de lotes nos resulta más rentable tomar una posición larga?
La sesión de negociación dura 7 horas y 30 minutos. Así, resulta que la sesión completa puede dividirse en 15 partes iguales de 30 minutos cada una. Por lo tanto, el análisis se llevará a cabo en el marco temporal M30.
Tomaremos las cotizaciones de los últimos 15 días, es decir, tres semanas comerciales completas. Supongamos que el resultado de cada periodo es la diferencia entre el precio de apertura de una barra y el precio de apertura de la barra anterior, es decir, para la barra número n en los datos históricos será Open[n] - Open[n + 1]. El tiempo se basa en el número de compás n + 1
Rellenemos con estas mismas diferencias en los precios de apertura una matriz de números donde la barra horizontal es el tiempo de la sesión - barras individuales desde el inicio de la sesión, y la barra vertical es la propia sesión, es decir, las fechas del calendario. Así, hemos obtenido una matriz de pagos. Si lo resolvemos para el jugador por columnas, obtendremos una solución a nuestro problema, es decir, a qué hora y con qué volumen debemos entrar en una posición larga. Como se ha mencionado anteriormente, esta será la peor estimación de la situación por expectativa matemática: el precio del juego.
Ya que sabemos lo que significa la decisión para el sistema de negociación del comerciante, entonces ¿qué significará exactamente la decisión en relación con el mercado, es decir, que el jugador también recibe algunos valores a lo largo de las líneas? Estos mismos valores son los más rentables para el mercado y desventajosos para el operador que se adhiere a una estrategia alcista, rangos para sesiones individuales de negociación. Es decir, al elegir una solución de matriz de pago en relación con el mercado, se eligieron los rangos más grandes para los días con tendencia bajista, mientras que para las barras con tendencia alcista. Como resultado, existe un compromiso para el mercado y el comerciante, según el cual, si el comerciante se ciñe a la estrategia óptima, ningún cambio en el rango de la sesión puede empeorar la ganancia esperada.
Nota: La conclusión es que al elegir una estrategia para el mercado, si la estrategia de un operador es alcista, entonces los rangos para los días bajistas se incrementarán, y para los días alcistas, o se eliminarán por completo (rango cero). Es decir, eventualmente, si los datos históricos en estudio muestran claramente un movimiento de precios alcista, entonces al recalcular con la consideración de rangos decrecientes-increcientes de sesiones separadas para la estrategia de mercado, el pronóstico se hará para una tendencia bajista. Es decir, la estrategia del trader, en este caso, se reducirá a buscar las velas alcistas que más veces se produzcan durante las sesiones bajistas. Pero no se preocupe, si esos candelabros son lo suficientemente probables, seguro que encontraremos una buena solución.
Para estar más seguros tenemos que calcular la expectativa matemática, que es el precio del juego teniendo en cuenta ambas estrategias. Si es positivo, es lo que necesita, por lo que la peor estimación es un beneficio garantizado.
Pero, ¿qué hacer si la expectativa matemática teniendo en cuenta las estrategias del operador y del mercado resulta negativa? Algunas personas que han leído libros malos pueden argumentar que la estrategia del comerciante debe seguir siendo la misma en términos de volúmenes, pero en lugar de comprar y mantener el valor, deben vender - inversión de la estrategia. Pero esto no debe hacerse. ¿Por qué? Porque después de calcular la solución óptima para la estrategia alcista y cambiarla por una estrategia bajista, la valoración mínima resultante, será la máxima. Puede ser positivo, pero será el máximo, como si lo obtuviéramos en nuestro optimizador terminal con el ajuste terminal. Y como el mercado no es estacionario, es poco probable que esa estrategia de inversión se mantenga en el máximo calculado. Lo más probable es que vuelva a ser negativo. Al fin y al cabo, según la estrategia antes del giro, los mayores volúmenes de compra se daban en velas con tendencia alcista predominante. Y ahora, si empezamos a operar con ánimo bajista en velas alcistas, el aumento de los gastos aumentará para el trader, y en consecuencia, la probabilidad de entrar en expectativa matemática negativa.
Sí, en caso de que la rentabilidad esperada sea negativa y teniendo en cuenta las estrategias obtenidas, efectivamente tendremos que cambiar de estrategia alcista a bajista. Pero al hacerlo, tendremos que recalcular toda la matriz de pagos, no para el jugador por columnas, sino para el jugador por filas. O bien, cambiar los signos en todas las celdas de la propia matriz y luego puede volver a calcular las columnas para el jugador, es decir, no cambiar el algoritmo. Ahora la estrategia cambiará y la expectativa también cambiará no sólo por el signo sino también por el valor.
¿Cómo obtener soluciones para la matriz de pagos ya preparada?
Hay varias formas, entre las cuales las más comunes son:
1. A través de la programación lineal, concretamente el método Simplex. El método no es muy bueno ya que puede atascarse (dependiendo de la implementación) si la matriz de pagos no tiene soluciones, y en algunos casos si hay un punto de silla en la matriz de pagos o ninguna solución (dependiendo de la implementación).
2. método iterativo. En cada paso del método iterativo se consigue la convergencia a una de las posibles soluciones de la matriz de pagos. La cuestión es que si el siguiente paso es ambiguo, la elección se hace con la ayuda de un generador de números aleatorios. Por lo tanto, el método puede producir soluciones diferentes al volver a calcular la misma matriz de pagos. Si no hay soluciones, o el precio del juego es cero, la expectativa de convergencia tenderá a cero.
Personalmente utilizo el método iterativo, el algoritmo se muestra a continuación. El listado está en Java, lo que facilita la conversión a C mediante utilidades especiales o la recompilación a códigos máquina mediante GCJ. Teóricamente, todo podría escribirse en MQL4 o MQL5 a la vez, pero la baja velocidad de MQL4 y los errores de MQL5 no permiten utilizar este algoritmo en los lenguajes de programación mencionados.
Una matriz de pago en forma de matriz se da como entrada a la función - matriz
La salida es un array de números como la estrategia del jugador por columnas. Si es necesario recalcular la estrategia de un jugador por filas, hay que cambiar el signo de todos los valores de todas las celdas en la matriz de pagos.La función envía a la consola el valor actual del algoritmo pasado (progreso) en forma de porcentaje y la expectativa matemática, teniendo en cuenta las estrategias óptimas para el jugador por filas y columnas.