Beruflich Dokumente
Kultur Dokumente
Fdo:
Fecha:
Fdo:
Fecha:
Fdo:
Fecha:
Sistema de inversin en
bolsa a corto plazo
Proyecto de fin de carrera
Ingeniera Industrial
Escuela Tcnica Superior de Ingeniera (ICAI)
Universidad Pontificia Comillas
Autor:
RESUMEN
Este proyecto consiste en un sistema que, realizando predicciones de
cotizaciones de acciones de diferentes empresas, ejecuta rdenes de compra y venta
con el objetivo de obtener una inversin rentable.
La obtencin de un modelo que permita predecir valores futuros de acciones de
empresas con la suficiente precisin supondra disponer de una importante ventaja en
el mercado burstil, que derivara en la obtencin de elevados beneficios. Por este
motivo, a lo largo de la historia se han desarrollado muchos estudios que tratan de
modelar el comportamiento de la Bolsa.
El valor de una accin a lo largo del tiempo es una serie financiera. En la
actualidad existen dos vas para tratar de predecir series temporales: modelos lineales
(ARIMA, ARCH-GARCH) y modelos no lineales (redes neuronales y algoritmos
genticos). La aplicacin de las redes neuronales a la prediccin de series financieras
est creciendo en los ltimos aos, y parece ser un mtodo eficaz y que presenta
multitud de oportunidades. Por este motivo este proyecto aplica las redes neuronales
para modelar la variacin del valor de una accin a lo largo del tiempo y realizar
predicciones. Concretamente se va a tratar de realizar predicciones a corto plazo de
los valores de las acciones de 20 empresas del IBEX-35 (de las que se dispone de
informacin burstil intradiaria).
Se parte de una breve introduccin terica sobre la inversin en bolsa a corto
plazo y sobre las propiedades de las series temporales financieras.
Seguidamente se ha realizado un estudio de las principales variables
independientes para predecir valores burstiles a corto plazo, y se ha programado su
clculo en el software Matlab.
SUMMARY
This project develops a system to forecast stocks of different companies and
to execute buy-sell orders in order to achieve a profitable investment.
Obtaining a model to forecast quotations of companies could provide an
important advantage to achieve huge profits. For this reason, many studies
throughout history have attempted to model the operations of the Stock Market.
The value of a stock over time is known as a financial time-serie. Nowadays
there are two ways to predict temporal time-series: linear models (ARIMA, ARCHGARCH) and non-linear models (Neural Networks and Genetic Algorithms). In the
past few years the application of neural networks for predicting financial time-series
has increased, since it seems to be an efficient and resourceful system. For this
reason this project applies neural networks to model the variation of the value of a
stock throughout time and forecast its future values. Specifically this system forecast
the values of the stocks of twenty companies of the IBEX-35 index at short term. The
project starts with a brief introduction to the main characteristics of the short-term
investment
and
to
the
properties
of
the
financial
time-series.
Secondly, the project carries out a study of the principal independent variables to
model the Stock Market operation, as well as a program to calculate it in Matlab
software.
Once the main variables are determined, we will study the application of
neural networks for predicting financial time-series. The different possibilities of
modeling with neural networks will be studied, and an appropriated neural network
will be defined. This neural network will be programmed using the network toolbox
of Matlab.
With the neural network defined, a number of simulations will be realized
based in a determinate criterion of decision making.
Tabla de contenido
1. Introduccin ............................................................................................................12
1.1 Motivacin del proyecto ...................................................................................13
1.2 Inversin en Bolsa .............................................................................................14
La Bolsa ...............................................................................................................14
Acciones ..............................................................................................................15
Inversin en acciones a corto plazo .....................................................................17
1.3 Prediccin de series financieras ........................................................................18
Series financieras .................................................................................................19
Modelos de prediccin de series financieras .......................................................19
1.4 Objetivos del proyecto ......................................................................................21
1.5 Metodologa y recursos utilizados ....................................................................21
2. Anlisis de las entradas al modelo: .........................................................................23
2.1 Introduccin ......................................................................................................24
Grficos burstiles ...............................................................................................26
2.2 Obtencin de datos histricos ...........................................................................29
2.3 Lista de entradas al modelo...............................................................................33
2.4 Indicadores burstiles........................................................................................34
ADX (movimiento direccional)...........................................................................34
MACD (convergencia-divergencia del promedio mvil) ...................................42
OBV (Balance de volmenes) .............................................................................46
RSI (ndice relativo de fuerza) ............................................................................50
CCI (ndice de commodities) ..............................................................................55
Estocstico ...........................................................................................................58
2.5 Coeficiente de variacin de un indicador respecto al precio de una accin .....61
2.6 Rutina de creacin de entradas..........................................................................64
ndice de grficos
Grfico 1: Grfico lineal de Endesa 14/05/08 (Elaboracin propia con Visual Chart)
....................................................................................................................................27
Grfico 2: Grfico barras de Endesa 14/05/08 (Elaboracin propia con Visual Chart)
....................................................................................................................................28
Grfico 3: Grfico candelabro de Endesa 14/05/08 (Elaboracin propia con Visual
Chart)..........................................................................................................................29
Grfico 4: Porcentaje de periodos en los que se dispone de informacin ..................32
Grfico 5: Ejemplo1 ADX (Fuente: www.stockcharts.com) .....................................38
Grfico 6: Ejemplo2 ADX (Fuente: FxStreet) ...........................................................39
Grfico 7: Ejemplo3 ADX en Acerinox (Elaboracin propia con Visual Chart) .....41
Grfico 8: Ejemplo1 MACD (Elaboracin propia con Visual Chart) .......................44
Grfico 9: Ejemplo2 MACD en ACS (Elaboracin propia con Visual Chart) .........46
Grfico 10: Ejemplo1 OBV (Fuente TradeStation) ...................................................48
Grfico 11: Ejemplo2 OBV (Elaboracin propia con Visual Chart) ........................50
Grfico 12: Ejemplo1 RSI (Fuente StockCharts) .......................................................53
Grfico 13: Ejemplo2 RSI (Elaboracin propia con Visual Chart)...........................54
Grfico 14: Ejemplo CCI (Elaboracin propia con Visual Chart) ............................58
Grfico 15: Ejemplo Estocstico en Unin Fenosa (Elaboracin propia con Visual
Chart)..........................................................................................................................60
Grfico 16: Prueba para determinar el n de neuronas de la primera capa oculta ......96
Grfico 17: Prueba para determinar el n de neuronas de la segunda capa oculta .....97
Grfico 18: Errores medios por periodo ...................................................................114
Grfico 19: Comparacin del error obtenido con el error de la prediccin ingenua 115
Grfico 20: Porcentajes de acierto en las empresas estudiadas ................................117
Grfico 21: % de aciertos de la prediccin del sistema en comparacin con la
prediccin ingenua ....................................................................................................118
Grfico 22: n de posiciones tomadas en cada una de las empresas .........................119
Grfico 23: Evolucin del dinero invertido ..............................................................121
Grfico 24: Evolucin del beneficio acumulado ......................................................122
Grfico 25: Comparacin de la variacin del ndice IBEX-35 con el dinero invertido
..................................................................................................................................123
Grfico 26: Comisiones de los Brokers Online ........................................................132
ndice de Tablas
Tabla 1: Empresas analizadas .....................................................................................26
Tabla 2: Lista de entradas al modelo *Ver apartados: Indicadores Burstiles y
Estudio de las variaciones de los indicadores respecto al precio ..............................34
Tabla 3: Funciones de transferencia para redes neuronales........................................69
Tabla 4: Tamao de los vectores de entrenamiento....................................................89
Tabla 5: Parmetros de la red neuronal escogida .......................................................98
Tabla 6: Brokers online que operan con Visual Chart ..............................................131
ndice de Ilustraciones
Ilustracin 1: Estructura bsica del modelo ................................................................24
Ilustracin 2: 20 redes neuronales ..............................................................................25
Ilustracin 3: Grfico candelabro ...............................................................................28
Ilustracin 4: Estructura de los datos histricos necesarios........................................30
Ilustracin 5: Clculo del Directional Movement ......................................................36
Ilustracin 6: Funcin ADX .......................................................................................40
Ilustracin 7: Ejemplo del clculo de la Media Exponencial .....................................43
Ilustracin 8: Funcin MACD ....................................................................................45
Ilustracin 9: Funcin OBV........................................................................................49
Ilustracin 10: Funcin RSI ........................................................................................54
Ilustracin 11: Funcin CCI .......................................................................................57
Ilustracin 12: Funcin ESTOCASTICO ...................................................................60
Ilustracin 13: Funcin divergence ............................................................................62
Ilustracin 14: Funcin Crea_Entradas ......................................................................64
Ilustracin 15. Funcin calcula_entradas ...................................................................65
Ilustracin 16: Neurona ..............................................................................................68
Ilustracin 17: Ejemplo red neuronal .........................................................................70
Ilustracin 18: Red de propagacin hacia delante ......................................................72
10
11
1. Introduccin
12
13
14
La Bolsa
La bolsa es un mercado, es decir, un lugar en el cual se ponen en contacto los
demandantes y los ofertantes de un bien para comercializarlo. En el caso de la Bolsa,
el bien son activos financieros (ttulos que de alguna manera representan dinero
invertido en una sociedad: acciones, bonos, obligaciones, etc.). Los participantes en
el mercado de la Bolsa son:
Ofertantes
de
capital:
inversores
(tanto
institucionales
como
Acciones
El tipo de inversin que se plantea en este proyecto es la inversin en acciones.
Una accin es un ttulo representativo del valor de una de las fracciones iguales en
las que se divide el capital social de una empresa (declarada como sociedad
annima).
El valor de una accin va a variar a lo largo del tiempo, como el de cualquier
bien, dependiendo de las decisiones que toman los intervinientes en el mercado de la
Bolsa.
La compra de una accin de una empresa supone convertirse en accionista de la
misma y esto conlleva los siguientes derechos:
15
16
actuales
tienen
derecho
preferente
para
suscribir
empresa,
entre
ellas
aprobar
los
ejercicios
concluidos,
nombramientos, etc. Todos los accionistas tienen derecho a voto, con una
restriccin: slo pueden votar directamente aqullos que renan el
nmero mnimo de acciones que se determine; aquellos accionistas que
posean un nmero inferior de acciones pueden unirse para cubrir dicho
mnimo y votar conjuntamente.
Analizados los derechos que conlleva ser accionista de una empresa se puede
deducir cuales son las intenciones que llevan a un inversor a comprar acciones, que
pueden ser dos:
17
La principal ventaja que tiene invertir en bolsa en corto plazo es que se cuenta
con la posibilidad de aprovechar la elevada volatilidad del mercado (volatilidad que
se pretende predecir). Como desventaja, este tipo de inversin acarrea unos costes de
transaccin (pago de comisiones a intermediarios) muy elevados debido al gran
nmero de operaciones que se realizan. Adems la inversin en bolsa en corto plazo
requiere un seguimiento continuo del mercado (ver [RODR04]).
Cuando se ejecutan rdenes (tanto de compra como de venta) hay que pagar una
comisin al intermediario (broker) que las efecta.
Antes de nombrar los distintos modelos que existen para la prediccin de series
temporales, es necesario identificar las propiedades que tiene una serie temporal que
18
represente el valor de una accin a lo largo del tiempo. Este tipo de series son
conocidas como series financieras.
Series financieras
Las principales caractersticas de las series financieras son (ver [CLEM03]):
Son series con elevado nivel de ruido, ya que existe una gran cantidad de
aleatoriedad en las variaciones da a da.
19
20
21
22
2. Anlisis de las
entradas al modelo:
2.1 Introduccin
2.2 Obtencin de datos histricos
2.3 Lista de entradas al modelo
2.4 Indicadores burstiles
2.5 Coeficiente de variacin de un indicador respecto al precio de una
jjjjjjaccin
2.6 Rutina de creacin de entradas
23
2.1 Introduccin
En esta seccin se van a analizar las entradas al modelo, es decir, las entradas
que va a utilizar la red neuronal para realizar predicciones.
Entradas a el
modelo de
prediccin
Red
Neuronal
Prediccin
24
Entradas empresa
1
Red
neuronal
empresa 1
Prediccin
empresa 1
Entradas empresa
2
Red
neuronal
empresa 2
Prediccin
empresa 2
..
Entradas empresa
20
Red
neuronal
empresa 20
..
Prediccin
empresa 20
Empresa
ndice
'ACS.I'
ACS
'ACX.I'
Acerinox
'ANA.I'
Acciona
'BBVA.I'
BBVA
'BKT.I'
Bankinter
'ELE.I'
Endesa
'FCC.I'
FCC
'FER.I'
Ferrovial
'GAM.I'
Gamesa
'GAS.I'
Gas natural
10
'IBE.I'
Iberdrola
11
'IBLA.I'
Iberia
12
'IDR.I'
Indra
13
'ITX.I'
Inditex
14
'POP.I'
Popular
15
'REE.I'
Red elctrica
16
25
'REP.I'
Repsol
17
'SAN.I'
Santander
18
'TEF.I'
Telefnica
19
'UNF.I'
Unin Fenosa
20
Grficos burstiles
La informacin histrica de la bolsa se suele representar por medio de grficos
burstiles. En este captulo se van a analizar diferentes grficos, por lo que conviene
realizar una introduccin terica de las caractersticas de stos. Un grfico burstil
representa el valor de una accin a lo largo del tiempo. El intervalo de tiempo
utilizado para realizar el grfico depende de la compresin de los datos: intradiaria,
diaria, semanal, cuatrimestral o anual. Los datos necesarios para este proyecto son de
compresin intradiaria. Unos datos con compresin intradiaria se caracterizan por
estar divididos en periodos de 5 minutos.
Existen muchos tipos de grficos burstiles, en esta introduccin se van explicar
los tres ms comunes: lineal, barras y candelabro.
Grfico lineal
Muchos inversores consideran que el valor de cierre es ms importante del
periodo. Este grfico une los puntos de cierre de cada uno de los periodos.
26
Grfico 1: Grfico lineal de Endesa 14/05/08 (Elaboracin propia con Visual Chart)
Grfico de barras
Es el grfico burstil ms popular y ser el que ms se va a utilizar en este
documento. Representa el valor de apertura, de cierre, mximo y mnimo de la
accin en cada periodo. El mximo y el mnimo estn representados en el punto
superior e inferior de la barra respectivamente. El valor de apertura es representado
mediante una lnea horizontal a la izquierda de la barra, y el valor de cierre es
representado mediante otra lnea horizontal a la derecha de la barra.
El siguiente grfico muestra los datos del grfico anterior mediante un grfico de
barras.
27
High (mximo)
Close (cierre)
Open (apertura)
Low (mnimo)
Grfico 2: Grfico barras de Endesa 14/05/08 (Elaboracin propia con Visual Chart)
Grfico candelabro
Este grfico representa cada periodo mediante una caja con dos lneas verticales
de la siguiente manera:
28
Grfico 3: Grfico candelabro de Endesa 14/05/08 (Elaboracin propia con Visual Chart)
29
Fecha
Hora
Open
High
Low
Close
Volume
ammdd
hhmm
##.##
##.##
##.##
##.##
##.##
ammdd
hhmm
##.##
##.##
##.##
##.##
##.##
Open
High
Low
Close
Volume
30
ALT.MC,I,20060711,172500,36.64,36.64,36.56,36.60,31446,0
ALT.MC,I,20060711,173000,36.55,36.62,36.50,36.57,369817,0
ALT.MC,I,20060712,090500,36.51,36.64,36.51,36.64,10645,0
ALT.MC,I,20060712,091000,36.58,36.58,36.45,36.47,8109,0
ALT.MC,I,20060712,092500,36.46,36.46,36.46,36.46,150,0
de las 9:45?
ALT.MC,I,20060712,093000,36.48,36.48,36.48,36.48,1769,0
ALT.MC,I,20060712,093500,36.55,36.58,36.49,36.49,10131,0
ALT.MC,I,20060712,094000,36.49,36.59,36.47,36.47,5954,0
ALT.MC,I,20060712,095000,36.49,36.53,36.49,36.53,1366,0
31
Este estudio ha servido para seleccionar las 20 empresas que se van a emplear
para realizar predicciones. Se han seleccionado las 20 empresas en las que se dispone
de informacin en ms de un 93% de los periodos (rectngulos azules del grfico).
Otras empresas como NH, Metrovacesa, Sogecable y Abengoa, no se han
seleccionado al presentar elevados huecos de informacin (rectngulos rojos).
El disponer de datos histricos completos en base intradiaria es crtico para
realizar un entrenamiento correcto de las redes neuronales, ya que cuando existen
muchos periodos en los que no se dispone de informacin y se supone que el valor de
la accin no vara, se obtienen series financieras que no representan la verdadera
variacin del valor de un accin.
Un procedimiento para rellenar huecos de informacin consiste en simular
mediante el modelo de prediccin los valores que deberan darse. Pero dado que las
empresas estudiadas tienen slo un 0.5% de huecos de informacin, se ha decidido
ignorarlos.
Una vez se tienen los datos histricos de todas las empresas homogenizados ya
se pueden obtener las entradas al modelo.
32
Close (t-1)
Entrada 2
Open (t-1)
Entrada 3
Open (t-2)
Entrada 4
Open (t-3)
Entrada 5
Open (t-5)
Entrada 6
Open (t-7)
Entrada 7
Open (t-9)
Entrada 8
Open (t-11)
Entrada 9
Open (t-13)
Entrada 10
Open (t-15)
Entrada 11
Open (t-17)
Entrada 12
Entrada 13
Entrada 14
Entrada 15
Entrada 16
Entrada 17
Entrada 18
33
Entrada 19
Entrada 20
Entrada 21
Valor de SIGNAL*
Entrada 22
Entrada 23
Entrada 24
Entrada 25
Entrada 26
Entrada 27
Entrada 28
Entrada 29
Entrada 30
Tabla 2: Lista de entradas al modelo *Ver apartados: Indicadores Burstiles y Estudio de las variaciones de
los indicadores respecto al precio
34
35
+ = 1
= 1
+ = = 0
El TR de un periodo se define como el mximo valor de los siguientes:
36
1 =
2 = 1
= (1 , 2 , 3 )
3 = 1
El DI se representar como por +DI si el valor se mueve al alza y por DI si el
valor se mueve a la baja (que se comprueba observando el signo del DM):
DI
DM
TR
DI
DM
TR
J. Welles Wilder, inventor del ADX, recomienda trabajar con los 14 ltimos
periodos para poder obtener un resultado suficientemente representativo.
De este modo se calcula el +DM(14) como la suma de los +DM de los 14
ltimos periodos, y DM(14) como la suma de los DM de los catorce ltimos
periodos. Anlogamente, se tendr TR(14) como la suma de los rangos verdaderos de
los catorce ltimos periodos. +DI(14) y DI(14) se calcularan entonces como:
DI (14)
DM (14)
TR(14)
DI (14)
DM (14)
TR(14)
ADX (14)
( DI (14)) ( DI (14))
( DI (14)) ( DI (14))
37
Razonamiento econmico
38
La grfica de la parte inferior de esta figura, muestra los valores que van
tomando +DI, -DI y ADX, a lo largo de los periodos estudiados. Para explicar las
rdenes de compra-venta se va a estudiar las 4 zonas marcadas en la grfica.
39
40
Programacin
El valor que toma el ADX va a depender de la longitud de los periodos con los
que se est trabajando. Dependiendo del tipo de decisiones que se quieran tomar se
escoger un periodo u otro:
Hora
Open
High
Low
Close
Volume
#####
####
##.##
##.##
##.##
##.##
####
#####
####
##.##
##.##
##.##
##.##
####
Periodo 1
Periodo n
ADX
M_datos(datos histricos)
n-14 periodos
M_Adx
fecha
hora
+DI(14)
-DI(14)
ADX
#####
####
####
####
####
Periodo 15
#####
####
####
####
####
Periodo n
En este ejemplo se observa que el estudio del ADX hubiese servido para la
prediccin de la bajada brusca que ocurre entre las horas 14:00 y 15:10 del 15 de
41
Febrero. A las 14:00 del 15 de Febrero, el ADX empieza a tomar valores por encima
de 40 y la cotizacin est bajando. Como el ADX est por encima de 40, estar
indicando una fuerte tendencia bajista. Esta tendencia de bajista la predecimos
mientras el ADX es mayor que 40. Se observa como a las 15:10 el ADX deja de ser
superior a 40 luego ya no se est en una tendencia fortalecida y no podemos predecir
si la accin va a seguir bajando.
Ntese que el ADX no ha identificado la tendencia bajista que se da al principio
del da 14 de Febrero. Esto se debe a que en muchas ocasiones los datos anteriores
que se utilizan en el clculo del ADX son muy voltiles y hacen que no se distingan
algunas tendencias.
Y la curva lenta (llamada Signal y representada por una lnea discontinua) venga
dada por la expresin:
Signal Med .Exp.(MACD(9))
Donde:
Med.Exp. Media exponencial
Se utiliza la media exponencial, porque da ms importancia a los ltimos
valores. La expresin de la media exponencial es:
42
2
Med .Exp .(t , N ) precio (t ) Med .Exp.(t 1, N )
Med .Exp.(t 1, N )
1 N
t periodo _ actual
t 1 periodo _ anterior
N nmero _ de _ periodos
Med .Exp .(0, N ) Med .Simple ( N )
Ejemplo: Med.Exp.(4)
Razonamiento econmico
Cuando se estudia el MACD se representan dos curvas: SIGNAL(curva ms
lenta) y MACD (curva ms rpida).
43
44
45
Periodo 1
Periodo n
M_datos(datos histricos)
MACD
M_Macd
Periodo 34
n-33 periodos
Periodo n
No tengo acciones
Tengo acciones
Grfico 9: Ejemplo2 MACD en ACS (Elaboracin propia con Visual Chart)
46
OBV (t ) OBV (t 1)
Inicializacin:
Razonamiento econmico
El OBV va a ser un indicador cuyo valor ir variando a lo largo del tiempo,
dependiendo de si el precio de la accin va aumentando y del volumen de cada
periodo.
Se deduce que cuando el volumen cae o sube dramticamente sin que en el
precio de la accin se produzcan cambios importantes, el precio de la accin est
propenso a descender o subir. Si el volumen de una accin est aumentando significa
que muchos inversores se estn interesando en comprar la accin y que llegar un
punto en el cual el precio empiece a aumentar como consecuencia de un aumento de
la demanda. Por el contrario si el volumen empieza a descender (los inversores no se
estn interesando por el valor) el precio de la accin tender a caer (poca demanda,
luego el precio disminuir).
Para trabajar con este indicador se elaboran dos grficos, uno con la variacin de
la cotizacin de una accin y otro con la variacin del valor del OBV a lo largo de
tiempo. Cabe notar que para obtener informacin del OBV hay que fijarse en la
tendencia del valor de OBV (el valor numrico en concreto que tenga en un instante
determinado no aporta informacin) pues lo que interesa es ver los incrementos y
decrementos en el volumen.
47
En este grfico se muestra la variacin del ndice Dow Jones desde Diciembre
del 2000 hasta Octubre de 2001 con su respectivo OBV. Se observa cmo se pueden
predecir ciertas tendencias en el precio a partir de la informacin de la curva del
OBV (pues las mismas tendencias que se dan en el OBV se dan el precio un poco
ms tarde). En este ejemplo se observa cmo el OBV detecta el fin de la tendencia
alcista antes de que esta suceda.
Las rdenes de compra y de venta que se pueden generar con el OBV son las
siguientes:
48
49
Programacin
Se ha programado una funcin en OBV en Matlab que obtiene el OBV a partir
de las cotizaciones de un valor en cada instante.
Fecha
Hora
Open
High
Low
Close
Volume
#####
####
##.##
##.##
##.##
##.##
####
#####
####
##.##
##.##
##.##
##.##
####
M_datos(datos histricos)
Periodo 1
Periodo n
OBV
M_Obv
fecha
hora
OBV
#####
####
####
Periodo 1
#####
####
####
Periodo n
Esta funcin calcula el valor puntual del OBV en cada periodo. Como se
coment anteriormente, lo que aporta informacin es la tendencia del OBV no el
valor puntual; pero para calcular la tendencia es necesario los valores puntuales. A
partir de estos valores se realizar una estimacin de la tendencia (ver apartado 2.5,
pgina 60).
Ejemplo
En este ejemplo se va a representar las cotizaciones y los valores del OBV de
Acerinox durante los das 4, 7 y 8 de Abril del 2008.
compra
compra
50
= 0
< 1
= 1
< 1
= 0
13 +
14
14 =
14
13 +
14
14 =
14
=1 ()
14
=1 ()
14
= 100
100
1 +
51
52
53
Fecha
Hora
Open
High
Low
Close
Volume
#####
####
##.##
##.##
##.##
##.##
####
#####
####
##.##
##.##
##.##
##.##
####
Periodo 1
Periodo n
RSI
M_datos(datos histricos)
n-14 periodos
54
M_Rsi
fecha
Hora
AvgGain
AvgLoss
RSI
#####
####
####
####
####
#####
####
####
####
####
Periodo 15
Periodo n
Es importante resaltar que para tener datos fiables del RSI es necesario disponer
de un conjunto de datos histricos suficientes (50 periodos anteriores suelen ser
suficientes).
Ejemplo
En este ejemplo (ACS) se puede observar como con la ayuda del RSI podemos
tomar decisiones acertadas.
++
3
=1
55
0.15
56
57
Hora
Open
High
Low
Close
Volume
#####
####
##.##
##.##
##.##
##.##
####
#####
####
##.##
##.##
##.##
##.##
####
M_datos(datos histricos)
Periodo 1
Periodo n
CCI
n-19 periodos
M_cci
fecha
hora
CCI
#####
####
####
Periodo 20
#####
####
####
Periodo n
Ejemplo
Este ejemplo corresponde al estudio del CCI en el valor de la accin de de ACS
entre las fechas indicadas en el grfico.
12:20
Estocstico
Introduccin
Este indicador fue desarrollado por George C. Lane en el ao 1948. El
estocstico (stochastic) es un indicador que muestra la localizacin del actual cierre
con respecto al mximo/mnimo alcanzado en una serie de periodos anteriores.
Niveles de cierre que estn cerca del mximo indican acumulacin (presin de
compradores) y los niveles de cierre que estn prximos al mnimo indican
distribucin (presin de vendedores).
Clculo
% = 100
58
14
% = %, 3
%K lnea rpida del estocstico
%D lnea lenta del estocstico
Razonamiento econmico
El estocstico utiliza fundamentalmente los valores que toma %K para la
obtencin de informacin.
Lecturas por encima del 80% son consideradas puntos en los que la accin est
sobrevendida (overbought) y lecturas por debajo del 20% son consideradas puntos en
los que la accin est sobrecomprada (oversold). Sin embargo Lane crea que una
medida por encima del 80% no significaba necesariamente que fuese a comenzar un
periodo bajista y que una medida por debajo del 20% no significaba necesariamente
el comienzo de un periodo alcista. Para obtener una seal ms fiable es necesario
observar tambin la pendiente de las curvas. Una vez el indicador llega a niveles de
sobrecompra es bueno esperar a tener una pendiente negativa para establecer cuando
comienza el periodo bajista, y viceversa.
Los valores de D% (curva lenta del estocstico) se utilizan para generar rdenes
de compra de venta. Cuando la lnea %K cruza por debajo de la lnea %D se genera
una orden de venta y cuando la lnea %K cruza por encima se genera una orden de
compra.
Programacin
Se ha programado una funcin ESTOCASTICO en Matlab que obtiene los
valores de %K y %D en cada periodo a partir de un conjunto de datos histricos.
Para los valores de %K y %D de un periodo se necesita datos de 15 periodos
anteriores.
59
Fecha
Hora
Open
High
Low
Close
Volume
#####
####
##.##
##.##
##.##
##.##
####
#####
####
##.##
##.##
##.##
##.##
####
Periodo 1
Periodo n
ESTOCASTICO
M_datos(datos histricos)
n-15 periodos
60
M_cci
fecha
hora
%K
%D
#####
####
##.##
##.##
#####
####
##.##
##.##
Periodo 16
Periodo n
Ejemplo
Ordenes de
compra
Ordenes de
venta
Grfico 15: Ejemplo Estocstico en Unin Fenosa (Elaboracin propia con Visual Chart)
61
Fecha
Hora
Open
#####
####
##.##
#####
####
##.##
n (nmero de periodos)
Precios (precios de apertura)
Indicador (valores del
indicador)
n periodos
divergence
Fecha
Hora
Indicador
#####
####
##.####
#####
####
##.####
n periodos
62
col_divergence
fecha
hora
divergence
#####
####
##.####
#####
####
##.####
n periodos
Esta funcin calcula la pendiente media de los ltimos n periodos, tanto de los
precios como del indicador. Despus resta la pendiente media de los precios a la
pendiente media del indicador.
Para calcular la pendiente media, esta funcin realiza un ajuste lineal de la
columna de valores (ya sea de precios o de valores del indicador) por una recta, y
luego calcula su pendiente.
Para realizar este ajuste se llama a la funcin fit de Matlab de la siguiente forma:
[statistics,model] = Fit(X,Y,'poly1')
Donde X es (tanto en los precios como en el valor de los indicadores) una matriz
columna del tipo:
5
10
..
5
Para ello se divide cada uno de los elementos de la matriz entre la media de todos los
elementos de la matriz. De modo que la matriz Y ser:
(1)
(2)
..
()
=1 ())
_ =
=1 ())
(1)
(2)
..
()
HORA
OBV
OPEN
30227
905
744773
7.53
30227
910
554138
7.5
30227
915
421608
7.51
30227
920
562941
7.49
Pendiente
Precios
Divergence
-0.00029304
Indicador -0.0238
0.02
63
64
Hora
Open
High
Low
Close
Volume
#####
####
##.##
##.##
##.##
##.##
####
#####
####
##.##
##.##
##.##
##.##
####
M_datos(datos histricos)
n-100 periodos
Periodo 1
Periodo n
Matriz_de_entradas
Targets
Crea_entradas
fecha
hora
Open
#####
####
#####
####
##.##
n-100 periodos
Periodo n
fecha
hora
Entrada 1
Entrada 30
#####
####
##.##
##.##
##.##
##.##
##### ####
Periodo 101
Periodo n
65
Hora
Open
High
Low
Close
Volume
#####
####
##.##
##.##
##.##
##.##
####
#####
####
##.##
##.##
##.##
##.##
####
M_datos(datos histricos)
Periodo 1
Periodo 101
entradas
calcula_entradas
fecha
hora
Entrada 1
Entrada 30
#####
####
##.##
##.##
Periodo 101
3. Redes neuronales
3.1 Introduccin
3.2 Perceptrn multicapa
3.3 Entrenamiento de la red neuronal
3.4 Modelado de la red neuronal
66
3.1 Introduccin
El modelo matemtico que utiliza el sistema de inversin para predecir valores
futuros es una red neuronal artificial (RNA). En este captulo se van a exponer los
conceptos fundamentales de las redes neuronales y se va a describir la red neuronal
que va a utilizar el sistema.
Definicin
Una red neuronal artificial (RNA) es un modelo matemtico que, inspirado en el
funcionamiento del sistema nervioso biolgico, procesa informacin (ver
[GARC02]). Las redes neuronales artificiales tienen un conjunto de propiedades
especficas, como son la habilidad de adaptarse (aprender), generalizar y organizar la
informacin.
Los primeros intentos por imitar el funcionamiento del cerebro se realizaron en
el ao 1943 por los cientficos Walter Pitts, Beltran Russell y Warren McCulloch. La
primera red neuronal artificial fue desarrollada en 1951 Marvin Minsky, estudiante
de la universidad de Harvard.
Un sistema nervioso biolgico, como el cerebro, est compuesto por un elevado
nmero de elementos (neuronas) interconectados entre s que trabajan conjuntamente
para solucionar un problema. El aprendizaje de los sistemas nerviosos biolgicos
implica ajustes en las conexiones entre las neuronas. Las RNA tratan de imitan esta
estructura que tienen los sistemas nerviosos biolgicos para tomar decisiones y para
aprender.
Un sistema de RNA est compuesto por una estructura con dos elementos
bsicos:
67
68
Se les da esta denominacin para subrayar la similitud con los sistemas nerviosos
biolgicos.
Conceptos bsicos
Una red neuronal artificial est compuesta por un conjunto de neuronas
interconectadas entre s que trabajan conjuntamente para solucionar un determinado
problema.
El elemento bsico de una red neuronal es la neurona. Una neurona no es ms
que una funcin de transferencia que a partir de un nmero de entradas calcula una
nica salida. Estas entradas estn ponderadas de manera que cada una de ellas lleva
asociada un peso (constante por la que se multiplica su valor) que representa la
importancia que tiene la entrada en la salida de la neurona. Los parmetros
necesarios para definir el funcionamiento de una neurona son:
Nmero de entradas N
=
Y salida de la red neuronal
=
=1
F
Y
Xj valor de la entrada j
Wj peso de la entrada j
Funcin
Frmula
Representacin
= 1 0
Escaln
= 0 < 0
= 1 > 0
Funcin lineal a tramos
= 1,1
= 1 < 1
Funcin sigmoidea
1
1 +
Funcin tangente
sigmoidea
1
1 + 2
69
70
1
2
3
4
111
1
1 =
21
131
1
2 =
211
221
11
1
1 =
2
13
112
122
132
2
212
222
113
123
133
114
124
134
1
2
3
4
213
223
1
2
2 =
21
22
Se debe dar valores a los pesos de la red neuronal. Estos valores se obtendrn
del proceso de entrenamiento. Este proceso consiste en proporcionar un conjunto de
muestras a la red neuronal, de tal manera que sta adapta el valor de los pesos para
minimizar el error en la salida.
Como se explicar, el entrenamiento de una red neuronal no es ms que la
resolucin de un problema de optimizacin.
71
Las redes neuronales de este tipo tienen la ventaja de que son las ms rpidas en
ejecutarse. Por otro lado tienen el inconveniente de que su entrenamiento es lento sea
cual sea el tipo de entrenamiento que realicemos.
Existen muchas estructuras de redes neuronales de propagacin hacia delante,
pero la que ms utilidad tiene y ms se ha desarrollado es el perceptrn multicapa.
El perceptrn multicapa es una red neuronal de propagacin hacia delante en la que
las neuronas estn organizadas en capas.
En la siguiente imagen se muestra la estructura de un perceptrn multicapa con
una sola capa oculta:
Entrada 1
Entrada 2
Salida
Entrada 3
Entrada 4
Capa de
entrada
Capa
oculta
Capa de
salida
Redes recurrentes
Estas redes estn formadas por muchas neuronas fuertemente interconectadas.
Se utilizan para el desarrollo de memorias asociativas que tratan de simular el
cerebro humano. Se les denomina memorias por el hecho de que la salida de este tipo
de redes depende no slo de las entradas actuales sino tambin de las entradas
anteriores y del estado en el que se encuentra la red. La red neuronal ms conocida
de este tipo es la red neuronal de Hopfield. Esta red est constituida por un conjunto
de neuronas cada una de las cuales est unida a todas las dems, la conexin es tal
que cada neurona recibe informacin de todas las dems y emite informacin a todas
72
2
1
4
5
73
Redes modulares
Estas redes estn compuestas por distintos conjuntos de redes que cooperan unas
con otras para resolver un mismo problema. Este tipo de red es el que ms se
aproxima al sistema neuronal biolgico.
Son las redes neuronales de estructura ms compleja. A continuacin se muestra
un ejemplo:
Tipos de entrenamiento
74
consistir en ajustar los pesos para que la salida de la red sea lo ms parecida
posible a la salida deseada (terica).
e1,1
e1,2
e1,ne
S1
e2,1
e2,2
e2,ne
S2
ei,1
ei,2
ei,ne
Si
Np
enp,1
enp,2
enp,ne
Snp
75
ei,j
Si
Prediccin
P1
P2
Pi
Pnp
Se define el error en un periodo i como:
=
Para calcular los pesos de la red neuronal se resuelve el siguiente problema de
optimizacin:
=1
76
: = ,
=
3.2 Perceptrn
Para modelar la prediccin del sistema de este proyecto se ha programado una
red neuronal del tipo perceptrn multicapa.
77
Aproximacin de funciones
Clasificacin de datos
78
79
error
W2
W1
80
que sea un hiperplano con varios mnimos locales, el proceso iterativo dar con uno
de ellos en funcin del punto de partida, pero este mnimo no tendr porque ser el
absoluto. Para solucionar este problema se puede entrenar la red un cierto nmero de
veces partiendo de distintos pesos, para tener un conjunto de mnimos locales y
escoger los pesos que proporcionan el menor mnimo local.
El software de Matlab contiene una toolbox de redes neuronales que ser la que
se va a utilizar para el entrenamiento de la red neuronal de modelo de prediccin. La
toolbox de redes neuronales de Matlab tiene programadas una serie de funciones de
entrenamiento. Se ha escogido la funcin trainlm para realizar el entrenamiento de la
red neuronal, ya que es la ms rpida en ejecutarse y la que mejores resultados suele
proporcionar.
Algoritmo de Levenberg-Marquardt
La funcin trainlm entrena la red neuronal mediante un modelo de optimizacin
Cuasi-Newtoniano concretamente el algoritmo Levenberg-Marquardt. Este algoritmo
es una modificacin del mtodo de Newton, que fue diseado para minimizar
funciones que sean la suma de los cuadrados de otras funciones no lineales; por eso
el algoritmo de Levenberg-Marquardt tiene un excelente desempeo en el
entrenamiento de redes neuronales donde el entrenamiento de la red est determinado
por el error medio cuadrtico.
Para explicar el algoritmo de entrenamiento primero se expondr la notacin de
una red neuronal genrica:
81
1
2
T=
82
1
=1
+ 1
n capa
n de neurona
Peso
Entrada
Bia
nmero de neurona
nmero de capa
Una vez definido este trmino se pueden definir las entradas netas de las dems
capas.
83
1 +
=1
Cada una de las neuronas de la capa de salida (S) tendr una salida terica (ts)
(salida que tiene que producirse en la neurona para que se obtenga la salida deseada
con el vector de entradas proporcionado). El error de cada neurona () vendr dado
por la diferencia entre esta salida terica y la salida que realmente se produce:
= ( )
S
capa de salida
=1
1
=
2
=1
ns
nmero de salidas
Se trabaja con el error medio cuadrtico para no distinguir signo en el error sin
tener utilizar la funcin absoluto, que puede entorpecer el clculo computacional.
El objetivo del algoritmo de entrenamiento ser:
()
La funcin F depende de los pesos y de las bias, que son las incgnitas del
problema.
Se representaran de forma matricial como:
1
1
= [1,1
, , 1,
, , ,
, ,
, 11 , . . , ]
84
n de entradas
n de neuronas
n de capa
capa de salida
Peso
Bia
El mtodo de Newton para optimizar la funcin es:
+1 = 1 :
2
2 = ()
=
=1
85
,
j
nmero de neurona
n de capa
nmero de neurona
n de capa
86
,
,
=
= ,
= , ,1
, , ,
,
Y para las bias:
,
,
=
=
= ,
,
,
87
88
k=k+1
1
FIN
No
Se cumplen
condiciones
de meta?
S
<
3
Se calcula
y se obtiene
No
Ilustracin 24: Algoritmo de Levenberg-Marquardt (Elaboracin propia)
Las condiciones de meta sern las que se tendrn que introducir al algoritmo
como parmetros. Estas condiciones pueden ser de diferentes tipos:
Implementacin en Matlab
En este apartado se va a explicar la rutina de Matlab para crear una entrenar una
red neuronal:
1. Datos necesarios para crear una red neuronal
Los datos necesarios para el entrenamiento son las entradas de periodos
anteriores con sus correspondientes salidas. Estos datos se dividen en tres conjuntos:
Se divide los datos necesarios en distintos conjuntos para tratar que la red
minimice el error en cada uno de ellos, y no se conforme con minimizar un error
medio global.
Tras realizarse numerosas pruebas empricas se han escogido los siguientes
tamaos de entrenamiento:
Conjunto
n de periodos
Entrenamiento
16000
Validacin
4000
Test
100
20100
89
Se tiene por tanto un conjunto de datos compuesto por 20100 periodos. Los datos
pertenecientes a entrenamiento, validacin y test estn organizados de la siguiente
manera:
per. 1 per. 2 per. 3 per. 4 per. 5 per. 6 per. 7 per. 8 per. 9 per.10 per.11 per.14 per.15 per.19999 per. 20000 per. 20001
per. 21000
e
e
e
e
v
e
e
e
e
v
e e
v
e
v
t
e
v
t
entrenamiento
validacin
test
El hecho de utilizar 20100 datos anteriores para entrenar la red neuronal, supone
entrenar la red neuronal con datos histricos de los ltimos dos meses. Esto supone
aceptar el hecho de que la cotizacin de un periodo determinado depende de las
cotizaciones de los ltimos dos meses, lo que parece razonable.
Es importante recordar que la red neuronal trabaja con datos normalizados luego
es necesario normalizar el conjunto de datos antes de realizar un entrenamiento. Esto
se hace a travs de la funcin mapstd de Matlab. A esta funcin se le pasa una matriz
de entradas y normalizar cada una de las entradas para transformarla en una
distribucin con media 0 y desviacin tpica 1. Tambin se le pasa el vector de
salidas para que tambin ste sea normalizado.
La matriz de entradas se denotar por P, y ser la matriz de entradas obtenida
de la funcin crea entradas (ver captulo 2) eliminado la fecha y la hora. El vector de
salidas por su parte, se denotar por T y corresponder a la matriz de salidas
eliminando tambin la fecha y la hora.
A continuacin se muestra el cdigo a realizar una vez se dispone de las matrices
de entrada y targets.
%trasposicin de matrices
Matriz_de_entradas=Matriz_de_entradas';
targets=targets';
%obtencin de P y T
P=Matriz_de_entradas(3:end,:);
T=targets(3,:);
90
%normalizacin
[p,PE] = mapstd(P);
[t,PS] = mapstd(T);
[pent,tent,pent,tent,ptest,ttest]=separador_entrenamiento
(p,t);
Una vez se tienen los conjuntos de datos definidos se tiene toda la informacin
necesaria para poder crear la red neuronal.
2. Declarar la red neuronal: se utiliza la funcin newff.
newff: (PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)
TFi: Funcin de transferencia a utilizar en cada una de las capas, por defecto
utiliza tansig
PF: Funcin para evaluar el desempeo de la red, por defecto utiliza mse.
91
Ejemplo:
net=newff(minmax(pn),[30 3 1]
,{'tansig','tansig','purelin'});
Esta rutina crea una perceptrn multicapa de 3 capas con 30 neuronas en la
primera capa, 3 en la segunda y 1 en la capa de salida. Las dos primeras capas
utilizan funciones tangentes sigmoideas; y la capa de salida una funcin lineal.
3. Establecer los parmetros de entrenamiento
El siguiente cdigo muestra la introduccin de los parmetros necesarios para el
entrenamiento:
net.trainParam.show=50;
%N de epoch entre displays
net.trainParam.goal=10e-8; %Error mnimo
net.trainParam.epochs=100; %niter. mx. para el ent.
val.P=pval;
%entradas de la validacin
val.T=tval;
%salidas de la validacin
test.P=ptest;
%entradas del test
test.T=ttest;
%salidas del test
4. Entrenar la red neuronal
Una vez definida la red, los parmetros del entretenimiento y los datos
necesarios para entrenarla, se puede realizar el entrenamiento de la red. El cdigo es
el siguiente:
[net,tr] = train(net,pent,tent,[],[],val,test);
92
Se observa como la grfica representa los errores que se obtienen en cada uno de
los conjuntos de datos en cada iteracin del algoritmo de entrenamiento.
Cada vez que se entrene una red neuronal se obtendrn unos pesos y bias que
proporcionan un mnimo local, pero no global en la funcin error. Por esto cada vez
que se entrena una red, el sistema realizara 10 entrenamientos y seleccionara el que
proporcione un menor error en la prediccin con el conjunto de test, entrenamiento y
validacin.
93
resolviendo el mismo tipo de problema, y no hay ninguna razn para suponer que
puedan tener distintas estructuras.
Escogido el tipo de red neuronal (perceptrn multicapa) es necesario establecer
los siguientes parmetros de la red neuronal:
Algoritmo de entrenamiento
Funciones de transferencia
Nmero de capas
Algoritmo de entrenamiento
Se ha escogido el algoritmo de Levenberg-Marquardt integrado en la funcin
trainlim de Matlab, por las razones comentadas en el apartado anterior.
Funciones de transferencia
Los mercados financieros son no lineales y tienen memoria, por esto las
funciones de transferencia ms apropiadas son las funciones sigmoideas, ya que son
no lineales y continuamente diferenciables (ver [MA__92]).
El uso de funciones de transferencia no lineales no implica la suposicin de
independencia lineal de los patrones de entrada.
Por otra parte la ltima capa (cuya salida ser un valor nico correspondiente a la
prediccin) ser una funcin lineal, para que realice una salida ponderada a partir de
las salidas que han proporcionado todas las neuronas de las capas anteriores.
Tras haberse realizado diferentes anlisis empricos, se han escogido las
siguientes funciones de transferencia:
94
Nmero de capas
Antes de analizar la decisin del nmero de capas, se va a explicar la notacin
relacionada con las capas de un perceptrn multicapa.
Capa de entrada
1 capa oculta
Entrada 1
Entrada 2
Entrada n
n1
n2
nX
2 capa oculta
N capa oculta
Capa de salida
La capa de entrada corresponde a las entradas a la red neuronal, en este caso 30.
Estudios anteriores han mostrado que con dos capas ocultas se puede aproximar
funciones con una precisin arbitrariamente buena (ver [CYBE89]). Hasta ahora no
se han publicado estudios de perceptores multicapa con ms de dos capas ocultas. Se
parte por tanto de una red neuronal con dos capas ocultas.
95
Para tomar esta decisin, se ha supuesto que la segunda capa oculta tiene 3
neuronas y se ha ido variando el nmero de neuronas de la primera capa oculta
buscando cul es la red neuronal que mejor predice.
Se han estudiado cinco posibilidades (10 neuronas en la primera capa oculta, 20,
30, 40 y 50) calculando en cada una el error medio que tienen las predicciones en los
siguientes periodos:
96
El resultado de este estudio indica que la mejor estructura es la red neuronal con
30 neuronas en la primera capa oculta.
Ya se ha decidido que la primera capa oculta tendr 30 neuronas, ahora faltar
determinar cuntas neuronas debe tener la segunda. Para tomar esta decisin se
presupone que la primera capa oculta va tener 30 neuronas y se va variando el
nmero de neuronas de la segunda capa oculta para tratar de mejorar la prediccin.
Se van a estudiar las posibilidades de tener 3, 7, 10, 12 y 15 neuronas en la segunda
capa oculta.
El estudio se realiza de manera anloga al anterior, estudiando los errores medios
por periodos de simulacin en los mismos conjuntos de datos anteriores.
Los resultados de este nuevo estudio se muestran en el siguiente grfico:
El resultado de este estudio indica que la mejor estructura es la red neuronal con
7 neuronas en la segunda capa oculta.
97
30
n de salidas
n de capas
30
30
Lineal
algoritmo de entrenamiento
Levenberg-Marquardt
(trainlm)
Este modelo de red ser el aplicado a la red neuronal de cada una de las 20
empresas.
A continuacin se muestra una imagen de la estructura de la red neuronal, en la
que se observa su complejidad y el gran nmero de conexiones existentes.
98
Entrada 25
Entrada 26
Entrada 27
Entrada 30
Entrada 28
Entrada 29
23
Entrada 24
30
29
28
27
22
Entrada 23
21
20
19
18
17
16
15
14
13
12
11
10
1 capa oculta
Entrada 22
Entrada 20
Entrada 21
Entrada 18
Entrada 19
Entrada 16
Entrada 17
Entrada 14
Entrada 15
Entrada 12
Entrada 13
Entrada 1
Entrada 2
Entrada 3
Entrada 4
Entrada 5
Entrada 6
Entrada 7
Entrada 8
Entrada 9
Entrada 10
Entrada 11
Capa de entrada
2 capa oculta
4. Funcionamiento del
sistema en tiempo real
100
Anlisis de l
beneficio
Toma de
decisiones
Clculo de las
entradas a la
red neuronal
Simulacin de
la red
neuronal
101
102
15- inversion_realizada.ok
16-inversion_realizada.txt
1- cotizaciones.txt
2- cotizaciones.ok
acciones.ok
acciones.txt
cotizaciones.ok
cotizaciones.txt
acciones_actualizadas
Inversion_realizada.ok
inversion_realizada.txt
VISUAL CHART
actualiza_inversiones
evaclua_beneficio
guarda_historial
17-evalua el beneficio
evaluacion_y_decisiones
nuevas_cotizaciones.
3- deteccin de cotizaciones.ok
4- lectura de cotizaciones.txt
5-borra cotizaciones.ok y cotizaciones.txt
lectura_cotizaciones
MATLAB
beneficio
Decisiones de inversin
En cada periodo se tendr una posicin, que ser una variable que represente
dnde est invertido el dinero. Slo se consideran dos posibilidades:
Se han optado por estas dos posibilidades con el nimo de tener una postura ms
o menos conservadora.
El dinero que no se tiene invertido en ninguna empresa se le da el nombre de
dinero lquido. Para representar la posicin que se tiene en un periodo determinado
se utiliza una matriz 25x1:
### Dinero invertido en empresa 1
### Dinero invertido en empresa 2
.
..
104
efectuar (ver Anexo captulo 2). Este broker online cobra una comisin por operacin
de compra o de venta del 0,05% del importe de la operacin (con un mnimo de
1,5).
Por otro lado si se venden acciones que se han comprado a un precio menor (se
ha generado una plusvala), hay que pagar un impuesto correspondiente al 18% de la
plusvala necesaria (ver Anexo captulo 1).
Para realizar la toma de decisiones se ha programado en Matlab el siguiente
rbol de decisin:
105
Pagar 2 comisiones
2 Pulsvalas
Precios de Compra
No
Vender 2
Inversin en 2 empresas
Ninguna inversin
Posicin siguiente
Pagar 2 comisiones
1 Plusvaa
Comprar 2
Vender 2
Comprar 1
Vender 1
Quedarme =
Pagar 4 comisiones
2 Plusvalas
Pagar 2 comisiones
Suben
2 emp.?
distintas
2 que se tienen
Quedarme =
1 que se tiene
Cules?
No
Comprar 2c
Empresas
seleccionadas
Valores simulados
Valores actuales
Posicin anterior
Se tiene
dinero en 2
empresas?
No
Suben
2 emp.?
Primero se analiza cul es la situacin en la que se est (se tiene el dinero en dos
empresas o no se tiene en ninguna). Y segn sea est situacin se tomar una
decisin dependiendo de los valores que se hayan simulado.
Puede ser que en un periodo determinado se est en la situacin de que suban dos
empresas, pero que ejecutar las rdenes implique incurrir en unos gastos (comisiones
e impuestos) superiores al beneficio predicho. En esta situacin se opta por ejecutar
las rdenes, dado que si dos empresas aumentan su valor es muy probable que lo
hagan en el periodo siguiente y las comisiones tendrn que pagarse de todas formas.
Adems el cargo de las comisiones e impuestos viene a representar normalmente un
0,075% de la cantidad invertida, y las predicciones que se realizan tienen una
precisin media del 0,15% (ver apartado de modo de prueba) luego no se tiene la
suficiente precisin para tomar este tipo de decisiones.
Datos de partida
Para que el sistema de inversin empiece a trabajar en tiempo real, es necesario
que disponga de una serie de datos de partida. Estos datos de partida necesarios son:
Red neuronal: variable tipo structure con las 20 redes neuronales de las 20
empresas, entrenadas con datos histricos hasta el da anterior.
107
matriz estar compuesta por ceros menos el elemento (2,2), que contendr el
dinero lquido que se dispone para empezar a invertir.
Programacin
Se han programado dos rutinas relacionadas con la ejecucin del sistema en
tiempo real: modo de prueba y modo Visual Chart. El modo prueba consiste en la
simulacin del programa en tiempo real de un da anterior, para comprobar cmo se
hubiese comportado el sistema. El modo Visual Chart es el que se utilizar para
ejecutar el programa en tiempo real.
modoprueba
posicionesydinero
valores
108
109
110
Para ejecutar este sistema es necesario abrir un grfico con datos de una sola
empresa. Los parmetros de este sistema son: nombre del fichero de confirmacin,
nombre del fichero con las acciones a realizar.
El sistema funciona de la siguiente manera:
1. Recibe un fichero con las acciones a realizar (comprar, vender o no hacer
nada). Este fichero debe de indicar el nmero de ttulos que se desean
comprar o vender.
2. Ejecuta las rdenes pertinentes
3. Escribe un fichero con la confirmacin
Funcin funcionamiento_tiempo_real
Se ha programado una funcin funcionamiento_tiempo_real en Matlab, que
ejecuta el sistema de inversin en tiempo real interactuando con Visual Chart.
Antes de ejecutar la funcin funcionamiento_tiempo_real, es necesario insertar
los dos sistemas programados en Visual Chart. Primero es necesario abrir un grfico
con las cotizaciones de las 20 empresas e insertar en l el sistema escritura.vba. Por
otro lado, es necesario abrir 20 grficos independientes con la cotizacin de cada una
de las 20 empresas e insertar en cada uno de ellos el sistema ejecucion.vba.
Una vez se tienen los sistemas de Visual Chart en ejecucin, se puede ejecutar la
funcin
111
112
5. Resultados y
conclusiones
113
114
Se tiene un error medio global del 0,42% lo cual indica que se estn realizando
predicciones con una precisin considerablemente buena. Un error del 0,42% supone
que si una accin en un periodo vale 10, la red neuronal predijo que valdra 10,04 o
9,96, por ejemplo. Pero realmente las predicciones han tenido una precisin mayor,
pues las empresas Iberia, Indra y Ferrovial han presentado un error bastante ms
elevado que el resto de las empresas, y han hecho aumentar el error medio global.
Iberia ha presentado un error ms alto que el resto de las empresas porque la red
neuronal identific una tendencia alcista en el lunes 2 de junio, y la accin de Iberia
se mantuvo constante e incluso disminuy su valor. Este tipo de situaciones pueden
darse ya que el valor de una accin se puede ver afectado por mltiplos factores que
no se han tenido en cuenta en el modelado. En este caso se podra haber producido
un comportamiento inusual de la accin de Iberia porque el da dos de Junio de
2008 se public en Reuters una noticia que indicaba que Iberia haba visto un ligero
descenso en su coeficiente de ocupacin (ver [REUT08]), y esta noticia podra haber
provocado que algunos inversores vendieran sus acciones.
Es interesante comparar la prediccin del sistema con la prediccin ingenua. Esta
ltima consiste en suponer que la accin no vara su valor:
+ 1 = ()
1,80%
1,60%
1,40%
1,20%
1,00%
0,80%
0,60%
0,40%
0,20%
0,00%
Grfico 19: Comparacin del error obtenido con el error de la prediccin ingenua
errores del
sistema de
prediccin
errores de la
prediccin
ingenua
115
116
a la no variacin
del
valor de una
accin
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
% aciertos
% total de
aciertos
% subidas
acertadas
% bajadas
acertadas
117
118
90%
80%
70%
60%
50%
40%
% aciertos
prediccin
ingenua
% aciertos
prediccin
del sistema
30%
20%
10%
0%
Grfico 21: % de aciertos de la prediccin del sistema en comparacin con la prediccin ingenua
119
n de posiciones
250
200
150
100
50
No invertir
Unin Fenosa
Telefnica
Santander
Repsol
Red Elctrica
Popular
Inditex
Indra
Iberia
Iberdrola
Gasnatural
Gamesa
Ferrovial
FCC
Endesa
Bankinter
BBVA
Acciona
Acerinox
Acs
1.327,65
Impuestos pagados
946,78
Ambas cifras son muy elevadas. Hay que tener en cuenta que cada vez que se
realiza una operacin de compra o de venta es necesario pagar el 0,05% del importe
de la operacin al broker online (ver apartado 6.2). Por otra parte cuando se venden
acciones de una empresa obtenindose una plusvala, hay pagar un impuesto
correspondiente al 18% de la plusvala.
Debido al elevado nmero de operaciones intradiarias que se realizan se podra
conseguir un descuento de usuario frecuente con el broker online. La mayora de los
brokers online ofrecen esta posibilidad, y se podran reducir de forma considerable el
importe de las comisiones y generar un mayor beneficio.
120
dinero invertido
12.500
30/05/08
02/06/08
03/06/08
04/06/08
05/06/08
12.000
11.500
11.000
10.500
10.000
9.500
9.000
121
beneficio
acumulado
dinero invertido
2.500
12.500
30/05/08
02/06/08
03/06/08
04/06/08
05/06/08
12.000
2.000
11.500
1.500
11.000
10.500
1.000
10.000
500
9.500
0
9.000
122
12.500
123
13.700
13.600
12.000
13.500
13.400
11.000
13.300
10.500
13.200
dinero invertido
11.500
10.000
13.100
9.500
dinero invertido
IBEX-35
9.000
13.000
12.900
Grfico 25: Comparacin de la variacin del ndice IBEX-35 con el dinero invertido
6 Lneas de continuacin
124
125
126
127
7. Anexos
128
La plusvala se
La plusvala
Dividendos
Los dividendos tienen una retencin del 15%. El inversor slo cobra neto el
85%, el 15% restante se lo retienen cuando le van a pagar los dividendos. Estos se
imputan ntegramente en el clculo de la base imponible, el 100%, pero se puede
deducir el importe retenido, el 15%.
129
130
En definitiva un broker online es una sociedad que presta servicios de compraventa de valores y ofrece asesora burstil a travs de una pgina web.
Seguridad de su sistema
131
132
35,00
30,00
/operacin
25,00
20,00
Estubroker
15,00
Renta 4
Gaesco
10,00
Inversis
5,00
36.000
34.000
32.000
30.000
28.000
26.000
24.000
22.000
20.000
18.000
16.000
14.000
12.000
8.000
10.000
6.000
4.000
2.000
0,00
importe de la operacin
Empresa: ACS
133
134
Lo lgico es que sea el ltimo periodo que se dispone. Si se han descargado los
datos segn el ejemplo del apartado 1.2, fecha=20080606 (viernes 6 de junio de
2008) y hora=173000. De esta manera se obtendr la red neuronal para realizar
predicciones del da siguiente (lunes de 16 de junio de 2008).
La variable redneuronal contiene las 20 redes neuronales entrenadas para
realizar las predicciones, y la variable normaliza contiene la informacin
referente a la normalizacin de las entradas y salidas de la red neuronal.
135
_ =
0
0
comisiones: esta variable es una matriz que sirve para incluir las
comisiones y los impuestos. (Actualmente si se utiliza el broker online
EstuBroker la matriz comisiones sera: [0.0005 0.18]).
= %
136
Fecha
Valores simulados
Hora
Valores reales
Empresa
1 (ACS)
Empresa
20
(Unin
Fenosa)
ndice de
empresa
137
Fila con
el dinero
lquido
3. Obtencin de resultados
Para la obtencin de resultados se llama a la funcin resultados:
[VALORES,POSICIONES]=(fecha_inicial,fecha_final,HISTORICO
S)
Esta funcin tendr como inputs las salidas de la funcin modoprueba, y como
outputs:
1730
138
. (20)
. (20)
. (20)
(20) (20)
(20)
(1)
(20)
139
140
sistema
con
plataforma
Visual
(ETIQUETA=
ESC,
141
142
8. Bibliografa
[CAVA06] Cava, J.L., "El arte de especular. Las tcnicas que mejor funcionan".
2006.
[CLEM03] Clemens, M.P., Fransen, P.H, Swanson, "Forecasting economic and
financial time-series with non-linear models". 2003.
[CRUZ04]
[CYBE89]
Krse, J.A y Van der Smagt, P., "An introduction to neural networks".
1996.
143
[TAM_92] Tam, K.M, Kinag, M.Y, "Predicting bank failures: a neural network
approach". 1992.
[VELA07]
[WOJT02]
[ZHAN98] Zhang, G.P. y Hu, M.Y, "Forecasting with artificial neural networks".
1998.
144