|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
asm.Specialist
Title: Specialist
Description: Existe una única instancia de esta clase. Esa instancia es la encargada de recoger las demandas (positivas o negativas) de los agentes y calcular, mejor o peor, el precio que vacía el mercado (o al menos lo intenta).
Existen tres tipos de especialistas diferentes, aunque todos siguen el mismo procedimiento para calcular el precio de mercado:
Una vez que han calculado el precio de mercado, dicen a los agentes que actualicen su posición, sus ganancias y sus posesiones de efectivo.
Los tres tipos de especialistas implementados en esta versión son:
El especialista "Expectativas racionales" (ER) calcula el precio sin iterar como una función lineal del dividendo (precio = rea*dividendo + reb). Partiendo de la hipótesis de que los agentes participantes son homogéneos con expectativas racionales y teniendo en cuenta que forman sus expectativas para el próximo precio como una función lineal del dividendo, se calculan los coeficientes de esta ecuación (rea y reb). El precio calculado usando esta ecuación y esos coeficientes es el que impone este especialista. La utilidad de este especialista es comprobar si el modelo soporta las predicciones del modelo neoclásico estándar. Si así fuera, se debería observar un mercado estático (como efectivamente ocurre). El cálculo de los coeficientes rea y reb no es inmediato aunque tampoco es complicado. Para más detalles, consúltese el proyecto de fin de carrera de Luis R. Izquierdo.
El especialista de pendiente (P) calcula el exceso de oferta o de
demanda para un precio de prueba y, teniendo en cuenta la pendiente de las
curvas de oferta y demanda, lanza un nuevo precio de prueba. El proceso de
búsqueda termina cuando el desajuste entre oferta es suficientemente pequeño
( Finalmente, el Especialista de ETA fija (ETA) lanza como primer precio de prueba el
precio del último periodo. Recoge las demandas de activos de los agentes
para ese precio y calcula el exceso de demanda o el exceso de oferta que
se produzca para dicho precio. Multiplica este exceso de oferta o demanda por
un coeficiente constante (ETA) y entonces fija el precio de mercado de acuerdo
con la siguiente ecuación: precio = precio-de-prueba*(1 + ETA*(desajuste)) El proceso de búsqueda del precio de mercado finaliza en dos pasos.
Copyright: Depto. de Organización y Gestión de Empresas. Universidad de Valladolid
Los tres tipos de especialistas implementados en esta versión son:
Field Summary
(package private) double
bidfrac
Proporción de demanda satisfecha: volume/bidtotal
(package private) double
eta
Se usa para ajustar el precio ante un desequilibrio oferta-demanda
(package private) int
maxiterations
Número máximo de iteraciones para calcular el precio de mercado
(package private) double
maxprice
Precio máximo
(package private) double
minexcess
El desajuste |demanda - oferta| debe ser inferior a minexcess para que
el especialista deje de iterar por esta razón.
(package private) double
minprice
Precio mínimo
(package private) double
offerfrac
Proporción de oferta satisfecha: volume/offertotal
(package private) double
rea
Usado por el especialista ER para calcular el precio de mercado:
precio = rea*dividendo + reb
(package private) double
reb
Usado por el especialista ER para calcular el precio de mercado:
precio = rea*dividendo + reb
(package private) int
SP_ETA
Especialista de ETA fija
(package private) int
SP_RE
Especialista "Expectativas racionales"
(package private) int
SP_SLOPE
Especialista de pendiente
(package private) int
sptype
Tipo de especialista que se está usando.
(package private) double
taupdecay
Coeficiente para calcular la media móvil del beneficio de los agentes.
(package private) double
taupnew
Coeficiente para calcular la media móvil del beneficio de los agentes.
(package private) double
volume
Volumen de negociación
Constructor Summary
(package private)
Specialist(swarm.defobj.Zone aZone)
Constructor de la clase
Method Summary
java.lang.Object
completeTrades$Market(java.util.LinkedList agentList,
World worldForSpec)
Actualiza la posición y el efectivo de cada agente después de que
se lleven a cabo los intercambios acordados.
void
drop()
Liberador de memoria.
double
getVolume()
double
performTrading$Market(java.util.LinkedList agentList,
World worldForSpec)
Este es el método principal de la clase.
java.lang.Object
setETA(double ETA)
Fija eta
java.lang.Object
setMaxIterations(int someIterations)
Fija el número máximo de iteraciones para calcular el precio de mercado
java.lang.Object
setMaxPrice(double maximumPrice)
Fija el precio máximo
java.lang.Object
setMinExcess(double minimumExcess)
Fija el mínimo desajuste |demanda - oferta| para que
el especialista deje de iterar por esta razón.
java.lang.Object
setMinPrice(double minimumPrice)
Fija el precio mínimo
java.lang.Object
setREA(double REA)
Fija rea
java.lang.Object
setREB(double REB)
Fija reb
java.lang.Object
setSPtype(int i)
Fija el tipo de especialista que vamos a usar.
java.lang.Object
setTaup(double aTaup)
Calcula los pesos de la media móvil del beneficio de los agentes.
Field Detail
SP_RE
final int SP_RE
SP_SLOPE
final int SP_SLOPE
SP_ETA
final int SP_ETA
maxprice
double maxprice
minprice
double minprice
eta
double eta
minexcess
double minexcess
rea
double rea
reb
double reb
bidfrac
double bidfrac
offerfrac
double offerfrac
maxiterations
int maxiterations
volume
double volume
taupdecay
double taupdecay
taupnew
double taupnew
sptype
int sptype
Constructor Detail |
Specialist(swarm.defobj.Zone aZone)
aZone
- Zona de memoria Swarm en la que se aloja el objeto SwarmMethod Detail |
public java.lang.Object setMaxPrice(double maximumPrice)
maximumPrice
- public java.lang.Object setMinPrice(double minimumPrice)
minimumPrice
- public java.lang.Object setTaup(double aTaup)
aTaup
- Coeficiente para calcular la media móvil del beneficio de los agentespublic java.lang.Object setSPtype(int i)
i
- Tipo de especialistapublic java.lang.Object setMaxIterations(int someIterations)
someIterations
- public java.lang.Object setMinExcess(double minimumExcess)
minimumExcess
- public java.lang.Object setETA(double ETA)
ETA
- public java.lang.Object setREA(double REA)
REA
- public java.lang.Object setREB(double REB)
REB
- public double performTrading$Market(java.util.LinkedList agentList, World worldForSpec)
Existen tres tipos de especialistas diferentes, aunque todos siguen el mismo procedimiento para calcular el precio de mercado:
Una vez que han calculado el precio de mercado, dicen a los agentes que actualicen su posición, sus ganancias y sus posesiones de efectivo.
agentList
- La lista enlazada de Java que contiene a todos los agentes.worldForSpec
- Referencia al mundo.public double getVolume()
public java.lang.Object completeTrades$Market(java.util.LinkedList agentList, World worldForSpec)
agentList
- La lista enlazada de Java que contiene a todos los agentes.worldForSpec
- Referencia al mundo.public void drop()
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |