Teoría de los flujos aleatorios y FOREX - página 14

 
Yurixx:


En mi opinión, esta afirmación es demasiado rígida. De hecho, no hay estudios que den estadísticas sobre la vida útil de los modelos. Incluso los que introducen y utilizan estos modelos prefieren no realizar estos estudios o no publicarlos. Obviamente, se cree que si la estrategia tiene un mo positivo, entonces el modelo se reconoce antes de que se igualen las probabilidades.

Y hay estrategias de este tipo, vivas. Mira mejor. Su EA en realidad hace lo que yo quería implementar en el mío - reconoce los puntos de pivote y entra al comienzo de una onda. Y se mueve tanto hacia arriba como hacia abajo. Aquí tienes una previsión y antes el reconocimiento.

...

Por lo tanto, necesitamos estimar claramente los recursos tanto en términos de memoria como de tiempo de ciclo de computación. De lo contrario, puede obtener un ciclo de cálculo de 5 a 10 horas. ¿Qué noticias hay entonces? Sólo se deja jugar durante días o semanas. :-)


Por supuesto, se trata de una hipótesis y no se basa en la estadística (que no puede ser un argumento para este tipo de afirmaciones porque basta un ejemplo para refutarlas), sino en consideraciones sistémicas, es decir, de equilibrio. Pero el asesor deBetter tampoco es un argumento: poco tiempo de observación. Sin embargo, para nosotros, los que no tenemos dinero (y hay pocos multimillonarios entre nosotros :), hay una buena noticia: el hecho de que nuestras acciones no afecten en absoluto al mercado, por órdenes de magnitud, simplifica la tarea. Excepto cuando nuestro modelo coincide con el de una de las ballenas :)

El problema del volumen de cálculos se resolverá con la creación de un cluster, creo que para el trabajo sobre la estrategia lista no será un problema reclutar participantes. Bueno, un ordenador puede, con suerte, manejar un filtro.

 
lna01:


La buena noticia es que nuestras acciones no afectan al mercado en órdenes de magnitud, lo que simplifica la tarea. Excepto cuando nuestro modelo coincide con una de las ballenas :)

El problema de la cantidad de computación se puede resolver creando un cluster, creo que no será un problema reclutar participantes para trabajar en una estrategia ya hecha. Y un ordenador puede, con suerte, manejar un filtro.


Me pregunto cómo el hecho de que "nuestras acciones no tengan impacto en el mercado" simplifica la tarea "en un orden de magnitud". A mí me parece lo contrario. Si nuestras acciones tuvieran un impacto en el mercado (de forma deseable), no sólo se simplificaría sino que incluso se eliminaría el problema. :-) Y entonces no necesitaríamos ningún robot.

En cuanto a la agrupación, me ha molestado. Incluso mi participación personal creo que no salvará la situación. Sólo hay 8.000 millones de personas en la Tierra, probablemente no haya más ordenadores. ¿Cómo se puede hacer un clúster si hay que calcular entre 10 y 100 mil millones de filtros? :-)))

 
Yurixx:
Creo que es lo contrario. Si nuestras acciones influyeran en el mercado (y de forma deseable) no sólo lo simplificarían, sino que lo eliminarían como problema. :-) Y entonces no necesitaríamos ningún robot.

¿De forma deseable? En cuanto nuestras acciones empiecen a afectar notablemente al mercado, éste empezará a trabajar contra nosotros personalmente. Incluidos los bancos centrales y las agencias de inteligencia. Soros tuvo éxito en su momento como acción puntual, ¿y tú quieres tener un modelo que te permita bombear todo el dinero del mundo? Bueno, digamos que funciona. ¿Y quién necesitará el dinero después? :)

Técnicamente, todas las constantes se convertirán en variables.

Con mil millones de participantes, la aproximación de la no retroalimentación dejará de funcionar. Y 100 no es una cifra inalcanzable.

 

Калмановская фильтрация

Introducción

En la actualidad, se utilizan ampliamente los filtros adaptativos en los que la nueva información entrante se utiliza para la corrección continua de una estimación de la señal realizada previamente (seguimiento de objetivos en radiolocalización, sistemas de control automático, etc.). Son especialmente interesantes los filtros adaptativos recursivos, conocidos como filtros de Kalman.

Estos filtros se utilizan ampliamente en los lazos de control de los sistemas de regulación y control automáticos. De ahí su origen, lo que se pone de manifiesto en la terminología tan específica que se utiliza para describir su funcionamiento como espacio de estado.

La tarea de estimar los parámetros

Una de las tareas de la teoría de la decisión estadística de gran importancia práctica es la tarea de evaluación de los vectores de estado y de los parámetros de los sistemas que se formula como sigue. Supongamos que necesitamos evaluar el valor de un parámetro vectorialX que no es directamente medible. En cambio, se mide otro parámetro Z, que depende de X. La tarea de estimación consiste en responder a la pregunta: ¿qué podemos decir sobre X conociendo Z? En general, el procedimiento de estimación óptima del vector X depende del criterio de calidad adoptado para la estimación. Por ejemplo, un enfoque bayesiano de la tarea de estimación de parámetros requiere una información completa a priori sobre las propiedades probabilísticas del parámetro estimado, lo que a menudo es imposible. En estos casos, se utiliza el método de los mínimos cuadrados (LSM), que requiere mucha menos información a priori. Consideremos una aplicación de la LOC para el caso en que el vector de observación Z está conectado con el vector de estimación X por un modelo lineal y existe una interferencia V, no correlacionada con el parámetro estimado:

(1)

donde H es una matriz de transformación que describe la relación entre los valores observados y los parámetros estimados.

La estimación X que minimiza el cuadrado del error se escribe como sigue:

(2)

Dejemos que la perturbación V no esté correlacionada, en cuyo caso la matriz RV es simplemente una matriz unitaria, y la ecuación para la estimación se simplifica:

(3)

Problema de filtrado

A diferencia del problema de estimación de parámetros que tienen valores fijos, en el problema de filtrado necesitamos evaluar procesos, es decir, encontrar estimaciones actuales de la señal variable en el tiempo distorsionada por la interferencia, y por tanto no disponible para la medición directa. En general, el tipo de algoritmos de filtrado depende de las propiedades estadísticas de la señal y de las interferencias. Supongamos que la señal deseada es una función del tiempo que varía lentamente y que la interferencia es un ruido no correlacionado. Utilizaremos el método de los mínimos cuadrados, de nuevo debido a la falta de información a priori sobre las características probabilísticas de la señal y la interferencia.

Esencialmente, hemos implementado un proceso de estimación paramétrica basado en un modelo autorregresivo del proceso de generación de la señal.

La fórmula 3 se implementa fácilmente de forma programática rellenando la matriz H y el vector de columnas de observación Z. Estos filtros se denominan filtros de memoria finita porque utilizan las últimas k observaciones para obtener la estimación actual Xpoc. En cada nuevo ciclo de observación se añade una nueva observación al conjunto actual de observaciones y se descarta la anterior. Este proceso de obtención de estimaciones se denomina ventana deslizante.

Filtros con memoria creciente

Los filtros con memoria finita tienen una gran desventaja: después de cada nueva observación hay que volver a realizar un recálculo completo de todos los datos almacenados. Además, el cálculo de las estimaciones sólo puede iniciarse una vez acumulados los resultados de las primeras k observaciones. Es decir, estos filtros tienen un largo tiempo de proceso transitorio. Para solucionar este inconveniente debemos pasar de un filtro con memoria permanente a un filtro con memoria creciente. En un filtro de este tipo, el número de valores observados utilizados para la estimación debe coincidir con el número n de la observación actual. Esto permite obtener estimaciones a partir de un número de observaciones igual al número de componentes del vector estimado X. Y esto viene determinado por el orden del modelo adoptado, es decir, cuántos términos de la serie de Taylor se utilizan en el modelo. Al mismo tiempo, con el aumento de n se mejoran las propiedades de suavizado del filtro, es decir, se incrementa la precisión de las estimaciones. Sin embargo, la aplicación directa de este enfoque está relacionada con el aumento de los costes computacionales. Por lo tanto, los filtros con memoria creciente se implementan como filtros recurrentes.

Un filtro con memoria creciente tiene una característica importante. Si nos fijamos en la fórmula 6, la estimación final es la suma del vector de estimación predicho y el término de corrección. Esta corrección es grande para n pequeños y disminuye a medida que aumenta n, tendiendo a cero para . Es decir, a medida que n aumenta, las propiedades de suavización del filtro crecen y el modelo inherente al mismo empieza a dominar. Pero la señal real sólo puede ajustarse al modelo en zonas separadas, por lo que la precisión de la predicción empeora. Para luchar contra ella a partir de algún n se prohíbe que el plazo de corrección siga disminuyendo. Esto equivale a un cambio en el ancho de banda del filtro, es decir, a n pequeño el filtro es más amplio (menos inercial), a n mayor se vuelve más inercial.



Compara la Figura 1 y la Figura 2. En la primera figura, el filtro tiene una gran memoria, con un buen alisado, pero debido al estrecho ancho de banda, la trayectoria estimada queda por detrás de la trayectoria real. En la segunda figura, el filtro tiene menos memoria y es menos suave, pero sigue mejor la trayectoria real.

Tras leer la rama desde el principio y echar un vistazo al contenido del artículo extraído anteriormente, queda claro que el método de procesamiento de las PA mediante filtros de Kalman se basa en una afirmación a priori sobre la presencia de tendencias deterministas en las PA analizadas.
Definamos:
1. Sea una variable aleatoria normalmente distribuida con expectativa cero y correlograma de signo cero o variable. Al integrarlo, obtenemos un análogo de una serie temporal. Si la serie es lo suficientemente larga, podemos marcar cualquier tramo largo de movimiento direccional del precio. Llamemos a tal tendencia estocástica. Basándonos en la imposibilidad principal de construir la TS, que podría obtener el beneficio sobre tales series en el intervalo de tiempo largo, concluimos que es imposible detectar las tendencias estocásticas con la ayuda de sistemas casuales.
2. Supongamos que existe una variable aleatoria normalmente distribuida con expectativa cero y correlograma positivo.
Si la serie es lo suficientemente larga, podemos identificar cualquier tramo largo de movimiento direccional de los precios en ella. Llamemos a tal tendencia determinista. En principio, la tendencia determinista puede detectarse mediante filtros digitales de paso bajo o sus derivadas. Por ejemplo, el cruce de dos medias móviles con periodos diferentes no es más que una aproximación a la derivada de una serie temporal suavizada. Está claro que esto funciona como las matemáticas exigen: una derivada mayor que cero significa que la función es creciente, menor que cero significa que la función es decreciente. Pero sólo unos pocos saben que sólo funciona para las series con un FAC positivo, ¡y TODAS las series de divisas en todos los TFs tienen un FAC negativo! Y, en consecuencia, el método no funciona en el mercado o funciona, pero por accidente...
Principales problemas del análisis de series temporales
Las principales diferencias entre una serie temporal y una secuencia de observaciones que forman una muestra aleatoria son las siguientes:
- En primer lugar, a diferencia de los elementos de una muestra aleatoria, los miembros de una serie temporal no son independientes;
- En segundo lugar, los miembros de una serie temporal no están necesariamente distribuidos por igual.

En general, se distinguen 4 factores bajo cuya influencia se forman los valores de las series temporales.
1. Los que forman la tendencia general (a largo plazo) del atributo examinado. Normalmente esta tendencia se describe mediante una función no aleatoria (cuyo argumento es el tiempo), generalmente monótona. Esta función se denomina función de tendencia o simplemente tendencia.
2. Estacional, que forma fluctuaciones periódicas en el atributo analizado en determinadas épocas del año. Dado que esta función debe ser periódica (con periodos múltiples de "estaciones"), su expresión analítica implica armónicos (funciones trigonométricas) cuya periodicidad suele estar determinada por la esencia del problema.
3. Cambios cíclicos (coyunturales) en la formación del atributo analizado causados por ciclos a largo plazo de naturaleza económica o demográfica (ondas de Kondratieff, "pozos" demográficos, etc.).
4. Aleatorios (irregulares), que no pueden ser contados y registrados. Su impacto en la formación de los valores de las series temporales es precisamente lo que determina la naturaleza estocástica de los elementos de la serie, y de ahí la necesidad de interpretar los miembros como observaciones realizadas sobre variables aleatorias. Denotamos el resultado del impacto de los factores aleatorios mediante variables aleatorias ("residuos", "errores").

Por supuesto, no es necesario que los cuatro tipos de factores intervengan simultáneamente en el proceso de formación de los valores de cualquier serie temporal. Las conclusiones sobre si los factores de un tipo determinado participan o no en la formación de los valores de una serie temporal concreta pueden basarse tanto en el análisis de la parte sustancial del problema como en un análisis estadístico especial de la serie temporal investigada. Sin embargo, en todos los casos se supone la participación de factores aleatorios. Así, en términos generales, un modelo de datos (con un esquema estructural aditivo de la influencia de los factores) parece una suma de todos o algunos de los factores.
Existen criterios según los cuales las BPs se refieren a uno u otro tipo. Según ellos, las BPs de tipo FX no contienen tendencias deterministas, no tienen un componente cíclico, no tienen un componente estacional... ¿podría seguir?
Ahora una pregunta para ti, Prival: ¿qué vamos a detectar con un filtro de Kalman multivariado y super sofisticado?



 

El filtro puede establecerse en cualquier proceso no necesariamente determinista. Puede establecer 1 filtro a (1. Largo plazo, ....) 2° filtro a (2. Estacional,...) 3° filtro a (3. Cíclico...) 4° filtro a (4. Aleatorio (irregular),...) etc.

No veo una diferencia fundamental a la hora de analizar y decidir hacia dónde se mueven las cotizaciones y el movimiento del plano. Un avión puede realizar una zambullida, una cabriola, una serpiente, una cobra y . ... cualquier tipo de maniobra en cualquier momento (a gusto del piloto). Y cuando sabe que el misil está lanzado, créanme, está girando como el infierno en una sartén.

La tarea de los filtros de Kalman (¡no un filtro para todos los casos!) sino varios. 1 Determinar - el tipo de maniobra y la hora de su inicio. 2 Predecir dónde estará el avión dentro de un tiempo, para atacarlo de la forma más eficaz posible (obtener beneficios :-)).

Por lo tanto, es necesario construir no un filtro, sino varios, cada uno de los cuales está configurado para su propio modelo (plano, tendencia).

La variante más sencilla es 1 filtro que trabaja con la tendencia y otro con la plana. El algoritmo del filtro Kalman tiene un procedimiento que permite determinar qué filtro es mejor ahora.

Espero que no argumente que hay sistemas que funcionan bien en una tendencia plana pero fallan en una tendencia y viceversa, funcionan bien en una tendencia pero no en una plana. Así que el filtro de Kalman puede indicarle cuándo debe cambiar.

P.D. Todavía intentaré construir el filtro Kalman, construir diferentes patrones de movimiento e implementar el TS basado en ellos. El filtro Kalman tiene una característica única que los indicadores estándar no tienen, es capaz de predecir + digamos que construyo 3 filtros plano, tendencia, brecha. En alguna sección ninguno de estos filtros funciona, analizo esta sección y construyo el cuarto filtro, etc. No se trata de una búsqueda tonta de -100 a +100 (perceptor), sino de un entrenamiento significativo del sistema.
 

a Prival

Espero que no esté poniendo en marcha la Iniciativa de Defensa Estratégica entre comillas como respuesta a los buitres imperialistas. :о)))

 
Prival:
P.D. Todavía intentaré construir un filtro Kalman, construir diferentes patrones de movimiento e implementar un TS basado en ellos. Por ejemplo, voy a construir 3 filtros: Flat, Trend, Gap. En alguna sección ninguno de estos filtros funciona, analizo esta sección y construyo el cuarto filtro, etc. No se trata de una búsqueda tonta de -100 a +100 (perceptor), sino de un aprendizaje sensato del sistema.


Te recomiendo: no te esfuerces demasiado, puedes romperte la mano. Al principio construya sólo un filtro, para plano o tendencia. Mientras lo haces, entenderás mucho sobre Forex, y será más fácil seguir adelante. Es especialmente importante entender lo siguiente: ningún comerciante real tiene como objetivo obtener un beneficio. de cualquier situación. Cada uno encuentra una lista muy limitada para sí mismo y trabaja sólo en estos patrones particulares.

Si se consigue crear un filtro que distinga estadísticamente una sola situación rentable, que no es demasiado rara, digamos, una vez al día, entonces es una cornucopia con la que todo el mundo sueña.

 

Prival, el tema es interesante, me familiaricé con sus artículos - pensamientos sensatos (aunque estoy convencido de que es mejor modelar y filtrar la trayectoria en el sistema de coordenadas cartesianas, pero no es relevante). Sin embargo, cierta similitud visual de la trayectoria Doppler AFK del objetivo aéreo y el movimiento del precio me parece casual y no merece la pena prestarle atención, porque la naturaleza de los procesos es completamente diferente. Las propiedades dinámicas del avión y las cotizaciones, por desgracia, tienen poco en común. En un hilo se comparó el movimiento de los precios con la trayectoria de vuelo de una mosca, no de un avión. Pero ni siquiera una mosca es capaz de hacer gansadas, por ejemplo.

Al mismo tiempo, si define una regresión lineal del precio como señal, puede "atrapar" algunos cientos de pips a lo largo de un año, o incluso cero - si el coeficiente de la regresión lineal es igual a cero. Lo mismo puede decirse de la resonancia estocástica: podemos detectar una tendencia lenta a expensas de una de alta frecuencia con mayor amplitud, pero ¿qué podemos ganar con ello? Dicho esto, a veces se producen movimientos de precios de varias cifras en apenas un par o tres de días. Y puede haber docenas de estos movimientos en un año para casi todas las parejas. Y en marcos temporales pequeños, puede haber cientos de movimientos de media cifra más o menos en un año, y miles de movimientos de 20 pips. Así que la pregunta es: ¿necesitamos una señal o ruido?

De vez en cuando repito en el foro mi tesis de que no tiene sentido dividir el precio en señal y ruido. Es una serie temporal que describe un proceso no estacionario en un sistema dinámico no lineal supercomplejo. Es un escalar que observamos como medida generalizada de millones de parámetros primarios. No es necesario dividirlo en componentes: no hay ninguno. Por lo tanto, la aplicación de los métodos tradicionales de filtración (parece que ya se han discutido en este foro en varias ocasiones) no es adecuada para la tarea.

¿Existen métodos adecuados? Sí, los hay. En vísperas del campeonato, por sugerencia de klot y otros participantes del foro, me interesé por la inteligencia artificial. El término, por desgracia, fue despreciado, y algunas publicaciones aquí en el sitio incluso lo devaluaron a mis ojos, por lo que durante mucho tiempo me encogí de hombros ante la "novedosa" teoría. Sin embargo - no, la antipublicidad también es publicidad, en algún momento la propaganda de Perceptron también jugó un papel positivo para atraer la atención sobre el tema. Pero después de leer la bibliografía he visto lo lejos que ha llegado la llamada "IA débil" en comparación con, por ejemplo, hace treinta años, cuando oí hablar de ella por primera vez. Más concretamente, lo atrasado que estoy.

He implementado una cuadrícula simple, pero los ejemplos de otros Asesores Expertos, y especialmente el actual líder Better, muestran que es una buena dirección a seguir.

Prival, no quiero confundirte con tu plan, pero estoy convencido de que encontrarás mucha utilidad en la IA también para tu actividad profesional y construirás una TS rentable más rápidamente.

 

Señores, déjenme darles un consejo. Me ofreces otras formas de construir mi ST (dando ejemplos de IA, redes neuronales, pero desde mi punto de vista no las entiendes del todo). O tal vez piense que acabo de empezar a tratar con Forex (aunque recuerdo los tiempos en los que el spread mínimo era de 10-15 pips y parecía una bendición), o que no tengo ni idea de la IA, las redes neuronales y de dónde salen las piernas :-).

Ahora intentaré ayudarte a entender lo que quiero hacer y lo que tú haces, si creas una "red simple entrenada".

Para que se entienda mejor te pongo el enlace, léelo de nuevo y compáralo con lo que escribo a continuación (no encuentro la declaración de klot, desgraciadamente, a lo mejor dice ahí también).

Cómo encontrar una estrategia de trading rent able ('How to find a profitable trading strategy')

Negociación automatizada inusual ("Unusual Automated Trading")

He aquí una cita "Si dividimos los objetos en dos clases: largos y cortos, y tomamos como características los valores de los indicadores u osciladores del análisis técnico, entonces sólo tenemos que averiguar la ecuación del plano e intentar utilizarla para la identificación. El planteamiento del problema es claro.

Esta es la teoría del reconocimiento en su forma pura, y los militares la utilizan perfectamente bien y desde hace mucho tiempo (ejemplos de clases ("amigo - extranjero", (caza - portaaviones, etc.). Y aquí es una tarea más complicada que 4 clases (BMP - APC - modelo BMP - modelo APC), tratar de hacer con una línea recta aquí :-), dividir todo en 4 clases con él.

Las redes neuronales, la famosa IA surgió justo de esta teoría simplemente la gente es inherentemente perezosa y quiere crear un sistema de nuevo citar"¿Qué tan realista es el comercio con éxito y cómodamente utilizando la plataforma de negociación MT4, y no demasiado carga, al hacerlo, con el análisis meticuloso del mercado?". Entrenar a un ordenador para que reconozca un gran número de clases y características es muy difícil, por eso se crearon las redes neuronales (NS). NS ha tenido algo de éxito, pero esto no es una panacea, no hay INTELECTO allí. Lo principal en estas tareas, y más importante, es la partición en clases y la selección de características para reconocer estas clases.

Después de leer este material, tengo la impresión de que, o bien los autores no entienden lo que hacen, o bien nos engañan sabiéndolo muy bien. A continuación, un fragmento de muestra del código principal.

double perceptron() 
  {
   double w1 = x1 - 100.0;
   double w2 = x2 - 100.0;
   double w3 = x3 - 100.0;
   double w4 = x4 - 100.0;
   double a1 = iAC(Symbol(), 0, 0);
   double a2 = iAC(Symbol(), 0, 7);
   double a3 = iAC(Symbol(), 0, 14);
   double a4 = iAC(Symbol(), 0, 21);
   return (w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4);
  }

Si he creado un algoritmo de combate que determina el "amigo-o-enemigo" utilizando como señal (un indicador técnico Aceleración/Desaceleración (AC)), a la pared será poco (incluso si tengo en cuenta la aceleración del objeto hace 7, 14 y 21 minutos). No cambia la esencia. Y ojo, sólo hablo de la tarea de dividir en clases y no de qué hacer con ellas una vez separadas. Los autores del material anterior, mezclando todo en un montón (inmediatamente en la lucha para comprar o vender).

Ahora me gustaría volver al material que coloqué en este hilo y mostrar cómo debería ser el TC (naturalmente desde mi punto de vista).

1. Aquí tienes una imagen, piénsalo, quizás te diga cómo mejorar las "mallas" que creas. Este es un detector de Waldowsky en una imagen (lógica SÍ-NO, hablé de ello hace unas páginas).

2. Definir claramente los signos de reconocimiento (quiero utilizar como ellos los modelos de "comportamiento" que establezco en el filtro de Kalman.) Lo que se pone en no sé, tratar de observar al menos una condición características no deben estar correlacionados (fuertemente correlacionado).

Determine la clase en la que va a dividir el flujo de entrada de cotizaciones (digamos "tendencia plana"). Y sólo después de que el reconocimiento de la corriente de lanzarse a la batalla, es decir, elegir un sistema de comercio que funciona bien en la plana, el otro - en la tendencia.

P.D. He vuelto a perder medio día, diciendo las cosas obvias para mí, pero mi objetivo no ha sido alcanzado :-(. Nunca he encontrado a nadie que quiera ayudarme a crear la ST. Probablemente borre el infierno de este hilo.

 

Creo que la crítica constructiva es tan valiosa como un posible acuerdo entre las partes en la fase de diseño y la discusión de una posible estrategia. Puede ahorrar tiempo y esfuerzo. Por lo tanto, no veo ninguna razón para molestarse: estamos en el mismo equipo y tenemos un objetivo común.

A usted, Prival, ya se le ha hecho notar varias veces que el avión tiene masa y, por tanto, siempre es posible elegir una discreción de la partición de la escala de tiempo tal que la curva que describe el movimiento del avión en el espacio, teniendo en cuenta todas las posibles volteretas, sea suave. La superposición de una interferencia aleatoria aditiva en esta curva no cambia el panorama: podemos reconstruir la trayectoria y somos capaces de predecir. Considero que este es un punto fundamental que distingue el comportamiento del tipo de precio de la RV. No existe una curva suave en las series de precios cargada de interferencias; hay criterios de evaluación que lo dicen con cierta certeza.

Esta es una crítica de mi parte, y usted, hasta ahora, no ha respondido constructivamente a ella.