A. 怎样用 Python 写一个股票自动交易的程序
股票自动交易助手提供了一个 Python 自动下单接口,参考代码
#股票自动交易助手Python自动下单使用例子
#把此脚本和StockOrderApi.pyOrder.dll放到你自己编写的脚本同一目录
fromStockOrderApiimport*
#买入测试
#Buy(u"600000",100,0,1,0)
#卖出测试,是持仓股才会有动作
#Sell(u"000100",100,0,1,0)
#账户信息
print("股票自动交易接口测试")
print("账户信息")
print("--------------------------------")
arrAccountInfo=["总资产","可用资金","持仓总市值","总盈利金额","持仓数量"];
foriinrange(0,len(arrAccountInfo)):
value=GetAccountInfo(u"",i,0)
print("%s%f"%(arrAccountInfo[i],value))
print("--------------------------------")
print("")
print("股票持仓")
print("--------------------------------")
#取出所有的持仓股票代码,结果以','隔开的
allStockCode=GetAllPositionCode(0)
allStockCodeArray=allStockCode.split(',')
foriinrange(0,len(allStockCodeArray)):
vol=GetPosInfo(allStockCodeArray[i],0,0)
changeP=GetPosInfo(allStockCodeArray[i],4,0)
print("%s%d%.2f%%"%(allStockCodeArray[i],vol,changeP))
print("--------------------------------")
B. 轻松上手FAM五因子模型(附python源码)
探索投资领域的新维度,让我们深入理解Fama-French五因子模型(FF5)的强大之处。自CAPM的提出,模型界一直在寻找更全面的解释股票收益的方法。FF5模型超越了传统的β,引入了市值(SMB)、账面市值比(HML)、盈利(RMW)、和投资(CMA)四个关键因子,提供了一个更为精准的股票收益分析框架。
因子的构建巧妙地融合了市值规模(SMB)与公司估值(HML),以及企业的盈利能力和投资策略(RMW与CMA)。FF5模型的回归目标在于,通过这些多元化的因子揭示收益率背后的驱动因素,同时承认误差项可能包含无风险收益α和风险因子,以更全面地刻画市场动态。
实战过程中,五因子模型的应用需要细致入微的步骤。首先,确定每只股票在不同组合中的权重,然后乘以预期收益,接着对所有股票的收益进行加权和,得出策略的收益率。选择中证500作为基准,股票池则广泛取自wind全A的股票,每年5月底进行一次策略调整,使用流通市值进行加权。
在回测阶段,我们回溯至2017年1月3日至2020年12月3日,对因子进行检验,确保其与Fama-French因子有良好的相关性。通过导入必要的模块和数据,如pandas、numpy等,对市值、账面市值比、盈利能力等关键数据进行预处理,构建出一个剔除不可交易股票的高效股票池(ALLapool)。
具体操作上,我们定义了一个get_score函数,通过市值加权计算各组合的股票持仓,同时处理缺失值。接着,针对每个因子,我们依据百分位选取股票组合,如70%和30%,并计算每日收益变化因子。最后,将这些因子与中证500收益进行对比,验证模型的有效性。
通过严谨的数据处理和可视化,FF5模型为我们揭示了股票收益的多元驱动,而不仅仅依赖于单个指标。这个模型的实践性,不仅限于理论研究,它能帮助投资者在实际交易中制定更精细的策略。让我们一起探索这个模型的魅力,提升投资决策的精确度。
【参考文献】Fama & French, A Five Factor Asset Pricing Model, J. Financial Economics, 2015
欲了解更多详情或深入学习,请关注QuantX量化团队,我们期待您的反馈:[email protected]
C. 什么是日内T+0交易
T+0,是国际上普遍使用的一种证劵(或期货)交易制度。凡在证劵(或期货)成交当天办理好证劵(或期货)和价款清算交割手续的交易制度,就称为T+0交易。
通俗说,就是当天买入的证劵(或期货)在当天就可以卖出。T+0交易曾在中国证劵市场实行过,由于证券市场不成熟,造成市场价格异常波动,为了保证证劵市场的稳定,中国上海证券交易所和深圳证券交易所对股票和基金交易实行“T+1”的交易方式。
T是英文Trade的首字母,是交易的意思。“回转交易”是指当日(T日)买入的股票可于成交后当日卖出其买入的全部或部分股票;若当日(T日)不卖出,T+1日或以后的任何一个交易日也可以进行卖出申报。
就是说,在“T+0”回转交易条件下,申报买入股票确认成交后,不限制投资者在哪个交易日进行卖出申报,投资者既可以把当天买入的股票当天卖出,也可以用当天卖出股票返回的资金当天再买进股票。“T+0”回转交易能减少投资人的持仓风险、增强股票的流动性。
(3)python如何计算股票持仓时间扩展阅读:
“T+0”的特点:
1、交易方式,双向交易,买涨买跌,现买现抛。
2、短线投机,股票操作15分钟后就可以平仓。
3、投机性增强,投机机会增多,适合短线投机者的操作方式。
4、投资者交易次数和交易费用的增加会导致交易成本的增加从而引起投机风险的增大。
T+0交易是深交所1993年底推出的一种交易办法,意思是,投资者买(卖)股票(或期货)当天确认成交后,当天买入股票可当天卖出,当天卖出股票又可当天买入的一种交易。
1995年1月1日起,为了保证股票市场的稳定,防止过度投机,中国股市实行"T+1"交易制度,即当日买进的股票,必须要到下一个交易日才能卖出。
同时,对资金仍然实行“T+0”,即当日回笼的资金马上可以使用。
B股股票使用T+1,资金适用T+3。
当前中国沪、深证券交易所的国债、企业债、可转债、权证实行的是“T+0”交易制度;A股、基金实行的均是“T+1”的交易制度。
D. 在中国,做量化交易一天的工作是怎样的
做量化交易一天的工作:
8:00~9:00: 打开交易策略,设置一些运营参数
9:00~9:30: 观察策略运转,确保没有问题
9:30~15:30: 解决已有策略的问题并研究新策略,测试新想法
15:30~17:00: 分析交易记录, 确定第二天的交易计划
17:00~18:00: 运动
岗位职责:
分析金融市场(期货、股票等)数据,寻找可利用的机会;开发与维护量化交易策略;提供机器学习/数据挖掘相应的技术支持;
岗位要求:
1.熟练计算机编程能力,熟练掌握至少一门编程语言,python优先;
理工科背景,具有良好的数理统计、数据挖掘等相关知识储备,熟悉机器学习方法(分析科学问题和相应数据,建立模型和方法,验证模型和方法,应用模型和方法并分析结果,改进模型和方法);
有处理分析大量数据的经验,并能熟练选择和应用数据挖掘和机器学习方法解决科研和工作中的实际问题;良好的自我学习和快速 学习能力,有工作激情,喜欢金融行业;两年及以上实验室研究经验或研发类工作经验优先;
(4)python如何计算股票持仓时间扩展阅读
量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,
极大地减少了投资者情绪波动的影响,避免在市场极度狂热或悲观的情况下作出非理性的投资决策。
E. python实现资产配置(1)----Markowitz 投资组合模型
现假设有A, B, C, D, E五只股票的收益率数据((第二日收盘价-第一日收盘价)/第一日收盘价)), 如果投资人的目标是达到20%的年收益率,那么该如何进行资产配置,才能使得投资的风险最低?
更一般的问题,假设现有x 1 ,x 2 ,...,x n , n支风险资产,且收益率已知,如果投资人的预期收益为goalRet,那么该如何进行资产配置,才能使得投资的风险最低?
1952年,芝加哥大学的Markowitz提出现代资产组合理论(Modern Portfolio Theory,简称MPT),为现代西方证券投资理论奠定了基础。其基本思想是,证券投资的风险在于证券投资收益的不确定性。如果将收益率视为一个数学上的随机变量的话,证券的期望收益是该随机变量的数学期望(均值),而风险可以用该随机变量的方差来表示。
对于投资组合而言,如何分配各种证券上的投资比例,从而使风险最小而收益最大?
答案是将投资比例设定为变量,通过数学规划,对每一固定收益率求最小方差,对每一个固定的方差求最大收益率,这个多元方程的解可以决定一条曲线,这条曲线上的每一个点都对应着最优投资组合,即在给定风险水平下,收益率最大,这条曲线称作“有效前沿” (Efficient Frontier)。
对投资者而言,不存在比有效前沿更优的投资组合,只需要根据自己的风险偏好在有效前沿上寻找最优策略。
简化后的公式为:
其中 p 为投资人的投资目标,即投资人期待的投资组合的期望值. 目标函数说明投资人资产分配的原则是在达成投资目标 p 的前提下,要将资产组合的风险最小化,这个公式就是Markowitz在1952年发表的'Portfolio Selection'一文的精髓,该文奠定了现代投资组合理论的基础,也为Markowitz赢得了1990年的诺贝尔经济学奖. 公式(1)中的决策变量为w i , i = 1,...,N, 整个数学形式是二次规划(Quadratic Programming)问题,在允许卖空的情况下(即w i 可以为负,只有等式约束)时,可以用拉格朗日(Lagrange)方法求解。
有效前缘曲线如下图:
我们考虑如下的二次规划问题
运用拉格朗日方法求解,可以得到
再看公式(1),则将目标函数由 min W T W 调整为 min 1/2(W T W), 两问题等价,写出的求解矩阵为:
工具包: CVXOPT python凸优化包
函数原型: CVXOPT.solvers.qp(P,q,G,h,A,b)
求解时,将对应的P,q,G,h,A,b写出,带入求解函数即可.值得注意的是输入的矩阵必须使用CVXOPT 中的matrix函数转化,输出的结果要使用 print(CVXOPT.solvers.qp(P,q,G,h,A,b)['x']) 函数才能输出。
这里选取五支股票2014-01-01到2015-01-01的收益率数据进行分析.
选取的五支股票分别为: 白云机场, 华夏银行, 浙能电力, 福建高速, 生益科技
先大体了解一下五支股票的收益率情况:
看来,20%的预期收益是达不到了。
接下来,我们来看五支股票的相关系数矩阵:
可以看出,白云机场和福建高速的相关性较高,因为二者同属于交通版块。在资产配置时,不利于降低非系统性风险。
接下来编写一个MeanVariance类,对于传入的收益率数据,可以进行给定预期收益的最佳持仓配比求解以及有效前缘曲线的绘制。
绘制的有效前缘曲线为:
将数据分为训练集和测试集,并将随机模拟的资产配比求得的累计收益与测试集的数据进行对比,得到:
可以看出,在前半段大部分时间用Markowitz模型计算出的收益率要高于随机模拟的组合,然而在后半段却不如随机模拟的数据,可能是训练的数据不够或者没有动态调仓造成的,在后面写策略的时候,我会加入动态调仓的部分。
股票分析部分:
Markowitz 投资组合模型求解
蔡立专:量化投资——以python为工具. 电子工业出版社