Optimize Trade Schedule Trading Strategy
此示例显示了如何使用Kissell Research Group的交易成本分析来最大程度地降低交易成本,以优化单个股票的策略。优化可最大程度地减少与贸易计划交易策略相关的交易成本和指定的风险规避参数兰姆达。交易成本最小化表示为
交易成本是市场影响的地方m我,价格赞赏p一个和时机风险tr。有关详细信息,请参阅市场影响力
,,,,定价
,,,,一个ndTimingRisk
。
this example requires an Optimization Toolbox™ license. For background information, seeOptimization Theory Overview((Optimization Toolbox)。
在这里,您可以优化贸易计划贸易策略。优化为该表达式找到了局部最小值。有关搜索全球最小值的方法,请参阅local vs. Global Optima((Optimization Toolbox)。要优化数量和交易时间策略的百分比,请参见Optimize Percentage of Volume Trading Strategy一个nd优化贸易时间交易策略。
要访问示例代码,请输入编辑krgsinglestockoptimizationexample.m
在命令行。
检索市场影响参数
从Kissell Research Group FTP站点中检索市场影响数据。使用该网站连接到FTP网站ftp
function with a user name and password. Navigate to themi_parameters
文件夹和检索市场影响数据mi_encrypted_parameters.csv
file.Midata
contains the encrypted market-impact date, code, and parameters.
f = ftp('ftp.kissellresearch.com',,,,'username',,,,'pwd');mget(f,'mi_encrypted_parameters.csv');close(f) miData = readtable('mi_encrypted_parameters.csv',,,,'delimiter',,,,...',',,,,“ readlownames',,,,false,“ ReadVariablenames”,真的);
Create a Kissell Research Group transaction cost analysis objectk
。
k= krg(miData);
创建单股票数据
the structuretradeData
包含单个股票的数据。使用结构或表定义此数据。这些字段是:
Number of shares
一个verage daily volume
挥发性
Stock price
alpha估计
tradeData。股票= 100000;tradeData。一个DV = 1000000; tradeData.Volatility = 0.25; tradeData.Price = 35; tradeData.Alpha_bp = 50;
定义最初策略的交易数量和每笔交易的数量。田野大量驱动器
一个ndtradeSchedule
define the initial trade schedule trade strategy.
numIntervals = 26;tradeData.volumeprofile =一个(1,numIntervals) *...TradeData.Adv/numIntervals;TradeData.TradesChedule =一个(1,NumIntervals)。...(TradeData.shares./numintervals);
Define Optimization Parameters
Define risk aversion level兰姆达
。放兰姆达
从0到我nf
。
兰姆达= 1;
Define lowerlB
和上部UB
bounds of shares traded per interval for optimization.
lb =零(1,numIntervals);ub =一个(1,numIntervals)。* TradeData.Shares;
Specify constraintsAEQ
一个ndbeq
要表示贸易计划中交易的股票必须与股票总数相匹配。
aeq =一个(1,numIntervals);beq = tradeData.shares;
定义最大数量的功能评估和优化迭代次数。放'MaxFunEvals'
一个nd'Maxiter'
对于大量值,因此优化可以迭代多次找到局部最小值。
options = optimoptions('fmincon',,,,'MaxFunEvals',100000,'Maxiter',,,,100000);
定义功能句柄fun
对于目标函数。要访问此功能的代码,请输入edit krgSingleStockOptimizer.m
。
fun = @(tradeschedule)krgsinglestockoptimizer(Tradeschedule,k,...TradeData,Lambda);
minimize Trading Costs for Trade Strategy
minimize the trading costs for the trade schedule trade strategy.Fmincon
根据下限和上限值找到贸易计划贸易策略的最佳价值。它通过找到交易成本的当地最低限度来做到这一点。
[tradedata.tradeschedule,totalcost,entitflag] = fmincon(娱乐,...TradeData.TradesChedule,,,,[[这是给予的,,,,[[这是给予的,,,,一个eq,Beq,LB,UB,[],options);
to check whetherFmincon
找到局部最小值,显示该功能停止的原因。
出口
出口= 1.00
Fmincon
返回1
当它找到当地的最低限度时。有关详细信息,请参阅出口
((Optimization Toolbox)。
Display the optimized trade strategyTradeData.TradesChedule
。
TradeData.TradesChedule
ANS =列1至5 35563.33 18220.14 11688.59 8256.81 6057.39 ...
Estimate Trading Costs for Optimized Strategy
Estimate trading costs交易
使用优化的贸易策略。
mi = marketImpact(k,tradeData); pa = priceAppreciation(k,tradeData); tr = timingRisk(k,tradeData); tradeScheduleCosts = [totalcost mi pa tr];
显示交易成本。
交易
TradescheduleCosts = 97.32 47.66 6.75 42.91
the trading costs are:
总消耗
市场影响
价格欣赏
时机风险
有关上述计算的详细信息,请联系Kissell研究小组。
references
[1]基尔,罗伯特。“算法交易策略。”博士论文。福特汉姆大学,2006年5月。
[[2] Kissell, Robert.the Science of Algorithmic Trading and Portfolio Management。Cambridge, MA: Elsevier/Academic Press, 2013.
[3] Glantz,Morton和Robert Kissell。multi-Asset Risk Modeling。Cambridge, MA: Elsevier/Academic Press, 2013.
[[4] Kissell, Robert, and Morton Glantz.最佳交易策略。New York, NY: AMACOM, Inc., 2003.
也可以看看
Fmincon
((Optimization Toolbox)|最佳选择
((Optimization Toolbox)|市场影响力
|定价
|TimingRisk
|krg