asm
Class Agent

asm.Agent
Direct Known Subclasses:
BFagent

public class Agent

Title: Agent

Description: Esta es la superclase abstracta de todas las clases de agentes; Todos los agentes debes ser descendientes directos o indirectos de esta clase

Copyright:

Depto.Organización Industrial. Universidad de Valladolid

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

Field Summary
 double cash
          Posición de cada agente en el activo libre de riesgo
 double demand
          "Demanda u -oferta"
 double dividend
          Dividendo mantenido por la clase World
 double initialcash
          Cash inicial de cada agente
 double intrate
          Tasa de interés del activo libre de riesgo
 double intratep1
          Tasa de interés del activo libre de riesgo+1
 double mincash
          Máximo de endeudamiento de cada agente
 double minholding
          Para la venta en corto
 int myID
           
 double position
          Total de acciones del activo
 double price
          Precio mantenido por la clase World
 double profit
          Media móvil con pesos exponenciales
 double wealth
          Riqueza total de los agentes
static World worldForAgent
           
 
Constructor Summary
(package private) Agent(swarm.defobj.Zone aZone)
           
 
Method Summary
 double constrainDemand(double slope, double trialprice)
          Método utilizado por los agentes para restringir sus demandas de acuerdo a las limitaciones de mincash y minholding
 java.lang.Object creditEarningsAndPayTaxes()
          Este método se envía a cada agente una vez que el dividendo es declarado.
 double getAgentPosition()
          Devuelve la posición actual del agente
 double getCash()
          Devuelve el actual nivel de cash del agente
 double getDemandAndSlope$forPrice(double slope, double p)
          Este mensaje se manda a cada agente para preguntar si van a demandar ( demand > 0) u ofrecer (demand < 0) para el precio p.
 java.lang.Object getDividendFromWorld()
          Iguala la variable de instancia de agent, dividend, al dividendo actual.
 java.lang.Object getPriceFromWorld()
          Iguala una variable de instancia de agent, price, al precio actual que es controlado por el objeto conocido por "world".
 double getWealth()
          Devueleve wealth actual de cada agente
 java.lang.Object prepareForTrading()
          Deba ser sobreescrito por cada subclase
 java.lang.Object setID(int iD)
          Da un nombre entero(integer) a cada agente durante la creación.
 java.lang.Object setInitialCash(double initcash)
          Establece el cash inicial de cada agente
 java.lang.Object setInitialHoldings()
          Establece las acciones iniciales de cada agente.
 java.lang.Object setintrate(double rate)
          Configura la variable intrate y calcula intratep1( intratep + 1) para mejorar la velocidad
 java.lang.Object setminHolding$minCash(double holding, double minimumcash)
          Configura las restricciones de préstamo y venta en corto.
 java.lang.Object setPosition(double aDouble)
          Configura la "posición" del agente en "aDouble"
static void setWorld(World aWorld)
          Configura el mundo para cada agent.
 java.lang.Object updatePerformance()
          Se envia este mensaje a cada agente en cada periodo para decirle que actualice sus medidas, su precisión, sus reglas...El código por defecto no hace nada, debe ser implementado por cada clase que herede de esta
 

Field Detail

demand

public double demand
"Demanda u -oferta"

profit

public double profit
Media móvil con pesos exponenciales

wealth

public double wealth
Riqueza total de los agentes

position

public double position
Total de acciones del activo

cash

public double cash
Posición de cada agente en el activo libre de riesgo

initialcash

public double initialcash
Cash inicial de cada agente

minholding

public double minholding
Para la venta en corto

mincash

public double mincash
Máximo de endeudamiento de cada agente

intrate

public double intrate
Tasa de interés del activo libre de riesgo

intratep1

public double intratep1
Tasa de interés del activo libre de riesgo+1

price

public double price
Precio mantenido por la clase World

dividend

public double dividend
Dividendo mantenido por la clase World

myID

public int myID

worldForAgent

public static World worldForAgent
Constructor Detail

Agent

Agent(swarm.defobj.Zone aZone)
Method Detail

setWorld

public static void setWorld(World aWorld)
Configura el mundo para cada agent. Es un método de clase que se usa tanto en los métodos de clase como de instancia en BFagent
Parameters:
aWorld - Mandamos una copia del mundo

setID

public java.lang.Object setID(int iD)
Da un nombre entero(integer) a cada agente durante la creación. A menudo ayuda a la depuración tener un único id para cada agente
Parameters:
iD -  
Returns:
this

setPosition

public java.lang.Object setPosition(double aDouble)
Configura la "posición" del agente en "aDouble"
Parameters:
aDouble -  
Returns:
this

setintrate

public java.lang.Object setintrate(double rate)
Configura la variable intrate y calcula intratep1( intratep + 1) para mejorar la velocidad
Parameters:
rate -  
Returns:
this

setminHolding$minCash

public java.lang.Object setminHolding$minCash(double holding,
                                              double minimumcash)
Configura las restricciones de préstamo y venta en corto. Los valores pueden ser negativos. Configura los valores de las variables minholding y mincash
Parameters:
holding -  
minimumcash -  
Returns:
this

setInitialCash

public java.lang.Object setInitialCash(double initcash)
Establece el cash inicial de cada agente
Parameters:
initcash -  
Returns:
this

setInitialHoldings

public java.lang.Object setInitialHoldings()
Establece las acciones iniciales de cada agente. Esto es un inicializador La mayoría de las clases tendrán inicialización adicional, pero deberán ejecutar este método primero. Él inicializa las variables de instancia comunes a todos los agentes, estableciendo profit, wealth y position iguales a 0, y estableciendo el cash inicial a initialcash
Returns:
this

getPriceFromWorld

public java.lang.Object getPriceFromWorld()
Iguala una variable de instancia de agent, price, al precio actual que es controlado por el objeto conocido por "world". Hay que darse cuenta que el método asume que el mundo ya ha sido configurado
Returns:
this

getDividendFromWorld

public java.lang.Object getDividendFromWorld()
Iguala la variable de instancia de agent, dividend, al dividendo actual. El dividendo actual es controlado por el objeto conocido por "world"
Returns:
this

creditEarningsAndPayTaxes

public java.lang.Object creditEarningsAndPayTaxes()
Este método se envía a cada agente una vez que el dividendo es declarado. Los agentes reciben el dividendo de cada acción que tenían. Además su cash que tenian invertido en el activo libre de riesgo también recibe su interés. Luego sus impuestos son cargados a la riqueza total previa, en un tipo de interés que compensa el interés de cash--Por lo que si los agentes mantienen todo en cash se quedaría como están. Normalmente no es sobreescrito por las subclases. En principio hacemos: wealth = cash + price*position; // previous wealth cash += intrate * cash + position*dividend; // earnings cash -= wealth*intrate; // taxes Directamente: cash -= (price*intrate - dividend)*position
Returns:
this

constrainDemand

public double constrainDemand(double slope,
                              double trialprice)
Método utilizado por los agentes para restringir sus demandas de acuerdo a las limitaciones de mincash y minholding
Parameters:
slope - pendiente
trialprice -  
Returns:
demand

getAgentPosition

public double getAgentPosition()
Devuelve la posición actual del agente
Returns:
position

getWealth

public double getWealth()
Devueleve wealth actual de cada agente
Returns:
wealth

getCash

public double getCash()
Devuelve el actual nivel de cash del agente
Returns:
cash

prepareForTrading

public java.lang.Object prepareForTrading()
Deba ser sobreescrito por cada subclase
Returns:
this

getDemandAndSlope$forPrice

public double getDemandAndSlope$forPrice(double slope,
                                         double p)
Este mensaje se manda a cada agente para preguntar si van a demandar ( demand > 0) u ofrecer (demand < 0) para el precio p. No hay método por defecto implementado en esta clase por lo que las subclases deben implementarlo
Parameters:
slope -  
p -  
Returns:
double

updatePerformance

public java.lang.Object updatePerformance()
Se envia este mensaje a cada agente en cada periodo para decirle que actualice sus medidas, su precisión, sus reglas...El código por defecto no hace nada, debe ser implementado por cada clase que herede de esta
Returns:
this