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
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))
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()
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
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)
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()
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()
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())
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()