A renda diária é de dezenas de milhares, e a renda anual de Jack é de um milhão?

Leitores de longa data devem saber que eu negociei ações por mais de dois anos.

Do fundo inicial às ações posteriores, o valor foi pequeno e foi adicionado a 300.000 no máximo.

Quando o rali está no seu melhor, há um lucro flutuante de quase 10.000 todos os dias e, ocasionalmente, há um lucro flutuante de quase 20.000 .

Esses bons tempos chegaram ao fim desde que o mercado de ações entrou em um modo difícil em fevereiro.

No início do ano, a maior parte do lucro flutuante de dezenas de milhares de yuans também foi perdida. Além disso, o plano era usar muito dinheiro este ano e o corpo foi esvaziado.

O investimento no mercado de ações é muito mais conservador, basicamente fixado em uma posição baixa em torno de 100.000, e o foco está na participação.

Sempre houve leitores que quiseram ler meus artigos sobre gestão financeira, primeiro concordaram, depois pensaram bem.

Você disse, eu sou um blogueiro técnico e escrevo sobre gestão financeira. Não é um bom trabalho ?

Além disso, eu não tenho formação financeira, embora tenha ganhado algum dinheiro no mercado de ações por sorte, afinal não somos profissionais e não ousamos dar ordens aleatoriamente.

De repente, mudei de ideia recentemente, gestão financeira + tecnologia, posso fazer isso ~

Gosto de aprender novos conhecimentos , não se limitando apenas a informática, mas sempre ser curioso e querer aprender tudo.

Coincidentemente, pretendo publicar um vídeo de negociação quantitativa em um futuro próximo para discutir a aplicação da tecnologia de inteligência artificial no investimento no mercado de ações.

Aprendendo e aprendendo, descobri que a água aqui é muito funda, “não aguento”.

A negociação quantitativa não é tão fácil de fazer quanto eu pensava, e há muito conhecimento para aprender.

Em um fim de semana, eu cheguei na porta.

Hoje, vamos resolver e compartilhar os conceitos básicos de negociação quantitativa e aquecer para o vídeo.

Negociação quantitativa

A negociação quantitativa é um método de investimento em valores mobiliários que usa tecnologia de computador para negociar com a ajuda de estatísticas e matemática modernas.

Os principais pontos de conhecimento abordados são os seguintes:

Você pode entender matemática, programação, finanças e algoritmos, e pode compensar onde não pode.

Plataforma Quantitativa

Segure dados, escreva estratégias e negocie on-line. Se você fizer isso sozinho, o custo será muito alto, o que não é propício para o aprendizado inicial.

Eu investiguei algumas plataformas de análise quantitativa que podem nos ajudar a focar na aprendizagem de estratégias para negociação quantitativa.

Acho que as plataformas que podem ser usadas para começar são:

  • Poli largo

  • vnpy

Existem muitas plataformas para negociação quantitativa, como Nuggets, Mikuang, Youkuang, etc.

Mas para iniciantes, você pode olhar diretamente para este polykuan e vnpy.

A comunidade Jukuan é ativa e existem muitos tutoriais técnicos, adequados para iniciantes.

https://www.joinquant.com/study

Há muitos pontos de conhecimento aqui que podem ser aprendidos, e também há muitos figurões compartilhando suas estratégias.

A razão pela qual o vnpy é recomendado é que ele é de código aberto e pode aprender sistematicamente como construir um sistema de negociação quantitativo.

https://github.com/vnpy/vnpy

Se você deseja implementar uma estrutura de negociação quantitativa, pode consultar muitos códigos daqui.

Picadora de pequeno porte

O uso da plataforma de negociação quantitativa Jukuan é relativamente simples.

Tomamos esta plataforma como exemplo para explicar uma estratégia quantitativa simples.

Voltamos à essência do problema , comprar ações nada mais é do que dois pontos:

  • Qual ação comprar

  • quando comprar e quando vender

1. Qual ação comprar

Investidores, escolhendo ações, a maneira mais direta é olhar para as demonstrações financeiras .

Pelo menos inclua o balanço patrimonial, a demonstração de lucros e perdas, a demonstração do fluxo de caixa, essas três tabelas.

Há muitos dados aqui, e cada tabela tem uma variedade de métricas.

Esses dados indicadores, na negociação quantitativa, são chamados de fatores.

Entendo que é um recurso que costuma ser dito em nosso aprendizado de máquina, e cada fator pode ser contado como um recurso de uma dimensão.

Podemos usar esses dados conhecidos para construir dados de recursos multidimensionais e, em seguida, entregá-los ao algoritmo de aprendizado de máquina para permitir que o algoritmo julgue se vale a pena comprar a ação.

Isso remonta à velha questão de fazer algoritmos, quais recursos escolher para ajustar os dados.

É isso, a engenharia de recursos começa.

Esses recursos de nível mais baixo pertencem a um fator básico.

Na negociação quantitativa, mais fatores de "alta dimensão", ou seja, recursos, também podem ser calculados com base nesses dados.

Por exemplo, o retorno sobre os ativos líquidos, a abreviação em inglês é chamado de ROE.

O ROE é a proporção percentual do lucro após impostos de uma empresa dividido por seus ativos líquidos .

Ou seja, ROE = lucro líquido/ativo líquido

Lucro líquido, na demonstração do resultado, e patrimônio líquido, no balanço patrimonial.

O ROE reflete o nível de retorno sobre o patrimônio líquido e é usado para medir a eficiência do uso de capital próprio de uma empresa.

Quanto maior o valor do indicador, maior o retorno do investimento . Este indicador reflete a capacidade do capital próprio de obter lucro líquido.

O ROE é um recurso de "alta dimensão" calculado por meio de alguns recursos de "baixa dimensão".

A seleção de ações é realmente baseada nesses indicadores, escolhendo ações nas quais você acha que vale a pena investir.

Para simplificar a estratégia, aqui está um uso simples e único deste ROE, como um indicador de nossas ideias de seleção de ações de valor.

Simples e violento, calcule o ROE de todas as ações atuais, classifique de grande a pequeno e selecione top10 como nossa posição de estoque.

2. Quando comprar e quando vender

Os investidores querem comprar na baixa e vender na alta .

10 yuans para comprar, 100 yuans para vender, faça a diferença, ganhe 90.

A essência desse problema é: compre na baixa e venda na alta.

Mas a realidade é muitas vezes cruel.

Quando comprar e quando vender, na negociação quantitativa, existe um indicador, a força relativa de resistência e suporte, que é o RSRS.

Para entender a força relativa do suporte de resistência, você deve primeiro saber o que são resistência e suporte.

O nível de resistência refere-se à pressão que pode ser encontrada quando o preço-alvo aumenta, ou seja, o preço pelo qual o trader acredita que o poder do vendedor começa a ultrapassar o comprador, de modo que é difícil que o preço continue subindo ou recuar de lá;

O nível de suporte é o preço pelo qual os traders acreditam que o poder do comprador começou a ultrapassar o vendedor, interrompendo assim o declínio ou a recuperação.

A força relativa de resistência e suporte é uma maneira de usar resistência e suporte. Não considera mais resistência e suporte como um valor fixo, mas como uma variável, que reflete a percepção do trader sobre o topo e o fundo do estado atual do mercado. julgamento.

Ilustramos a lógica de aplicação da força relativa de suporte e resistência classificando diferentes estados de mercado:

O mercado está em um mercado em alta:

  • Se o suporte for significativamente mais forte que a resistência, o mercado em alta continua e os preços aceleram

  • Se a resistência for significativamente mais forte que o suporte, o mercado em alta pode estar chegando ao fim e os preços atingiram o pico

O mercado está agitado:

  • Se o suporte for significativamente mais forte que a resistência, um mercado em alta pode estar prestes a começar

  • Se a resistência for significativamente mais forte que o suporte, um mercado em baixa pode estar prestes a começar

O mercado está em um mercado de baixa em queda:

  • Se o suporte for significativamente mais forte que a resistência, o mercado em baixa pode estar chegando ao fim e os preços atingiram o fundo do poço

  • Se a resistência for significativamente mais forte que o suporte, o mercado em baixa continua e as quedas de preços aceleram

Os preços máximos e mínimos diários são uma espécie de níveis de resistência e suporte, que são a resistência e o suporte reconhecidos pelo comportamento de negociação de todos os participantes do mercado naquele dia. Uma ideia natural é construir uma regressão linear de altos e baixos e calcular a inclinação. qual é:

Quando o valor da inclinação é grande, a força de suporte é maior que a força de resistência. No mercado de alta, a resistência está ficando menor e o espaço superior é grande; no mercado de baixa, o suporte está ficando mais forte e o impulso descendente está prestes a parar.

Quando o valor da inclinação é pequeno, a força de resistência é maior que a força de suporte. No mercado de alta, a resistência está ficando mais forte e o impulso ascendente é gradualmente interrompido; no mercado de baixa, o suporte é enviado gradualmente e o espaço descendente está ficando cada vez maior.

Existem dois métodos para calcular o indicador RSRS: o primeiro método é usar diretamente a inclinação como valor do indicador e o segundo método é padronizar com base na inclinação.

Tomando o segundo método como exemplo, a estratégia de temporização do subíndice padrão da inclinação RSRS é a seguinte:

Picadora de pequeno porte

OK, qual ação comprar, quando comprar e quando vender, esses dois problemas estão resolvidos e podemos começar a escrever código.

Aqui você precisa dominar primeiro, como usar o Jukuan e algumas APIs.

Essa parte é relativamente simples, basta ir direto ao manual oficial da plataforma.

Escreva o seguinte código:

'''
策略思路:
选股:财务指标选股
择时:RSRS择时
持仓:有开仓信号时持有10只股票,不满足时保持空仓

'''
# 导入函数库
import statsmodels.api as sm
from pandas.stats.api import ols

# 初始化函数,设定基准等等
def initialize(context):
    # 开启动态复权模式(真实价格)
    set_option('use_real_price', True)
    # 过滤掉order系列API产生的比error级别低的log
    # log.set_level('order', 'error')
    set_parameter(context)
    ### 股票相关设定 ###
    # 股票类每笔交易时的手续费是:买入时佣金万分之三,卖出时佣金万分之三加千分之一印花税, 每笔交易佣金最低扣5块钱
    set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
    
    ## 运行函数(reference_security为运行时间的参考标的;传入的标的只做种类区分,因此传入'000300.XSHG'或'510300.XSHG'是一样的)
      # 开盘前运行
    run_daily(before_market_open, time='before_open', reference_security='000300.XSHG') 
      # 开盘时运行
    run_daily(market_open, time='open', reference_security='000300.XSHG')
      # 收盘后运行
    #run_daily(after_market_close, time='after_close', reference_security='000300.XSHG')
    
'''
==============================参数设置部分================================
'''
def set_parameter(context):
    # 设置RSRS指标中N, M的值
    #统计周期
    g.N = 18
    #统计样本长度
    g.M = 1100
    #首次运行判断
    g.init = True
    #持仓股票数
    g.stock_num = 10
    #风险参考基准
    g.security = '000300.XSHG'
    # 设定策略运行基准
    set_benchmark(g.security)
    #记录策略运行天数
    g.days = 0
    #set_benchmark(g.stock)
    # 买入阈值
    g.buy = 0.7
    g.sell = -0.7
    #用于记录回归后的beta值,即斜率
    g.ans = []
    #用于计算被决定系数加权修正后的贝塔值
    g.ans_rightdev= []
    
    # 计算2005年1月5日至回测开始日期的RSRS斜率指标
    prices = get_price(g.security, '2005-01-05', context.previous_date, '1d', ['high', 'low'])
    highs = prices.high
    lows = prices.low
    g.ans = []
    for i in range(len(highs))[g.N:]:
        data_high = highs.iloc[i-g.N+1:i+1]
        data_low = lows.iloc[i-g.N+1:i+1]
        X = sm.add_constant(data_low)
        model = sm.OLS(data_high,X)
        results = model.fit()
        g.ans.append(results.params[1])
        #计算r2
        g.ans_rightdev.append(results.rsquared)
    
## 开盘前运行函数     
def before_market_open(context):
    # 输出运行时间
    #log.info('函数运行时间(before_market_open):'+str(context.current_dt.time()))
    g.days += 1
    # 给微信发送消息(添加模拟交易,并绑定微信生效)
    send_message('策略正常,运行第%s天~'%g.days)

## 开盘时运行函数
def market_open(context):
    security = g.security
    # 填入各个日期的RSRS斜率值
    beta=0
    r2=0
    if g.init:
        g.init = False
    else:
        #RSRS斜率指标定义
        prices = attribute_history(security, g.N, '1d', ['high', 'low'])
        highs = prices.high
        lows = prices.low
        X = sm.add_constant(lows)
        model = sm.OLS(highs, X)
        beta = model.fit().params[1]
        g.ans.append(beta)
        #计算r2
        r2=model.fit().rsquared
        g.ans_rightdev.append(r2)
    
    # 计算标准化的RSRS指标
    # 计算均值序列    
    section = g.ans[-g.M:]
    # 计算均值序列
    mu = np.mean(section)
    # 计算标准化RSRS指标序列
    sigma = np.std(section)
    zscore = (section[-1]-mu)/sigma  
    #计算右偏RSRS标准分
    zscore_rightdev= zscore*beta*r2
    
    # 如果上一时间点的RSRS斜率大于买入阈值, 则全仓买入
    if zscore_rightdev > g.buy:
        # 记录这次买入
        log.info("市场风险在合理范围")
        #满足条件运行交易
        trade_func(context)
    # 如果上一时间点的RSRS斜率小于卖出阈值, 则空仓卖出
    elif (zscore_rightdev < g.sell) and (len(context.portfolio.positions.keys()) > 0):
        # 记录这次卖出
        log.info("市场风险过大,保持空仓状态")
        # 卖出所有股票,使这只股票的最终持有量为0
        for s in context.portfolio.positions.keys():
            order_target(s, 0)
            
#策略选股买卖部分    
def trade_func(context):
    #获取股票池
    df = get_fundamentals(query(valuation.code,valuation.pb_ratio,indicator.roe))
    #进行pb,roe大于0筛选
    df = df[(df['roe']>0) & (df['pb_ratio']>0)].sort('pb_ratio')
    #以股票名词作为index
    df.index = df['code'].values
    #取roe倒数
    df['1/roe'] = 1/df['roe']
    #获取综合得分
    df['point'] = df[['pb_ratio','1/roe']].rank().T.apply(f_sum)
    #按得分进行排序,取指定数量的股票
    df = df.sort('point')[:g.stock_num]
    pool = df.index
    log.info('总共选出%s只股票'%len(pool))
    #得到每只股票应该分配的资金
    cash = context.portfolio.total_value/len(pool)
    #获取已经持仓列表
    hold_stock = context.portfolio.positions.keys() 
    #卖出不在持仓中的股票
    for s in hold_stock:
        if s not in pool:
            order_target(s,0)
    #买入股票
    for s in pool:
        order_target_value(s,cash)
#打分工具
def f_sum(x):
    return sum(x)
        
## 收盘后运行函数  
def after_market_close(context):
    #得到当天所有成交记录
    trades = get_trades()
    for _trade in trades.values():
        log.info('成交记录:'+str(_trade))
    #打印账户总资产
    log.info('今日账户总资产:%s'%round(context.portfolio.total_value,2))
    #log.info('##############################################################')

Escreva o código à esquerda, insira o tempo e o valor do backtest e você poderá executá-lo.

Eu testei diretamente o efeito de janeiro de 2010 a janeiro de 2020 e o retorno do investimento por dez anos:

Decolou diretamente, o capital inicial era de 500.000, e fez vários milhões, muito estável!

Fiz o backtest dos retornos por um ano e meio de janeiro de 2020 a junho de 2021:

Ele teve um desempenho inferior ao mercado em 8,35%, mas não perdeu dinheiro, e a taxa anualizada também pode ser de 11,40%, o que é bom.

Resumir

Essa estratégia, sem usar dados históricos, é baseada em alguns indicadores atuais para tomar decisões.

Investimento e gestão financeira, conhecimento nesta área, ainda precisa ser aprendido, não investir na bolsa de valores, comprar um banco regularmente também é bom.

Estudamos muito na janela fria, por um lado, queremos aprender alguma coisa, ganhar dinheiro e viver uma vida confortável.

As escolas nos ensinam todo tipo de conhecimento básico, mas raramente nos ensinam diretamente como ganhar dinheiro, administrar dinheiro e administrar nossa riqueza.

Então, ensine-se. A vida é sobre jogar, e aprender todos os tipos de conhecimento é muito bom e interessante.

Agora, embora o mercado de ações seja um modo difícil, ainda há muitas oportunidades, e também podemos usar esse tempo para complementar nosso conhecimento.

Essa edição é hardcore, amigos que gostarem, encaminhem, curtam e deixem eu ver.

Interessado, continue a sair mais tarde.

Por fim, darei a você uma cópia para me ajudar a obter a estrutura de dados da BAT e de outros fabricantes de primeira linha . Ela foi escrita por um mestre do Google e é muito útil para alunos que possuem algoritmos fracos ou precisam melhorar:

Notas de escovação Leetcode do Google e Ali

Assim como a rota de aprendizado do engenheiro de algoritmos BAT, livros + vídeos , rotas de aprendizado completas e instruções que compilei , com certeza ajudará aqueles que desejam se tornar engenheiros de algoritmos:

Como me tornei um engenheiro de algoritmos, caminho de aprendizado super detalhado

Eu sou Jack, até a próxima!

Acho que você gosta

Origin blog.csdn.net/c406495762/article/details/118532397
Recomendado
Clasificación