python量化开发

2023-12-15 05:40:15

一、量化交易:

? ? ? ? 通过将与股票相关的信息数据化、策略化、并且通过历史数据验证它们的交易逻辑性

? ? ? ? 我们从全部股票,选出4到5个政策长期相当扶持的行业,这样就差不多剩下1/3股票了,去除一些质地不好的、ST差的,再选出中间主力运作比较活跃的,不是说几年趴着不动的,或波动比较小的,最后剩下1/6只股票,再根据技术面给它一个买点,或者政策面上有什么大的变化,比如资金链放松了,关注股票池里1/6的股票,因此很容易熟悉它们。

二、量化概念

1、基本面:居民消费指数、人均国内生产总值(GDP)、净资产收益率(ROE)

2、技术面:股票收盘价、K线(日/周/月/年)、均线(5/10/20/60日)

三、量化策略

1、赚钱:低买高卖

2、指标:

? ? ? ? 均线:择时策略

? ? ? ? 盈利能力:选股策略

? ? ? ? 周期性:板块轮动策略

四、常见的股票量化指标

1、相关平台:

? ? ? ? 财经网站:新浪、雅虎、东方财富

? ? ? ? 证券公司:中信、中金、国信、天风等

? ? ? ? 炒股平台:同花顺、通达信、大智慧等

2、择时-技术面:

? ? ? ? ① K线跌入BOLL的下轨买入,突破上轨卖出

? ? ? ? ② MACD金叉:DIF快速线上穿DEA慢速线

? ? ? ? ③ 换手率:天量见天价、地量见地价。

? ? ? ? ? ? ? ? 绝对地量:小于1%

? ? ? ? ? ? ? ? 成交低靡:1%-2%

? ? ? ? ? ? ? ? 成交温和:2%-3%

? ? ? ? ? ? ? ? 成交活跃:3%-5%

? ? ? ? ? ? ? ? 带量:5%-8%

? ? ? ? ? ? ? ? 放量:8%-15%

? ? ? ? ? ? ? ? 巨量:15%-25%

? ? ? ? ? ? ? ? 成交怪异:大于25%

? ? ? ?3、选股-基本面:

? ? ? ? ? ? ? ?① 市场宏观环境

???????????????② 企业盈利能力

? ? ? ? ? ? ? ?③ 年报数据价值最高,说明事项最多

? ? ? ? ? ? ? ?④ 行业景气度

? ? ? ? ? ? ? ?⑤ 舆情数据

? ? ? ? 4、找年报地址:巨潮资讯网

? ? ? ? ? ? ? ?最新公告中可以查看公司报告文档

? ? ? ? ? ? ? ?通过参加股东大会、给企业高管打电话的方式:判断年报是否造假

????????5、用财务数据来选股:

? ? ? ? ? ? ? ? 利润表:净利润率【合同拿到手的钱】、期末现金及现金等价物余额【实际拿到的钱】

? ? ? ? ? ? ? ? 杜邦分析:净资产收益率

? ? ? ? ? ? ? ? 市盈率高:代表大家都很看好它

? ? ? ? ? ? ? ? 管理层变动:大股东增持、减持

? ? ? ? 6、量化策略:

???????????????α 盲点套利:β 是与市场同涨共跌的部分,α 是独立于市场波动以外的部分,具体的做法可以通过做多股票组合(α+β),同时做空股指期货(-β),最终就剩下了绝对收益 α。

? ? ? ? 7、根据市场来选股:

? ? ? ? ? ? ? ? 大牛市买小牛股、小牛市买大牛股;

? ? ? ? ? ? ? ? 行情火爆买冷门股、行情低迷买热门股;

? ? ? ? ? ? ? ? 大盘低位买高位个股,大盘高位买地位个股

? ? ? ? 8、相对价位CKDP

? ? ? ? ? ? ? ? CKDP 的“0”附近查找低位,“100”高位

? ? ? ? 9、K线技术指标:

? ? ? ? ? ? ? ? 趋势型:移动平均线、简易波动、趋向指标

? ? ? ? ? ? ? ? 均线型:移动平均线、指数平滑均线、多空指标

? ? ? ? ? ? ? ? 成交量:成交量指标、成交线指标、量平滑移动平均线

? ? ? ? ? ? ? ? 其他:成本均线、心理线

五、公募量化策略【基本面】:

? ? ? ? 1、指数增强:购买的大部分股票基本复制指数的成分股,通过择时、择股等手段,获得比指数更高的收益回报

? ? ? ? 2、量化选股:通过量化模型选股,在合适的时机买入,追求超越业绩基准的超额收益

? ? ? ? 3、量化对冲:市场中性,追求的是绝对收益α

? ? ? ? 4、换仓周期:一个月

六、私募量化策略【技术面】

? ? ? ? 1、换仓周期:几天

? ? ? ? 2、高频交易

? ? ? ? 3、通过高换手率来控制暴露的风险

? ? ? ? 4、量化策略:期货策略、期权策略、债券策略等

? ? ? ? 5、期货策略CTA(管理期货)策略:投资范围包括股指期货策略、大宗商品期货策略、国债期货策略,最经典的就是捕捉价格动量趋势,通过快速止损实现“亏小赢大”的局面

? ? ? ? 6、套利量化策略:通过跨市场、跨期限、跨品种去捕捉市场的不合理价差。

? ? ? ? ? ? ? ? 例如国内大商所的大豆、玉米可以和芝加哥期货交易所的农产品(5.960,0.18,3.11%)进行跨市场套利;

????????????????豆油、棕榈油、菜籽油互为替代品,受到季节性气候的影响可能会出现跨品种套利空间;

? ? ? ? ? ? ? ? 同一品种不同月份的价格强弱变化又可以带来跨期限套利

? ? ? ? 7、A股量价策略:A股还是以散户交易为主,私募的量化策略可以捕获到散户的不理性行为,反向操作即可赚取超额收益,这几年很受市场追捧,为了挖取超额收益,只能采用更高频的数据。但在相同市场环境。

? ? ? ? 8、资金容量:相同市场环境下,换手率越高的策略资金容量越小

七、如何搭建量化交易系统

1、量化交易系统的组成:

? ? ? ? 数据端:

????????????????可视化:技术层面的K线图

????????????????行情:股票的今天价格

? ? ? ? 决策端:

? ? ? ? ????????交易策略:做决策

? ? ? ? 执行端:

? ? ? ? ????????柜台:执行交易、委托、计算持仓、计算资金、做核对的部分

2、使用Python实现量化交易、

? ? ? ? 1)Data:

? ? ? ? ? ? ? ? A、指数:

? ? ? ? ? ? ? ? ? ? ? ? a、持仓个股

? ? ? ? ? ? ? ? ? ? ? ? b、行情

? ? ? ? ? ? ? ? ? ? ? ? c、资金流

? ? ? ? ? ? ? ? B、个股:

? ? ? ? ? ? ? ? ? ? ? ? a、基本信息

? ? ? ? ? ? ? ? ? ? ? ? b、行情

? ? ? ? ? ? ? ? ? ? ? ? c、资金流

? ? ? ? 2)Strategy:

? ? ? ? ? ? ? ? A、择时策略:

? ? ? ? ? ? ? ? ? ? ? ? a、布林线

? ? ? ? ? ? ? ? ? ? ? ? b、移动平均线

? ? ? ? ? ? ? ? ? ? ? ? c、相对强弱指标

? ? ? ? ? ? ? ? B、选股策略:

? ? ? ? ? ? ? ? ? ? ? ?a、 盈利能力

? ? ? ? ? ? ? ? ? ? ? ? b、市值

? ? ? ? ? ? ? ? ? ? ? ? c、估值

? ? ? ? 3)Trade:

? ? ? ? ? ? ? ? A、委托

? ? ? ? ? ? ? ? B、成交

? ? ? ? ? ? ? ? C、持仓

? ? ? ? ? ? ? ? D、资金

? ? ? ? 4)Chart

八、量化交易系统的Data模块?

1、股票的特性

? ? ? ? 1)股票:股份公司的所有权凭证、盈亏自负

????????2)基金:投资组合(股票、债券、现金)

? ? ? ? 3)债券:还本付息的有价证券(国债、企业债、金融债券)

? ? ? ? 风险:风险(10%)>基金(5%)>债券(1%)

? ? ? ? 收益:股票 > 基金 > 债券

九、获取股票数据的2种方式:

1、免费的数据接口:

? ? ? ? 数据源:天勤量化、BigQuant、JoinQuant(聚宽)等

? ? ? ? 基本数据:每天的行情、财务数据、技术指标

2、付费的数据接口:

? ? ? ? 数据源:Wind和彭博

? ? ? ? 基本数据:提供秒级的行情数据、高阶复杂的技术指标、量化策略

? ? ? ? 费用:3万

? ? ? ? 优势:省掉重复造轮子的精力

十、使用JQData查询行情数据

1、数据字典:

? ? ? ? 股票数据:提供2005年至今沪深A股全面的行情、财务、基本面等数据

? ? ? ? 行业概念数据:包含行业板块、概念板块数据

? ? ? ? 指数数据:包含沪深市场多只指数数据

? ? ? ? 宏观经济数据:包含国内的重要宏观经济数据

? ? ? ? 期货数据:涵盖中金所、上期所、郑商所和大商所的所有期货合约数据

? ? ? ? 期权数据:提供股票期权和商品期权的合约资料和行情数据

? ? ? ? 场内基金数据:包含ETF、LOF、分级基金、货币基金完整的行情、净值数据

? ? ? ? 场外基金数据:提供场外基金单位净值、复权净值、投资组合等数据

? ? ? ? 技术分析指标:技术分析指标因子库

? ? ? ? Alpha101因子:WorldQuant LLC 发表论文中给出的101个Alphas因子

? ? ? ? Alpha191因子:短周期交易型阿尔法因子

? ? ? ? 聚宽因子库:包含数百个质量、情绪、风险、成长等六大类因子

? ? ? ? 舆情数据:包含新闻联播等舆情数据

? ? ? ? JQData:能在本地调用的全品种量化金融数据

? ? ? ? 债券数据:提供债券基本信息、国债逆回购、可转债等债券数据

2、聚宽JQData获取所有股市数据

import time

from jqdatasdk import *
auth('XXX','XXX') #账号是申请时所填写的手机号;密码为聚宽官网登录密码

# 将所有股票列表转化成数组
stocks = list(get_all_securities(['stock']).index)
# 长度
print(len(stocks))

# 循环所有股票行情数据
for stock_code in stocks:
    df = get_price(stock_code, count=10, end_date='2023-08-31', frequency='daily', panel=False)
    print(df)
    time.sleep(3)

3、Resample函数

? ? ? ? ① Python数据分析库Pandas的方法函数

? ? ? ? ? ? ? ? 转换时间序列的频次

? ? ? ? ? ? ? ? 统计汇总

? ? ? ? ② 日K ——> 周K

? ? ? ? ? ? ? ? 周K开盘价:周一的开盘价

? ? ? ? ? ? ? ? 周K收盘价:周五的收盘价

? ? ? ? ? ? ? ? 周K最高价:一周中最高的最高价

? ? ? ? ? ? ? ? 周K最低价:一周中最低的最低价

? ? ? ? ③ 统计汇总功能:resample.sum / .count

?????????????????Sum = 720

????????? ? ? ? ? ? ? ?

? ? ? ? ④?pd.DataFrame() 是 Pandas(Python 数据分析库)中的一个函数,用于创建数据结构称为 DataFrame。DataFrame 是一个二维的、表格型的数据结构,类似于电子表格或 SQL 表,可以存储和处理各种类型的数据。

? ? ? ? ⑤ 设置行列不忽略

# 设置行列不忽略
pd.set_option('display.max_rows', 100)
pd.set_option('display.max_columns', 10)

? ? ? ? ⑥ Resample周期转换:通过日K线计算月K线

df = get_price('000001.XSHE', count=7, end_date='2023-08-31', frequency='daily', panel=False) # 获取日K
df['weekday'] = df.index.weekday
# 获取周K(当周的): 开盘价(当周第一天)、收盘价(当周最后一天)、最高价(当周)、最低价(当周)
df_week = pd.DataFrame()
df_week['open'] = df['open'].resample('W').first() # 周K的开盘价
df_week['close'] = df['close'].resample('W').last() # 周K的收盘价
df_week['high'] = df['high'].resample('W').max() # 周K的最高价
df_week['low'] = df['low'].resample('W').min() # 周K的最低价

? ? ? ? ? ? ?⑦ Resample汇总统计:统计一下月成交量、成交额(sum)

# 汇总统计: 统计一下月成交量、成交额(sum)
df_week['volume(sum)'] = df['volume'].resample('W').sum() # 周K的成交量
df_week['money(sum)'] = df['money'].resample('W').sum() # 周K的成交额

?4、财务指标:

? ? ? ?企业财务的构成:

? ? ? ? ? ? ? ?资产负债表:

????????????????????????体现企业家底和负债情况

? ? ? ? ? ? ? ? ? ? ? ? 财务状态:资产、负债、所有者利益

? ? ? ? ? ? ? ? 利润表:

????????????????????????公司盈利能力、赚了多少、怎么赚的

????????????????????????隐含着对外来利润增长的预期

????????????????????????体现市场空间、成长能力

? ? ? ? ? ? ? ? ? ? ? ? 经营成果:收入、成本费用、利润

? ? ? ? ? ? ? ? 现金流量表【最难造假,需要合同和收付记录】:

????????????????????????权责发生制 vs 收付实现制? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? 体现造血能力、竞争优势、议价优势

????????????????? ? ? ? 现金流入、现金流出

5、财务指标选股找龙头企业、或者蓝筹企业:

? ? ? ? ? ? ? ? eps:每股收益= 净利润/股本数

? ? ? ? ? ? ? ? operating_profit:经营活动净收益 = 营业总收入 - 营业总成本

? ? ? ? ? ? ? ? inc_net_profit_year_on_year:净利润的同比增长率 = 今年的利润 - 去年的利润/去年的利润

? ? ? ? ? ? ? ? inc_net_profit_annual:环比增长率

? ? ? ? ? ? ? ? roe > 15%:净资产收益率ROE(%) = 归属于母公司的2倍净利润 /? 归属于母公司的净资产

? ? ? ? ? ? ? ? roa:总资产净利率ROA(%)

? ? ? ? ? ? ? ? net_profit_margin:销售净利率(%)

? ? ? ? ? ? ? ? gross_profit_margin > 75%:销售毛利率(%)

6、财务指标选股:??

????????利用成长增速选股概率性很高(eps每股收益>同行业平均值,roe净资产收益率>同行业平均值,净利润同比增长率>同行业平均值,经营活动净收益>同行业平均值),近3年近5年的roe等指标是排在前列的、未来一年的股价都是增长的,除非说行情市场特别不好、或者个别公司股价已经涨的很高、估值很高的情况,大部分公司股票都是会上涨的

'''获取股票财务指标'''
df = get_fundamentals(query(indicator), statDate='2022') # 获取财务指标数据
# df.to_csv(r'D:\DeltaFQuant\data\finance\finance2022.csv')  # 存储数据

# 基于盈利指标选股:eps、operating_profit,roe,inc_net_profit_year_on_year
df = df[(df['eps'] > 0) & (df['operating_profit'] > 973489901) &
        (df['roe'] > 10) & (df['inc_net_profit_year_on_year'] > 10)]

print(df)

?7、股票方法库

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
@Project :DeltaFQuant
@File    :Stock.py
@IDE     :PyCharm
@Author  :kaiwen.du
@Date    :2023/12/12 0012 21:31
'''

import time

import pandas as pd
from jqdatasdk import *
auth('xxx','xxx') #账号是申请时所填写的手机号;密码为聚宽官网登录密码

# 设置行列不忽略
pd.set_option('display.max_rows', 10000)
pd.set_option('display.max_columns', 1000)

'''
# 上海证券交易所	.XSHG '600519.XSHG' 贵州茅台
# 深圳证券交易所	.XSHE '000001.XSHE' 平安银行
'''

def get_stock_list():
    '''
    获取所有A股股票列表,
    上海交易所.XHSG
    深圳交易所.XSHE
    :return: stock_list
    '''
    stock_list = list(get_all_securities(['stock']).index)
    return stock_list

def get_single_stock_price(code, time_freq ,start_date, end_date):
    '''
    获取单个股票行情数据
    :param code: 股票代码
    :param timeperiod: 时间周期
    :param stadate: 开始时间
    :param endate: 结束时间
    :return: df
    '''
    data = get_price(code, start_date= start_date, end_date=end_date, frequency=time_freq, panel=False)
    return data

def export_data(data, filename, type):
    '''
    导出股票相关数据
    :param data: 股票行情数据
    :param filename: 文件名
    :param type: 股票数据类型,可以是: price、finance
    :return:
    '''
    file_rote = 'D:\DeltaFQuant\data\'' + type + '\'' +filename+'.csv'
    data.to_csv(file_rote)
    print('已成功存储至:', file_rote)


def transfer_price_freg(data, time_freq):
    '''
        转换股票行情周期
        :param data: 股票行情数据
        :param time_freq: 时间周期
    '''
    df_trans = pd.DataFrame()
    df_trans['open'] = data['open'].resample(time_freq).first()
    df_trans['close'] = data['close'].resample(time_freq).last()
    df_trans['high'] = data['high'].resample(time_freq).max()
    df_trans['low'] = data['low'].resample(time_freq).min()
    return df_trans

def get_single_finance(code, date, statDate):
    '''
    获取单个股票财务指标
    :param code: 股票代码
    :param date: 日期
    :return: df
    '''
    data = get_fundamentals(query(indicator).filter(indicator.code == code), date=date, statDate=statDate) # 获取财务指标数据
    return data

def get_single_valuation(code, date, statDate):
    '''
    获取单个股票估值指标
    :param code: 股票代码
    :param date: 日期
    :return: df
    '''
    data = get_fundamentals(query(valuation).filter(valuation.code == code), date=date, statDate=statDate) # 获取财务指标数据
    return data

十、实战内容

1、调用stock:创建example模块>stock脚本>获取数据

2、实时获取:获取日K数据、循环获更新

import pandas as pd

import data.stock as st
# 初始化变量
code = '000001.XSHE'
# 调用一只股票的行情数据
data = st.get_single_stock_price(code=code, time_freq='daily', start_date='2022-12-01', end_date='2022-12-31')

# 存入csv
st.export_data(data=data, filename=code, type='price')

# 从csv中获取数据
data = st.get_csv_data(code=code, type='price')
print(data)

# 实时更新数据:假设每天更新日K数据 > 存到csv文件里面 > data.to_csv(append)

十二、股票交易规则

开户:炒股平台、券商(交易费)

交易版面:K线、盘口、交易价格、数量(100股)

文章来源:https://blog.csdn.net/weixin_43837268/article/details/134936651
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。