Consulta SQL++ / N1QL

Modelización del proceso de correspondencia de taxlotes en N1QL

Objeto de este artículo

Este artículo enumera cómo el proceso de comparación de lotes fiscales puede ser modelado y ejecutado en Couchbase. Mientras que el modelo de datos en sí es algo subjetivo, este artículo sólo va a enumerar las principales entidades involucradas en el modelo y la consulta N1QL que se puede utilizar para ejecutar el proceso de comparación de lote de impuestos.

Antes de sumergirnos en la solución asumo que el lector es consciente o está dispuesto a invertir algún tiempo familiarizándose con algunas de las estructuras en N1QL que son muy parecidas a SQL pero tiene algunas características extra específicas de JSON.

  1. La cláusula NEST puede utilizarse contra matrices para transponer filas a columnas
  2. UNNEST se puede utilizar para desensamblar un array en filas

Dado que los documentos JSON y N1QL son tan ricos en funciones, sería muy útil disponer de una introducción rápida a la sintaxis.

https://learn.couchbase.com/store/

http://developer.couchbase.com/documentation/server/4.1/n1ql/n1ql-language-reference/index.html

¿Qué es un lote fiscal?

lote fiscal es un registro de una operación de apertura (por ejemplo, una compra o una venta al descubierto) en su cartera. Si una orden se ejecuta en varias partes, lo que se denomina ejecuciones parciales, los precios se promediarán y se representarán mediante un único registro. lote fiscal número. Puede tener varios lotes fiscales dentro de la posición global de un valor.

Cada vez que adquiere un valor, la nueva posición es distinta y separada. lote fiscal - incluso si ya poseía acciones del mismo valor. (Un lote fiscal es un registro de una transacción y sus implicaciones fiscales, que incluye la fecha de compra y el número de acciones). 

método de identificación del lote fiscal es la forma en que determinamos qué lotes fiscales deben venderse cuando usted tiene una posición consistente en múltiples compras realizadas en diferentes fechas a distintos precios, y usted realiza una operación para vender sólo una parte de la posición. La ley nos obliga a seguir y conservar esta información, y a comunicarle a usted y a Hacienda la base de coste y los ingresos.

Su elección del método de identificación fiscal del lote puede tener un impacto significativo en la cantidad de impuestos que puede pagar cuando vende un activo.

Metodologías de asignación de lotes fiscales

Las consultas que se muestran en este artículo mostrarán sólo el método FIFO, ya que parece ser la metodología más popular, pero estoy enumerando las metodologías de todos modos

 

Primero en entrar, primero en salir (FIFO)

  1. El método por defecto para emparejar lotes fiscales. Las ventas se emparejan con las compras más antiguas secuencialmente. FIFO supone que los activos que permanecen en el inventario se emparejan con los activos comprados o producidos más recientemente. FIFO se utiliza siempre para futuros y opciones sobre futuros.

 

Última entrada, primera salida (LIFO)

  1. Cada venta se empareja con la compra más reciente posible. LIFO supone que una entidad vende, utiliza o enajena primero sus existencias más recientes.

 

Maximizar las ganancias a largo plazo - Las ventas se emparejan en función del siguiente conjunto de prioridades:

1. Maximizar la ganancia por acción a largo plazo

2. Maximizar la ganancia por acción a corto plazo

3. Minimizar las pérdidas a corto plazo por acción

4. Minimizar las pérdidas por acción a largo plazo

 

Maximizar las pérdidas a largo plazo - Las ventas se emparejan en función del siguiente conjunto de prioridades:

1. Maximizar la pérdida por acción a largo plazo

2. Maximizar las pérdidas por acción a corto plazo

3. Minimizar la ganancia por acción a corto plazo

4. Minimizar la ganancia por acción a largo plazo

 

Maximizar las ganancias a corto plazo - Las ventas se emparejan en función del siguiente conjunto de prioridades:

1. Maximizar la ganancia por acción a corto plazo

2. Maximizar la ganancia por acción a largo plazo

3. Minimizar las pérdidas por acción a largo plazo

4. Minimizar las pérdidas a corto plazo por acción

 

Maximizar las pérdidas a corto plazo - Las ventas se emparejan en función del siguiente conjunto de prioridades:

1. Maximizar las pérdidas por acción a corto plazo

2. Maximizar las pérdidas por acción a largo plazo

3. Minimizar la ganancia por acción a largo plazo

4. Minimizar la ganancia por acción a corto plazo

 

Coste más elevado - Busca maximizar las pérdidas minimizando las ganancias. Las ventas se emparejan en función

en las siguientes normas:

  • En primer lugar, examina todas las opciones posibles para hacer coincidir una operación de cierre con un lote abierto.
  • Si cualquiera de las coincidencias posibles da como resultado una pérdida, el método elige la coincidencia que

resulta en la mayor pérdida posible.

  • Si no hay ninguna coincidencia posible que dé como resultado una pérdida, el método elige la coincidencia que da como resultado

en la menor ganancia posible.

 

Lote específico - Le permite ver todos sus lotes fiscales y operaciones de cierre y, a continuación, emparejar lotes manualmente.

a las operaciones. Lote específico está disponible para hoy o una posición, pero no está disponible como el

Cuenta Método de concordancia por defecto.

Utilizar un ejemplo vivo

Dado que las entradas tienen este aspecto

 

 

Las reglas de negocio establecen que Para minimizar los impuestos, cada transacción necesita ser emparejada con una transacción que ocurra después de la transacción actual con un Tipo de Operación opuesto, por ejemplo: B significa Compra y necesitará ser cerrada con una transacción que tenga el Tipo de Operación opuesto en este caso S o VENTA y la Cantidad necesita ser igual o mayor que la Operación que está siendo cerrada y tiene que tener una Fecha de Operación mayor que la Fecha de Operación de la operación que está siendo cerrada.

Entidades en un Lote Fiscal Específico de Coincidencia

El supuesto es que esto está siendo ejecutado por un fondo de cobertura, empresa de servicios financieros que presta servicios a varios clientes, los clientes. Aunque el # de elementos que se capturan es mucho más amplio de lo que se enumera aquí, mi intento es simplemente mostrar los elementos más importantes que participan en el proceso de Tax Lot Matching. Modelar esto en Couchbase puede tomar dos caminos

  1. Si está migrando desde una base de datos relacional y desea migrar rápidamente algunos datos y luego adaptar la NoSQL para que modele su negocio, podría crear un tipo de documento para cada entidad, es decir, Trader podría ser una entidad, Instrument podría ser otra entidad. Y usted puede incluir un elemento de tipo en cada documento que significaría el tipo de documento

 

Un modelo relacional de ejemplo tendría el siguiente aspecto,

 

 

Traduciendo esto literalmente para adaptarlo a un modelo documental las entidades quedarían así

 

 

 

Ejemplo de modelo desnormalizado para la entidad TradeOrder, que es realmente donde tendrá lugar el proceso TaxLot Matching.

Ejecución del proceso de lote fiscal mediante N1QL

Vamos a asumir el método FIFO para TaxLot Matching. Si bien este proceso es muy adecuado para un lenguaje funcional, ya que necesita iterar a través de las filas a través de un orden predeterminado y necesita almacenar en caché el conjunto de resultados, quería enumerar cómo se puede ejecutar esto en N1QL debido a la riqueza y versatilidad del lenguaje.

Pasos

  1. Se supone que el lector está familiarizado con Couchbase y puede navegar por la consola de administración.
  2. Cree un cubo, llamémoslo Taxlot_Demo
  3. Cree los documentos necesarios para disponer de un buen banco de pruebas
  4. A continuación crearemos un bucket temporal que creará un array de todas las operaciones para un grupo de criterios de coincidencia. Suponiendo en este caso que sólo queremos coincidir entre un determinado fondo, trader, broker, estrategia, instrumento y TradeType la imagen antes y después se ve así.

 

 

5.Luego en una sola consulta obtendremos las coincidencias del lote fiscal, como la consulta alcanza para mucho la desglosaré en pasos para facilitar la comprensión y listaré la consulta completa al final. El paso e es la única consulta necesaria para ejecutar el proceso Taxlot en Couchbase, las viñetas intermedias a,b, c, d sólo enumeran la consulta mayor del paso e.

a. La consulta más interna en el paso f crea una columna concatenada que puede compararse con la clave del paso 4.  

 

 b. A continuación lo uno a la tabla materializada creada en el paso 4, el resultado de esta consulta será cada operación dentro de un criterio de agrupación y la matriz de posibles coincidencias.

 

c. A continuación, UNNEST la matriz para crear un muchos a muchos relación entre todas las filas dentro del grupo FundId,TraderId,BrokerId,Strategy,InstrumentId,LongShort 

 

d. A continuación, aplico las reglas de negocio para obtener una transacción firmada opuesta para encontrar una coincidencia de lote fiscal

e. Y, por último, devolver sólo los registros que deben cerrarse.

 

Resultados

Por lo tanto, dado que su conjunto de datos tiene este aspecto, la operación 1 se cierra con la operación 2, ya que la operación 1 es una operación de COMPRA y coincide con la operación 1, que es una operación de VENTA. La operación 3 no coincide, por lo que no se cerrará.

Del mismo modo, la Operación 4 se cierra con la Operación 5.

Las operaciones 7 a 9 son todas de COMPRA y no tienen una operación de VENTA correspondiente, por lo que no se cierran.

 

Conclusión

 

El propósito de este artículo era enumerar cómo se puede utilizar N1QL para resolver consultas muy complejas de acceso a datos. Si uno está acostumbrado a escribir funcionalidades complejas en SQL ahora se puede hacer muy fácilmente en N1QL. Los ejemplos utilizados para este artículo se han simplificado a propósito para que sea fácil de seguir, es posible que haya que añadir un par de ajustes o uniones o consultas adicionales para llegar al resultado que su organización está buscando obtener.

 

Para una mejor comprensión de la arquitectura de Couchbase Server consulte el siguiente enlace https://www.couchbase.com/downloads/?family=couchbase-server/

 

Para una exposición más profunda de N1Ql y las construcciones que ofrece , consulte este enlace

https://developer.couchbase.com/documentation/server/4.1/n1ql/index.html

 

 

____________________________________________________________________________

Este artículo ha sido escrito por Sandhya Krishnamurthy, Ingeniera Superior de Soluciones de Couchbaseproveedor líder de bases de datos NoSQL.

Póngase en contacto con el autor en sandhya.krishnamurthy@couchbase.com

 

Visite los siguientes sitios para obtener más información sobre los productos Couchbase, descargas gratuitas de productos y formación gratuita

www.couchbase.com

https://www.couchbase.com/downloads/

https://learn.couchbase.com/store/

 

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Sandhya Krishnamurthy, Ingeniera Superior de Soluciones, Couchbase

Sandhya Krishnamurthy es una tecnóloga con una sólida formación en desarrollo de bases de datos y experiencia en preventa. Es artista a tiempo parcial, cantante a tiempo parcial y madre a tiempo completo.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.