asm
Class World

asm.World

public class World

Title: World

El Mundo es una clase que principalmente sirve para satisfacer las necesidades de información de BFagents. World toma los datos del precio y los convierte en tendencias medias....

Una instancia de este Objeto es creada para manejar las variables de world, las variables globalmente visibles que reflejan el propio mercado, incluyendo sus medias móviles....Todo está basado en sólo dos variables básicas, price & dividend, las cuales sólo se establecen mediante los métodos setPrice() y setDividend().

World también maneja la lista de bits, traduciendo entre el nombre de los bits y su número, y dando descripciones de las funciones de los bits.

Copyright:

Depto. de Organización y Gestión de Empresas. Universidad de Valladolid

Version:
1.0
Author:
José Manuel Galán & Luis R. Izquierdo

Field Summary
static java.util.LinkedList bitnameList
          Lista enlazada de java cuyos elementos son instancias de la clase BitName.
private  double[] divhistory
          Array que contiene la historia del dividendo (MAXHISTORY valores)
 double dividend
          dividend
 double dividendscale
          La línea media del dividendo
 MovingAverage[] divMA
          Array de instancias de MovingAverage que contiene el valor de las medias móviles calculadas sobre el dividendo.
 int[] dupdown
          Array de dimensión UPDOWNLOOKBACK que indica si el dividendo ha subido o bajado en los últimos UPDOWNLOOKBACK periodos
static int EQ
           
 boolean exponentialMAs
          True si queremos medias móviles exponenciales.
 int history_top
          Valor del índice de los arrays de históricos que se está modificando
 double intrate
          Tasa de interés
 int[] malength
          Este array contiene la longitud de las medias móviles que vamos a calcular. (p. ej. 0, 20, 100 y 500).
static int MAXHISTORY
          Nº de periodos de los que se conserva el registro del dividendo y del precio.
static int NMAS
          Nº de medias móviles
static int NRATIOS
          Número de puntos críticos para los ratios precio-de-mercado/precio-fundamental y dividendo/dividendo-medio
static int NULLBIT
           
 int nworldbits
          El nº de aspectos de world que son registrados como bits
static int NWORLDBITS
          El nº de aspectos de world que son registrados como bits
 double olddividend
          dividendo anterior
 MovingAverage[] olddivMA
          Array de instancias de MovingAverage que contiene el valor de las medias móviles calculadas sobre el dividendo del periodo anterior.
 double oldprice
          precio anterior
 MovingAverage[] oldpriceMA
          Array de instancias de MovingAverage que contiene el valor de las medias móviles calculadas sobre el precio del periodo anterior.
 double price
          precio que vacia el mercado
private  double[] pricehistory
          Array de la historia de precios (MAXHISTORY valores)
 MovingAverage[] priceMA
          Array de instancias de MovingAverage que contiene el valor de las medias móviles calculadas sobre el precio.
 double profitperunit
          Beneficio por acción y periodo = price - oldprice + dividend
 int[] pupdown
          Array de dimensión UPDOWNLOOKBACK que indica si el precio ha subido o bajado en los últimos UPDOWNLOOKBACK periodos
static int PUPDOWNBITNUM
          El número del bit que indica si el precio ha subido o ha bajado
static double[] ratios
          Puntos críticos para los ratios precio-de-mercado/precio-fundamental y dividendo/dividendo-medio
(package private)  int[] realworld
          Array que contiene la ristra de bits que determinan el estado del mercado.
 double returnratio
          Medida de rentabilidad = profitperunit/oldprice
 double riskNeutral
          Precio fundamental = dividend/intrate
 double saveddividend
          copia del dividendo antiguo, que se usa para comprobar que no se ha corrompido el valor en algun punto del programa
 double savedprice
          copia del precio antiguo, que se usa para comprobar que no se ha corrompido el valor en algun punto del programa
 int updown_top
          Número de periodos a los que se mira atrás para rellenar los bits de cambio del precio y del dividendo (¿ha subido o ha bajado?)
static int UPDOWNLOOKBACK
          Nº de movimientos up/down que se almacenan del precio y el dividendo, incluyendo los valores actuales
 
Constructor Summary
(package private) World(swarm.defobj.Zone aZone)
          Constructor de la clase
 
Method Summary
static int bitNumberOf(java.lang.String name)
          Convierte un nombre de un bit, en un número de bit.
 int ChangeBooleanToInt(boolean a)
          Función para pasar de un valor boolean a un entero: true -> 1. false -> 0.
 void createBitnameList()
          Crea e inicializa la bitnameList: lista enlazada de java cuyos elementos son instancias de la clase BitName.
static java.lang.String descriptionOfBit(int n)
          Proporciona una descripción del bit especificado, tomado de la lista bitnamelist[].También funciona para NULLBIT.
 void drop()
          Liberador de memoria
 double getDividend()
          Devuelve el dividendo más reciente; Se llama varias veces
 double GETMA(MovingAverage[] x, int j)
          Devuelve la media móvil apropiada, comprobando si hemos elegido usar medias móviles exponenciales o no.
 int getNumWorldBits()
          Devuelve nworldbits; Usado por el BFagent.
 double getPrice()
          Devuelve el precio; Usado por muchas clases.
 double getProfitPerUnit()
          Devuelve profitperunit, usado por Specialist
 java.lang.Object getRealWorld(int[] anArray)
          Devuelve el array de bits realworld.
 double getRiskNeutral()
          Devuelve el precio neutral al riesgo.
 java.lang.Object initWithBaseline(double baseline)
          Inicializa las medias móviles, partiendo de la base de que el dividendo ha valido siempre su "valor medio", o baseline.
 int irand(int x)
          Método implementado para obtener nºs enteros aleatorios en el intervalo [0,x-1].
private  java.lang.Object makebitvector()
          Calcula todos los world bits a partir del dividendo actual, del precio, de las medias móviles y de los históricos.
static java.lang.String nameOfBit(int n)
          Proporciona el nombre del bit especificado, tomado de la tabla bitnamelist[] de abajo.También funciona para NULLBIT.
 int pricetrend(int n)
          Devuelve +1, -1, ó 0 dependiendo de si el precio ha subido monotónicamente, caído monotónicamente, o nada, a lo largo de n periodos.
 java.lang.Object setDividend(double d)
          Establece el valor del dividendo.
 java.lang.Object setExponentialMAs(boolean aBool)
          Fija el valor de exponentialMAs, que vale true si queremos usar medias móviles y false en caso contrario.
 java.lang.Object setintrate(double rate)
          Fija la tasa de interés
 java.lang.Object setPrice(double p)
          Pone el precio de mercado a "p".
 java.lang.Object updateWorld()
          Actualiza la historia, las medias móviles, y los bits del mundo para reflejar el precio y el dividendo actual.
 

Field Detail

UPDOWNLOOKBACK

public static final int UPDOWNLOOKBACK
Nº de movimientos up/down que se almacenan del precio y el dividendo, incluyendo los valores actuales

NMAS

public static final int NMAS
Nº de medias móviles

MAXHISTORY

public static final int MAXHISTORY
Nº de periodos de los que se conserva el registro del dividendo y del precio. La media móvil más larga permitida

NWORLDBITS

public static int NWORLDBITS
El nº de aspectos de world que son registrados como bits

NULLBIT

public static final int NULLBIT

PUPDOWNBITNUM

public static final int PUPDOWNBITNUM
El número del bit que indica si el precio ha subido o ha bajado

ratios

public static final double[] ratios
Puntos críticos para los ratios precio-de-mercado/precio-fundamental y dividendo/dividendo-medio

NRATIOS

public static final int NRATIOS
Número de puntos críticos para los ratios precio-de-mercado/precio-fundamental y dividendo/dividendo-medio

EQ

public static final int EQ

intrate

public double intrate
Tasa de interés

dividendscale

public double dividendscale
La línea media del dividendo

pupdown

public int[] pupdown
Array de dimensión UPDOWNLOOKBACK que indica si el precio ha subido o bajado en los últimos UPDOWNLOOKBACK periodos

dupdown

public int[] dupdown
Array de dimensión UPDOWNLOOKBACK que indica si el dividendo ha subido o bajado en los últimos UPDOWNLOOKBACK periodos

history_top

public int history_top
Valor del índice de los arrays de históricos que se está modificando

updown_top

public int updown_top
Número de periodos a los que se mira atrás para rellenar los bits de cambio del precio y del dividendo (¿ha subido o ha bajado?)

price

public double price
precio que vacia el mercado

oldprice

public double oldprice
precio anterior

dividend

public double dividend
dividend

olddividend

public double olddividend
dividendo anterior

saveddividend

public double saveddividend
copia del dividendo antiguo, que se usa para comprobar que no se ha corrompido el valor en algun punto del programa

savedprice

public double savedprice
copia del precio antiguo, que se usa para comprobar que no se ha corrompido el valor en algun punto del programa

riskNeutral

public double riskNeutral
Precio fundamental = dividend/intrate

profitperunit

public double profitperunit
Beneficio por acción y periodo = price - oldprice + dividend

returnratio

public double returnratio
Medida de rentabilidad = profitperunit/oldprice

malength

public int[] malength
Este array contiene la longitud de las medias móviles que vamos a calcular. (p. ej. 0, 20, 100 y 500). Su dimensión es el número de medias móviles diferentes de las que disponemos.

nworldbits

public int nworldbits
El nº de aspectos de world que son registrados como bits

realworld

int[] realworld
Array que contiene la ristra de bits que determinan el estado del mercado. Este es el resultado fundamental de World.

exponentialMAs

public boolean exponentialMAs
True si queremos medias móviles exponenciales.

priceMA

public MovingAverage[] priceMA
Array de instancias de MovingAverage que contiene el valor de las medias móviles calculadas sobre el precio.

divMA

public MovingAverage[] divMA
Array de instancias de MovingAverage que contiene el valor de las medias móviles calculadas sobre el dividendo.

oldpriceMA

public MovingAverage[] oldpriceMA
Array de instancias de MovingAverage que contiene el valor de las medias móviles calculadas sobre el precio del periodo anterior.

olddivMA

public MovingAverage[] olddivMA
Array de instancias de MovingAverage que contiene el valor de las medias móviles calculadas sobre el dividendo del periodo anterior.

bitnameList

public static java.util.LinkedList bitnameList
Lista enlazada de java cuyos elementos son instancias de la clase BitName. Cada uno de estos objetos, que definen a un bit de estado, se compone de un nombre y de una breve descripción.

divhistory

private double[] divhistory
Array que contiene la historia del dividendo (MAXHISTORY valores)

pricehistory

private double[] pricehistory
Array de la historia de precios (MAXHISTORY valores)
Constructor Detail

World

World(swarm.defobj.Zone aZone)
Constructor de la clase
Parameters:
aZone - Zona de memoria Swarm en la que se aloja el objeto Swarm
Method Detail

createBitnameList

public void createBitnameList()
Crea e inicializa la bitnameList: lista enlazada de java cuyos elementos son instancias de la clase BitName. Cada uno de estos objetos, que definen a un bit de estado, se compone de un nombre y de una breve descripción.

irand

public int irand(int x)
Método implementado para obtener nºs enteros aleatorios en el intervalo [0,x-1].
Parameters:
x -  
Returns:
double El número aleatorio.

GETMA

public double GETMA(MovingAverage[] x,
                    int j)
Devuelve la media móvil apropiada, comprobando si hemos elegido usar medias móviles exponenciales o no.
Parameters:
x - Array que contiene las medias móviles (MovingAverage[])
j - Indica qué media móvil usar. (Índice de x[])
Returns:
Media móvil exponencial o normal dependiendo de exponentialMAs.

ChangeBooleanToInt

public int ChangeBooleanToInt(boolean a)

Función para pasar de un valor boolean a un entero:

true -> 1.

false -> 0.

Parameters:
a - El valor boolean (true o false).
Returns:
int El valor entero (1 ó 0).

descriptionOfBit

public static java.lang.String descriptionOfBit(int n)
Proporciona una descripción del bit especificado, tomado de la lista bitnamelist[].También funciona para NULLBIT.
Parameters:
n - Número del bit del que queremos la descripción
Returns:
description Descripción del bit especificado

nameOfBit

public static java.lang.String nameOfBit(int n)
Proporciona el nombre del bit especificado, tomado de la tabla bitnamelist[] de abajo.También funciona para NULLBIT. Básicamente, convierte un número de bit en el nombre del bit
Parameters:
n - Número del bit del que queremos el nombre.
Returns:
name Nombre del bit especificado.

bitNumberOf

public static int bitNumberOf(java.lang.String name)
Convierte un nombre de un bit, en un número de bit. Proporciona el nº del bit dado su nombre. Nombres desconocidos devuelven NULLBIT. Es un método relativamente lento (búsqueda lineal).
Parameters:
name - Nombre del bit del que queremos el nombre.
Returns:
int Número del bit especificado.

setintrate

public java.lang.Object setintrate(double rate)
Fija la tasa de interés
Parameters:
rate - Tasa de interés.
Returns:
this

setExponentialMAs

public java.lang.Object setExponentialMAs(boolean aBool)
Fija el valor de exponentialMAs, que vale true si queremos usar medias móviles y false en caso contrario. El valor de exponentialMAs se puede modificar desde la sonda de la instancia asmModelParams.
Parameters:
aBool -  
Returns:
this

getNumWorldBits

public int getNumWorldBits()
Devuelve nworldbits; Usado por el BFagent.
Returns:
nworldbits El nº de aspectos de world que son registrados como bits.

initWithBaseline

public java.lang.Object initWithBaseline(double baseline)

Inicializa las medias móviles, partiendo de la base de que el dividendo ha valido siempre su "valor medio", o baseline. La "baseline" puede modificarse desde la sonda del asmModelSwarm. Esta inicialización no es relevante porque antes de la simulación se ejecuta el programa de calentamiento, mucho más realista que esta suposición.

Este método sólo se ejecuta una vez.

Parameters:
baseline -  
Returns:
this

setPrice

public java.lang.Object setPrice(double p)
Pone el precio de mercado a "p". Todos los cambios de precios (además de los trial prices) deben usar este método. También calcula profitperunit and returnratio. Comprueba que no se hayan producido cambios ilegales en el precio.
Parameters:
p - precio
Returns:
this

getPrice

public double getPrice()
Devuelve el precio; Usado por muchas clases.
Returns:
price

getProfitPerUnit

public double getProfitPerUnit()
Devuelve profitperunit, usado por Specialist
Returns:
profitperunit

setDividend

public java.lang.Object setDividend(double d)
Establece el valor del dividendo. Todos los cambios de dividendos deben usar este método. Comprueba que no se hayan producido cambios ilegales en el dividendo.
Parameters:
d - Dividendo
Returns:
this

getDividend

public double getDividend()
Devuelve el dividendo más reciente; Se llama varias veces
Returns:
dividend

getRiskNeutral

public double getRiskNeutral()
Devuelve el precio neutral al riesgo. Es simplemente dividend/intrate.
Returns:
riskNeutral Precio neutral al riesgo

updateWorld

public java.lang.Object updateWorld()
Actualiza la historia, las medias móviles, y los bits del mundo para reflejar el precio y el dividendo actual. Conviene darse cuenta de que es llamado cada periodo después de que un nuevo dividendo es declarado pero antes del ajuste final de oferta y demanda. Por lo tanto, los bits vistos por los agentes no reflejan el "trial price". "Price" aquí se convierte en "oldprice" al final del periodo. Se llama una vez por periodo.
Returns:
this

makebitvector

private java.lang.Object makebitvector()
Calcula todos los world bits a partir del dividendo actual, del precio, de las medias móviles y de los históricos. Este metodo calcula todos los elementos del array realworld, bit a bit, estableciendo los valores a 0, 1 o 2, de acuerdo con los datos que han sido observados. Es crucial que el orden aquí sea el mismo que en bitnamelist[]
Returns:
this

getRealWorld

public java.lang.Object getRealWorld(int[] anArray)
Devuelve el array de bits realworld. Usado por BFagent para comparar su mundo con realworld
Parameters:
anArray - Array en el que se copia realworld
Returns:
this

pricetrend

public int pricetrend(int n)
Devuelve +1, -1, ó 0 dependiendo de si el precio ha subido monotónicamente, caído monotónicamente, o nada, a lo largo de n periodos. Si n es muy garnde puede causar algún error
Parameters:
n - número de periodos atrás en que se encuentra el precio referencia
Returns:
int

drop

public void drop()
Liberador de memoria