: | : | :期货量化学习 | :期货量化 |
返回列表 发帖

[Python源码] 模拟钢厂利润(Python源码)

[Python源码] 模拟钢厂利润(Python源码)

模拟钢厂利润概述

前文我们已经介绍过跨品种套利,跨品种套利所选择的品种从经济角度来说,它们可能处于同一产业链的上下游,比如玉米与淀粉,也有可能具有可替代或者互补的关系,比如豆油与菜油。一般来说同一产业链的品种相关性较高,无论是从基本面还是统计规律出发均比较容易找到逻辑支撑,常见的产业链主要包括黑色产业链、豆类油脂产业链、化工产业链等等。对同一产业链中相关性很强的品种的期货合约分别进行买入和买出,通过品种间的强弱变化引发价差的收缩与扩大,从而实现价差收益。“虚拟钢厂”的构建正是利用螺纹钢和其主要原材料:铁矿石和焦炭,三种上下游品种之间的价格的不平衡变化而产生的价差收益,是一种跨品种套利的策略。

一、可行性分析

我们首先来看看这三个品种的历史走势:

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import seaborn as sns
  4. import pandas as pd
  5. from CAL.PyCAL import font
  6. import DataAPI
  7. import scipy.stats as st


  8. rbm0 = DataAPI.MktMFutdGet(mainCon=u"1", contractObject=u"rb",startDate=u"20131101",endDate=u"20160601",field=[u'ClosePrice', 'TradeDate'],pandas="1")
  9. im0 = DataAPI.MktMFutdGet(mainCon=u"1", contractObject=u"i",startDate=u"20131101",endDate=u"20160601",field=[u'ClosePrice', 'TradeDate'],pandas="1")
  10. jm0 = DataAPI.MktMFutdGet(mainCon=u"1", contractObject=u"j",startDate=u"20131101",endDate=u"20160601",field=[u'ClosePrice', 'TradeDate'],pandas="1")
  11. y = np.array(rbm0['closePrice'])
  12. x1 = np.array(im0['closePrice'])
  13. x2 = np.array(jm0['closePrice'])

  14. fig = plt.figure(figsize=(15, 5))
  15. sns.set_style('whitegrid')
  16. ax = fig.add_subplot(111)
  17. ax.set_xlim(0, len(rbm0))
  18. ax.plot(y, color = '#000000', label='rb', lw=3)
  19. ax.plot(x1, 'r', label='i', lw=3)
  20. ax.plot(x2, 'g', label='j', lw=3)
  21. ax.set_xticks(range(0, len(rbm0), 60))
  22. ax.legend(loc=1)
  23. xlabel = ax.set_xticklabels([rbm0.ix[i, 'tradeDate'] for i in ax.get_xticks()])
  24. title = ax.set_title(u'螺纹,铁矿石,焦炭价格历史走势图', loc=u'center', fontproperties=font, fontsize=16)
复制代码

  1. print '螺纹与铁矿石相关系数:', np.corrcoef(y, x1)[0][1]
  2. print '螺纹与焦炭相关系数:', np.corrcoef(y, x2)[0][1]
  3. print '铁矿石与焦炭相关系数:', np.corrcoef(x1, x2)[0][1]
  4. print '------------------------------------------------'
  5. print '螺纹与铁矿石卡方检验p值:', st.chisquare(y, x1)[1]
  6. print '螺纹与焦炭卡方检验p值:',st.chisquare(y, x2)[1]
  7. print '铁矿石与焦炭卡方检验p值:',st.chisquare(x1, x2)[1]
  8. 1
  9. 2
  10. 3
  11. 4
  12. 5
  13. 6
  14. 7
  15. 8
  16. 螺纹与铁矿石相关系数: 0.977895286856
  17. 螺纹与焦炭相关系数: 0.964336641768
  18. 铁矿石与焦炭相关系数: 0.948966994897
  19. ------------------------------------------------
  20. 螺纹与铁矿石卡方检验p值: 0.0
  21. 螺纹与焦炭卡方检验p值: 0.0
  22. 铁矿石与焦炭卡方检验p值: 0.0
复制代码

对它们的价格序列进行卡方检验,p值几乎为0,可以认为这三者之间高度正相关,实际上螺纹和铁矿石的相关系数为0.978,螺纹和焦炭的相关系数为0.964,铁矿石和焦炭的相关系数为0.949。这就为三者之间进行跨品种套利奠定了基础。

二、模型构建

钢材生产流程大致分为三个阶段,分别为炼铁、炼钢和轧钢,生产成本主要包括原料成本、能源成本、人工成本、折旧和财务成本等。从原材料上来看, 生产1吨螺纹钢大致需要1.6吨铁矿石和0.5吨焦炭。因此,我们可以通过期货市场来大致模拟钢厂的生产过程,通过结合相关品种在期货市场的利润以及现货市场供需基本面数据,把握品种间的套利机会。通过成本估算,当前阶段:

  • 螺纹钢成本≈1.6×铁矿石+0.5×焦炭+加工成本
  • 利润≈螺纹钢期货价格-螺纹钢成本

炼铁、炼钢和轧钢三个阶段的总加工费大概在1100元左右。下图是2013.10-2016.7虚拟钢厂利润走势,在-200~300的范围内波动,利润中枢在100左右。

  1. fig = plt.figure(figsize=(15, 5))
  2. sns.set_style('whitegrid')
  3. ax = fig.add_subplot(111)
  4. ax.set_xlim(0, len(rbm0))
  5. profit = (y - 1.6*x1 - 0.5*x2 - 1100).tolist()
  6. ax.plot(profit, lw=3)
  7. ax.plot([300]*len(profit), '--r')
  8. ax.plot([-200]*len(profit), '--g')
  9. ax.set_xticks(range(0, len(profit), 60))
  10. xlabel = ax.set_xticklabels([rbm0.ix[i, 'tradeDate'] for i in ax.get_xticks()])
  11. title = ax.set_title(u'虚拟钢厂利润历史走势图', loc=u'center', fontproperties=font, fontsize=16)
复制代码


三、套利比例的确定

首先,从产业结构计算产出比,比如螺纹:铁矿:焦炭=1吨:1.6吨:0.5吨;其次,按照合约规定的实际数量的1:1来确定,当前螺纹:铁矿:焦炭=1:10:10(螺纹期货合约为10吨/手,铁矿和焦炭期货合约均为100吨/手。最后,确定套利比例也需要考虑各品种的波动率的不同。综合上述因素,这样大致可以确定螺纹、铁矿、焦炭三者的手数配比为20:3:1。初始资金设为15w。


四、具体操作

合约选取:
* 螺纹,铁矿,焦炭主力合约

策略逻辑:
* 当盘面利润高于300时,做空螺纹,做多铁矿石与焦炭;当盘面利润低于100时,若螺纹有空仓,则平掉所有仓位。
* 当盘面利润低于-200时,做多螺纹,做空铁矿石与焦炭;当盘面利润高于100时,若螺纹有多仓,则平掉所有仓位。
* 当主力切换时,平掉所有仓位

初始资金:
* 30w

回测时间:
* 自铁矿石品种上市以来

20161124124801395.jpg

20161124124829189.jpg

策略评价
  • 虚拟钢厂套利策略是基于基本面逻辑的套利策略,如果基本面发生重大变化,应及时止损止盈。
  • 可以看到策略的本质其实是一个固定了上下轨道的突破策略,其上下轨的确定是根据模拟钢厂生产的利润传导机制进行确定的
  • 当价差没有回归时,需要进行移仓换月的操作
  • 当前低迷的市场情况下,钢企合理利用期货市场进行套期保值、管控风险具有现实意义

论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

返回列表