Esempio n. 1
0
    def percorreModelo(self, n_reg, n_coef, moeda):
        self.b = Binary(n_reg, n_coef, moeda)  # Coleto os dados
        self.b.coletaDados(silencioso=False, funcaoAvalia=avaliaRetornoUp)

        # Faz a regressao
        self.rl = RegressaoLinear(self.b.getX(), self.b.getY())
        self.rl.fazRegressaoLinear(
            indice_corte=0.1)  # Testo apenas nos ultimos 10%

        self.a = Apostas(_fraction=0.05, _stake=1)
        self.a.calculaRetornoSimulado(self.rl.getX_Test(),
                                      self.rl.getY_Test(),
                                      self.rl.getCoeficients(),
                                      self.rl.getIntercept(),
                                      funcaoRetorno=calculaRetornoUp)

        if ((self.getApostas().getSaldo()) > 1000
                and (self.getApostas().qtd_apostas > 3000)
                and (sum([c for c in self.rl.getCoeficients()]) > 0)):
            print("Modelagem: Reg=", n_reg, ", coef=", n_coef, ", moeda=",
                  moeda, ", saldo=",
                  self.getApostas().getSaldo(), " ret_medio=",
                  self.getApostas().getRetMedio(), ", qtd=",
                  self.getApostas().qtd_apostas, "eq=",
                  self.getRegLin().getCoeficients(), "+",
                  self.getRegLin().getIntercept())
            return True
        return False
Esempio n. 2
0
    def apostaBinary(self, n_reg, n_coef, moeda, rl=None):
        n_reg2 = int(n_reg / 2)  # Modelo apenas metade
        self.b = Binary(n_reg2, n_coef, moeda)  # Coleto os dados
        #self.b.coletaDados(silencioso=True, funcaoAvalia=avaliaRetornoUp) # Sem coleta

        # Faz a regressao, se necessario
        if (rl is None):
            self.rl = RegressaoLinear(self.b.getX(), self.b.getY())
            self.rl.fazRegressaoLinear(indice_corte=-1)  # Com -1, nao faz Test
        else:
            self.rl = rl

        # Avaliando os dados atuais
        p_X, y, t = self.b.coletaDado(n_coef, funcaoAvalia=avaliaRetornoUp)
        y_calc = self.getRegLin().getIntercept() + sum(
            [x * k for x in p_X for k in self.getRegLin().getCoeficients()])
        if (y_calc > 0.65):
            tipo = "CALL"
        else:
            #tipo="PUT"
            return 0

        n_tick = int(n_coef / 2) + 1
        self.b.fazAposta(2, self.b.getMoeda(), tipo, n_tick)  # Atencao!

        #print("Apostando: Reg=", n_reg2, ", coef=", n_coef, ", moeda=", moeda, "eq=", self.getRegLin().getCoeficients(), "+", self.getRegLin().getIntercept() )
        print("Apostando...")
        return 1
Esempio n. 3
0
import math
import matplotlib.pyplot as plt
from RegressaoLinear import RegressaoLinear
t=[4,8,12,16,20,24]
c=[1590,1320,1000,900,650,560]
c2=[]
for i in range (0,len(c)):
	c2.append(c[i]*c[i])
ln_c=[]
for i in range(0,len(c)):
	ln_c.append(math.log(c[i]))
regressaolinear=RegressaoLinear(t,c)
regressaoparabolica=RegressaoLinear(t,c2)
regressaoexponencial=RegressaoLinear(t,ln_c)

fig, graficos=plt.subplots(3)

abcissas=[]
ordenadas=[]
for i in range(0,2500):
	abcissas.append(i/100)
	ordenadas.append(regressaolinear.funcao(i/100))
graficos[0].plot(abcissas,ordenadas)
graficos[0].plot(regressaolinear.x,regressaolinear.y,'ro',linewidth=3.0)
graficos[0].text(3,700,"R^2={}".format(regressaolinear.r*regressaolinear.r))

abcissas=[]
ordenadas=[]
for i in range(0,2500):
	abcissas.append(i/100)
	ordenadas.append(regressaoparabolica.funcao(i/100))
Esempio n. 4
0
from RegressaoLinear import RegressaoLinear
import matplotlib.pyplot as plt
import math

x = [0, 2, 4, 6, 9, 11, 12, 15, 17, 19]
y = [5, 6, 7, 6, 9, 8, 7, 10, 12, 12]
regressao = RegressaoLinear(x, y)
abcissas = []
ordenadas = []
for i in range(0, 2000):
    abcissas.append(i / 100)
    ordenadas.append(regressao.funcao(i / 100))
plt.plot(abcissas, ordenadas)
plt.plot(x, y, 'ro', linewidth=3.0)
plt.text(2.51, 10, "R={}".format(regressao.r))
print(regressao.r)
print(regressao.residuos_normalizados())
plt.grid(True)
plt.show()
Esempio n. 5
0
class Highlander():
    def __init__(self):
        pass

    def getApostas(self):
        return self.a

    def getRegLin(self):
        return self.rl

    def percorreModelo(self, n_reg, n_coef, moeda):
        self.b = Binary(n_reg, n_coef, moeda)  # Coleto os dados
        self.b.coletaDados(silencioso=False, funcaoAvalia=avaliaRetornoUp)

        # Faz a regressao
        self.rl = RegressaoLinear(self.b.getX(), self.b.getY())
        self.rl.fazRegressaoLinear(
            indice_corte=0.1)  # Testo apenas nos ultimos 10%

        self.a = Apostas(_fraction=0.05, _stake=1)
        self.a.calculaRetornoSimulado(self.rl.getX_Test(),
                                      self.rl.getY_Test(),
                                      self.rl.getCoeficients(),
                                      self.rl.getIntercept(),
                                      funcaoRetorno=calculaRetornoUp)

        if ((self.getApostas().getSaldo()) > 1000
                and (self.getApostas().qtd_apostas > 3000)
                and (sum([c for c in self.rl.getCoeficients()]) > 0)):
            print("Modelagem: Reg=", n_reg, ", coef=", n_coef, ", moeda=",
                  moeda, ", saldo=",
                  self.getApostas().getSaldo(), " ret_medio=",
                  self.getApostas().getRetMedio(), ", qtd=",
                  self.getApostas().qtd_apostas, "eq=",
                  self.getRegLin().getCoeficients(), "+",
                  self.getRegLin().getIntercept())
            return True
        return False

    def apostaBinary(self, n_reg, n_coef, moeda, rl=None):
        n_reg2 = int(n_reg / 2)  # Modelo apenas metade
        self.b = Binary(n_reg2, n_coef, moeda)  # Coleto os dados
        #self.b.coletaDados(silencioso=True, funcaoAvalia=avaliaRetornoUp) # Sem coleta

        # Faz a regressao, se necessario
        if (rl is None):
            self.rl = RegressaoLinear(self.b.getX(), self.b.getY())
            self.rl.fazRegressaoLinear(indice_corte=-1)  # Com -1, nao faz Test
        else:
            self.rl = rl

        # Avaliando os dados atuais
        p_X, y, t = self.b.coletaDado(n_coef, funcaoAvalia=avaliaRetornoUp)
        y_calc = self.getRegLin().getIntercept() + sum(
            [x * k for x in p_X for k in self.getRegLin().getCoeficients()])
        if (y_calc > 0.65):
            tipo = "CALL"
        else:
            #tipo="PUT"
            return 0

        n_tick = int(n_coef / 2) + 1
        self.b.fazAposta(2, self.b.getMoeda(), tipo, n_tick)  # Atencao!

        #print("Apostando: Reg=", n_reg2, ", coef=", n_coef, ", moeda=", moeda, "eq=", self.getRegLin().getCoeficients(), "+", self.getRegLin().getIntercept() )
        print("Apostando...")
        return 1
Esempio n. 6
0
import math
import matplotlib.pyplot as plt
from RegressaoLinear import RegressaoLinear
dia = [0, 4, 8, 12, 16, 20]
quantidade = [67, 84, 98, 125, 149, 185]
quantidade2 = []
for i in range(0, len(quantidade)):
    quantidade2.append(quantidade[i] * quantidade[i])
ln_quantidade = []
for i in range(0, len(quantidade)):
    ln_quantidade.append(math.log(quantidade[i]))
regressaolinear = RegressaoLinear(dia, quantidade)
regressaoparabolica = RegressaoLinear(dia, quantidade2)
regressaoexponencial = RegressaoLinear(dia, ln_quantidade)

fig, graficos = plt.subplots(3)

abcissas = []
ordenadas = []
for i in range(0, 2000):
    abcissas.append(i / 100)
    ordenadas.append(regressaolinear.funcao(i / 100))
graficos[0].plot(abcissas, ordenadas)
graficos[0].plot(regressaolinear.x, regressaolinear.y, 'ro', linewidth=3.0)
graficos[0].text(2.51, 55,
                 "R^2={}".format(regressaolinear.r * regressaolinear.r))

abcissas = []
ordenadas = []
for i in range(0, 2000):
    abcissas.append(i / 100)
Esempio n. 7
0
import math
from RegressaoLinear import RegressaoLinear
import matplotlib.pyplot as plt
temperatura=[26.67,93.33,148.89,315.56]
viscosidade=[1.35,0.085,0.012,0.00075]
viscosidadeln=[]
for i in range(0,len(temperatura)):
	viscosidadeln.append(math.log(viscosidade[i]))
regressao=RegressaoLinear(temperatura,viscosidadeln)
print("ln(viscosidade)=",regressao.coeficiente_linear,"+Temperatura*",regressao.coeficiente_angular)
print("R^2=",regressao.r*regressao.r)
abcissas=[]
ordenadas=[]
for i in range(0,30000):
	abcissas.append(i/100)
	ordenadas.append(regressao.funcao(i/100))
plt.plot(abcissas,ordenadas)
plt.plot(temperatura,viscosidadeln,'ro',linewidth=3.0)
plt.text(2.51,10,"R^2={}".format(regressao.r*regressao.r))
plt.show()
Esempio n. 8
0
from RegressaoLinear import RegressaoLinear
import matplotlib.pyplot as plt
import math

x = [2.5, 3.5, 5, 6, 7.5, 10, 12.5, 15, 17.5, 20]
y = [13, 11, 8.5, 8.2, 7, 6.2, 5.2, 4.8, 4.6, 4.3]
ln_x = []
ln_y = []
for i in range(0, len(x)):
    ln_x.append(math.log(x[i]))
for i in range(0, len(y)):
    ln_y.append(math.log(y[i]))

regressao = RegressaoLinear(ln_x, ln_y)
resultado = math.exp(regressao.funcao(math.log(9)))
print(resultado)
abcissas = []
ordenadas = []
for i in range(0, 300):
    abcissas.append(i / 100)
    ordenadas.append(regressao.funcao(i / 100))
plt.plot(abcissas, ordenadas)
plt.plot(ln_x, ln_y, 'ro')
plt.text(1, 3, "R^2={}".format(regressao.r * regressao.r))
plt.show()
Esempio n. 9
0
from RegressaoLinear import RegressaoLinear

planoCartesiano = {0.5: 4.4, 2.8: 1.8, 4.2: 1.0, 6.7: 0.4, 8.3: 0.2}

regressaoLinear = RegressaoLinear(planoCartesiano)
print(regressaoLinear.gerar_equacao())
Esempio n. 10
0
from RegressaoLinear import RegressaoLinear
import matplotlib.pyplot as plt
import math

x=[2.5,3.5,5,6,7.5,10,12.5,15,17.5,20]
y=[13,11,8.5,8.2,7,6.2,5.2,4.8,4.6,4.3]
ln_y=[]
for i in range(0,len(y)):
	ln_y.append(math.log(y[i]))

regressao=RegressaoLinear(x,ln_y)
ln_a=regressao.coeficiente_linear
b=regressao.coeficiente_angular
print("ln(a)=",ln_a,"\na=",math.exp(ln_a))
print("b=",b)
print("R=",regressao.r)
abcissas=[]
ordenadas=[]
for i in range(0,2000):
	abcissas.append(i/100)
	ordenadas.append(regressao.funcao(i/100))
plt.plot(x,ln_y,'ro')
plt.plot(abcissas,ordenadas)
plt.show()