【大数据】—量化交易实战案例(基础策略)

声明:股市有风险,投资需谨慎!本人没有系统学过金融知识,对股票有敬畏之心没有踏入其大门,所以只能写本文来模拟炒股。

量化交易,也被称为算法交易,是一种使用数学模型和计算机算法来分析市场数据、识别交易机会并自动执行交易的交易方式。这种交易方法依赖于统计学、数学和计算机科学,以减少人为情绪和主观判断的影响,提高交易效率和精确度。下面是量化交易的一些关键点:

  • 数据驱动:量化交易依赖于大量的历史和实时市场数据,包括价格、成交量、财务报告等。
  • 模型构建:交易者使用统计和机器学习技术来构建预测模型,这些模型可以识别市场趋势、价格模式或异常事件。
  • 策略开发:基于模型的预测,开发交易策略,这些策略可以是趋势跟踪、均值回归、套利等。
  • 自动化执行:一旦策略确定,交易可以完全自动化,由计算机程序执行,无需人工干预。
  • 风险管理:量化交易还包括风险管理算法,以确保交易在可接受的风险水平内进行。
  • 高频交易(HFT):一种特殊的量化交易,特点是交易频率极高,可能在几毫秒内完成数百甚至数千笔交易。
  • 成本和效率:由于减少了交易中的人工环节,量化交易可以降低交易成本并提高执行速度。
  • 监管合规:量化交易需要遵守金融市场的监管规定,包括交易规则和数据保护法规。

**优势:**量化交易的优势在于其能够快速处理大量数据,发现人类难以察觉的模式和机会。
**挑战:**模型可能过于依赖历史数据而无法准确预测未来市场变化,或者在市场极端波动时可能失效。

常见的量化交易策略:

  • 趋势跟踪(Momentum Trading):

    这种策略基于市场趋势的持续性,即“价格会沿着趋势方向继续运动”。 使用技术指标,如移动平均线,来识别和跟随市场趋势。

  • 均值回归(Mean Reversion):

    与趋势跟踪相反,均值回归策略假设价格会回归到其长期平均值。
    当价格偏离平均水平时,交易者会买入(在价格低时)或卖出(在价格高时),预期价格会回归到均值。

  • 套利(Arbitrage):

    套利策略利用市场的价格差异来获取无风险利润。 常见的套利类型包括统计套利、三角套利、跨期套利等。

  • 市场中性(Market Neutral):

    这种策略旨在消除市场风险,通过同时持有多头和空头头寸来对冲市场波动。 交易者可能会使用配对交易,即同时买入一个股票和卖出另一个相关股票。

  • 事件驱动(Event-Driven):

    事件驱动策略是基于特定事件对股票价格的影响,如并购、财报发布等。 交易者会分析事件对公司价值的潜在影响,并据此进行交易。

  • 高频交易(High-Frequency Trading, HFT):

    高频交易依赖于极快的交易执行速度和大量的交易来获取微小的利润。 这种策略通常需要复杂的算法和高性能的硬件。

  • 机器学习策略:

    使用机器学习算法,如神经网络、决策树等,来预测市场行为并制定交易决策。 这些策略可以处理非线性关系和复杂的数据模式。

  • 统计套利(Statistical Arbitrage):

    统计套利策略使用统计模型来识别价格偏差,并在预期价格会回归到正常水平时进行交易。

  • 风险平价(Risk Parity):

    这种策略旨在平衡投资组合中不同资产的风险贡献,而不仅仅是它们的资本分配。

  • 因子投资(Factor Investing):

    因子投资策略基于识别和利用市场中的特定因子,如价值、动量、规模等,来选择股票。

以上每种策略都有其优势和局限性,量化交易者通常会根据市场条件、个人风险偏好和投资目标来选择或组合使用不同的策略。此外,量化交易策略的成功实施还需要强大的数据处理能力、精确的模型构建和有效的风险管理。

下面我们就以均值回归(Mean Reversion)模拟今年1月1日至6月21日的量化交易过程:

量化交易:

通过调用股票网站后台接口,获取今年1月1日至6月21日平安银行股票数据:

import tushare as ts
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams ['font.sans-serif'] ='SimHei'      #显示中文
plt.rcParams ['axes.unicode_minus']=False       #显示负号
import baostock as bs

# 登录系统
lg = bs.login()

# 获取股票历史数据
rs = bs.query_history_k_data_plus("sh.601318",
    "date,code,open,high,low,close,preclose,volume,amount,adjustflag",
    start_date='2024-01-01', end_date='2024-06-21', 
    frequency="d", adjustflag="3")
print('query_history_k_data_plus respond error_code:' + rs.error_code)
print('query_history_k_data_plus respond  error_msg:' + rs.error_msg)

# 打印结果集
data_list = []
while (rs.error_code == '0') & rs.next():
    # 获取一条记录,将记录合并在一起
    data_list.append(rs.get_row_data())
result = pd.DataFrame(data_list, columns=rs.fields)
# 结果集输出到csv文件
result.to_csv("history_k_data.csv", index=False)
result

# 登出系统
bs.logout()

这样数据就被我们搞到了,让我们看看数据长什么样。
在这里插入图片描述
典型的“美国线”数据,open代表当日开盘价格,high代表当日最高价格,low代表当日最低价格,close代表当日收盘价格。我们还需要增加几个维度来分析,为了不影响原表,我们构建一个新表。

#只保留原始数据中的日期index
zgpa_signal = pd.DataFrame(index = zgpa.index)
#为了更能体现股票的真实价值
#使用Adj Close调整价格作为股票价格
zgpa_signal['股票价格'] = zgpa['close']
#增加一个字段,来存储股价的变化
zgpa_signal['股价变化'] = zgpa_signal['股票价格'].diff()
#增加diff字段后,第一行会出现空值,我们使用0来进行填补
zgpa_signal = zgpa_signal.fillna(0.0)
#如果股价上涨或不变,则标记为0
#如果股价下跌,则标记为1
zgpa_signal['涨跌情况'] = np.where(zgpa_signal['股价变化'] >= 0, 0,1)
#接下来,根据交易信号的变化进行下单
#一般情况下,在A股市场,买入或卖出至少为100股,即1手
zgpa_signal['股票数量'] = zgpa_signal['涨跌情况'].diff()*100
#检查一下下单的情况
zgpa_signal.head()

在这里插入图片描述说明一下图表内容:

  • 股票价格代表原表的收盘价格。
  • 股价变化就是当日与上日的相加额度。
  • 涨跌情况为0表示卖出,1表示买入。
  • 股票数量我们按照每次买入或卖出1手的原则进行交易,在A股市场买入或卖出至少为100股,即1手。

开始模拟量化炒股

initial_cash = 20000.00
#增加一个字段,代表交易的股票的市值
zgpa_signal['股票市值'] = zgpa_signal['股票数量']*zgpa_signal['股票价格']
#两次买卖的订单变化之差就是某一时刻仓位的变化情况
#持仓股票的数量变化乘以现价,就是代表交易产生的现金流
#用初始资金减去现金流变化的累加,就是剩余的现金
zgpa_signal['剩余现金'] = initial_cash -(zgpa_signal['股票数量'].diff()*zgpa_signal['股票价格']).cumsum()
#而最股票的市值加上剩余的现金,就是总资产
zgpa_signal['投资结算后总资产'] = zgpa_signal['股票市值'] + zgpa_signal['剩余现金']
# zgpa_signal.drop(['stock', 'cash', 'total'], axis=1, inplace=True)
zgpa_signal

在这里插入图片描述
又对表格增加了维度:

  • 股票市值就是股票价格乘以股票数量。
  • 剩余现金就是原始资金(20000元)减去现金流变化的累加。
  • 投资结算后总资产就是股票市值加上剩余现金。

预设的20000元本金,通过一系列操作后2024年6月21日余额为23706元,赚了3706元,因为我每天就买卖100股就没有计算交易费,下面我们绘图来展示。

#用图形来进行展示
#设置图形的尺寸是10*6
plt.figure(figsize=(10,6))
#分别绘制总资产和持仓股票市值的变化
plt.plot(zgpa_signal['投资结算后总资产'],
        label='投资结算后总资产')
plt.plot(zgpa_signal['股票数量'].cumsum()*zgpa_signal['股票价格'],'--',
        label='股票每日价格')
#增加网格,调整一下图注的位置,就可以显示图像了
plt.xticks([0,12,24,36,48,60,72,84,96,108])
plt.grid()
plt.legend(loc='center right')
plt.show()

在这里插入图片描述

小结

这是量化投资最简单的入门策略,后续会继续推出其他策略。

需要数据在本文开始点击下载,免费。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/734959.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

骑马与砍杀战团mod制作-基础-军队笔记(一)

骑马与砍杀战团mod制作-基础-军队装备笔记(一) 资料来源 学习的资料来源: b站【三啸解说】手把手教你做【骑砍】MOD,基础篇,链接为: https://www.bilibili.com/video/BV19x411Q7No?p4&vd_sourcea507…

设施布置之车间布局优化SLP分析

一 物流分析(Flow Analysis) 的基本方法 1、当物料移动是工艺过程的主要部分时,物流分析就是工厂布置设计的核心工作,也是物料搬运分析的开始。 2、零部件物流是该部件在工厂内移动时所走过的路线, 物流分析不仅要考虑…

Python18 数据结构与数据类型转换

1.python中的数据结构 在Python中,数据结构是用来存储、组织和管理数据的方式,以便有效地执行各种数据操作。Python提供了几种内置的数据结构,每种都有其特定的用途和操作方法。以下是Python中一些主要的数据结构: 1.列表&#…

Linux下Cmake安装或版本更新

下载Cmake源码 https://cmake.org/download/ 找到对应的版本和类型 放进linux环境解压 编译 安装 tar -vxvf cmake-3.13.0.tar.gz cd cmake-3.13.0 ./bootstrap make make install设置环境变量 vi ~/.bashrc在文件尾加入 export PATH/your_path/cmake-3.13.0/bin:$PAT…

css-vxe列表中ant进度条与百分比

1.vxe列表 ant进度条 <vxe-column field"actualProgress" title"进度" align"center" width"200"><template #default"{ row }"><a-progress:percent"Math.floor(row.actualProgress)"size"s…

KEIL5软件仿真观察PIN脚电平(软件仿真逻辑分析仪的使用)

仿真前的调整&#xff1a; 例&#xff1a;STM32F103C8T6 &#xff08;如果是F4的板子稍微对着修改一下&#xff09; 逻辑分析仪的使用 输入 PORTA.6( PORAT(哪一组).(哪一个引脚) )

【MySQL】

基础篇 执行一条 select 语句,期间发生了什么? 大家好,我是小林。 学习 SQL 的时候,大家肯定第一个先学到的就是 select 查询语句了,比如下面这句查询语句: // 在 product 表中,查询 id = 1 的记录 select * from product where id = 1;但是有没有想过,MySQL 执行一…

SARscape——均值滤波

目录 一、算法原理1、概述2、参考文献 二、软件操作三、结果展示1、原始图像2、滤波结果 一、算法原理 1、概述 均值滤波是选定一个合适的邻域窗口&#xff0c;然后取每个像素邻域窗口内的像素平均值&#xff0c;最后用均值取代待滤波的像素值作为最终的输出值。这种滤波比较简…

嵌入式linux系统中LCD屏驱动实现思路分析

在 Linux 下 LCD 的使用更加广泛,在搭配 QT 这样的 GUI 库下可以制作出非常精美的 UI 界面。接下来就来学习一下如何在 Linux 下驱动 LCD 屏幕。 第一:Framebuffer设备简介 先来回顾一下裸机的时候 LCD 驱动是怎么编写的,裸机 LCD 驱动编写流程如下: ①、初始化 I.MX6U 的…

【漏洞复现】Rejetto HTTP File Server 远程代码执行漏洞 (CVE-2024-23692)

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…

【windows|008】DNS服务详解

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 ​ &#x1f3c5;阿里云ACE认证高级工程师 ​ &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社…

FlowUs AI的使用教程和使用体验

FlowUs AI 使用教程 FlowUs AI特点使其成为提升个人和团队生产力的有力工具&#xff0c;无论是在学术研究、内容创作、技术开发还是日常办公中都能发挥重要作用。现在来看看如何使用FlowUs AI吧&#xff01; 注册与登录&#xff1a;首先&#xff0c;确保您已经注册并登录FlowU…

【图像识别系统】昆虫识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50

一、介绍 昆虫识别系统&#xff0c;使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法&#xff08;CNN&#xff09;模型。通过对10种常见的昆虫图片数据集&#xff08;‘蜜蜂’, ‘甲虫’, ‘蝴蝶’, ‘蝉’, ‘蜻蜓’, ‘蚱蜢’, ‘蛾’, ‘蝎子’, ‘…

HTML静态网页成品作业(HTML+CSS)——动漫猪猪侠网页(4个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有4个页面。 二、作品演示 三、代…

[MQTT]Mosquitto的權限管理_使用者/密碼(pwfile)和訪問控制清單(aclfile)

延續Mosquitto的內網連接(intranet)和使用者/密碼權限設置文章&#xff0c;經解讀mosquitto官網文檔&#xff0c;在權限管理部分&#xff0c;除了設置使用者/密碼(pwfile)之外&#xff0c;還有訪問控制清單(Access Control List, aclfile)可以設置。經過測試&#xff0c;同時設…

装备制造行业数据分析指标体系

数字化飞速发展的时代&#xff0c;多品种、定制化的产品需求、越来越短的产品生命周期、完善的售后服务、极佳的客户体验和快速的交货速度等&#xff0c;使得装备制造行业的经营环境越来越复杂&#xff0c;企业竞争从拼产品、拼价格迈向拼服务&#xff0c;装备制造企业正处于数…

sql server 非sa账号配置发布订阅

如果有些源端环境&#xff0c;sa账号被禁用&#xff0c;或者有其他问题&#xff0c;那可以按以下步骤操作。 使用高权限账户登录&#xff0c;另外需要拥有源端windows用户管理员的账号和密码 表发布订阅成功的前提&#xff1a;发布的表必须有主键。 创建一个专门用于发布订阅的…

66Uptime – 网站服务器 Cronjob 监控工具 v35.0.0扩展中文版安装

66Uptime是一款自托管、易于使用、轻量级且高性能的网站服务器和Cronjob监控工具。以其丰富的功能和便捷的管理方式&#xff0c;为用户提供了全方位的网站服务器和Cronjob监控解决方案&#xff1a; 主要功能&#xff1a; 监控网站服务器和Cronjob的运行状态&#xff0c;确保它们…

学习使用js和jquery修改css路径,实现html页面主题切换功能

学习使用js和jquery修改css路径&#xff0c;实现html页面主题切换功能 效果图html代码jquery切换css关键代码js切换css关键代码 效果图 html代码 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>修改css路径</title&g…