设置策略属性
一个backtestStrategy
对象有几个属性,使用参数设置backtestStrategy
函数。
最初的重量
的InitialWeights
属性包含的资产分配权重,val的开始。的默认值InitialWeights
是空的([]
),这表明战略开始,val闲置,这意味着100%的现金资本赚取无风险利率。
设置InitialWeights
到一个特定的资产配置。初始权值向量的大小必须匹配,val的资产数量。
交易成本
的TransactionCosts
属性允许您设置的费用支付交易资产的策略。支付交易成本占总每个资产的位置变化。在十进制指定成本百分比。例如,如果TransactionCosts
设置为1% (0.01
)和策略购买价值100美元的股票,然后交易费用是1美元。
交易成本设置使用1
——- - - - - -2
向量集单独收费标准购买和出售资产。在这个例子中,这两种策略同样支付交易成本——25个基点资产购买和销售50个基点。
你也可以设置TransactionCosts属性函数处理如果你需要实现任意复杂的交易成本结构。在创建交易成本函数的更多信息,见backtestStrategy
。
调整频率
的RebalanceFrequency
属性决定了多久,val引擎调整和再分配的投资组合策略使用平衡功能。设置RebalanceFrequency
在val的时间步骤。例如,如果val引擎测试策略与一组每日价格数据,然后设置平衡函数在天。从本质上讲,RebalanceFrequency
代表之间的价格数据处理的行数每个调用策略平衡功能。
Lookback窗口
每次val引擎调用策略平衡函数,资产价格数据的窗口(也可能是信号数据)传递给平衡功能。平衡功能可以使交易和分配的决定基于滚动窗口的市场数据。的LookbackWindow
属性集这些滚动窗口的大小。设置窗口的时间步骤。窗口确定的行数的数据从资产价格时间表传递到平衡的功能。
的LookbackWindow
属性可以设置在两个方面。一个固定大小的滚动窗口的数据(例如,“50天的价格历史”),LookbackWindow
属性设置为一个标量值(N
=50
)。软件然后调用平衡功能与价格包含确切时间表N
行价格数据。
或者,您可以定义LookbackWindow属性使用1
——- - - - - -2
向量(最小最大)
指定的最小和最大尺寸扩大窗口的数据。通过这种方式,您可以设置灵活的窗口大小。例如:
(10正)
——至少10行数据
50 [0]
——不超过50行数据
[0正]
——所有可用的数据(即,没有最低,没有最大);这是默认值
20 [20]
- 20行数据;这相当于设置LookbackWindow
标量值20.
软件不调用平衡函数如果数据不足以创建一个有效的滚动窗口,无论的价值RebalanceFrequency
财产。
如果策略不需要任何价格或信号数据的历史,那么你就可以表明,平衡函数不需要数据通过设置LookbackWindow
财产0
。
平衡功能
平衡函数(rebalanceFcn
)是user-authored包含策略的逻辑函数。val引擎调用策略平衡函数用一组固定的参数,并希望它返回一个向量的资产权重代表新的、理想的投资组合分配平衡。有关更多信息,请参见平衡功能。
创建策略
使用准备战略属性,您可以创建两个策略对象。
评级equalWeightStrategy = backtestStrategy属性:名称:“持股观望上调为增持”RebalanceFcn: @equalWeight RebalanceFrequency: 20 TransactionCosts: [0.0025 - 0.0050] LookbackWindow: 0 InitialWeights: [0.0333 0.0333 0.0333 0.0333 0.0333 0.0333……]
chaseReturnsStrategy = backtestStrategy属性:名称:“ChaseReturns”RebalanceFcn: @chaseReturns RebalanceFrequency: 20 TransactionCosts: [0.0025 - 0.0050] LookbackWindow: 11 InitialWeights: [0.0333 0.0333 0.0333 0.0333 0.0333 0.0333……]
设置,val引擎
val两种策略,使用backtestEngine
对象。val的val引擎设置参数,适用于所有的策略,如无风险利率和初始投资组合价值。有关更多信息,请参见backtestEngine
。
平衡功能
策略定义平衡函数使用rebalanceFcn
理由backtestStrategy
必须坚持一个固定的API, val引擎预计交互时,每个策略。平衡功能必须实现以下两个语法之一:
函数new_weights = exampleRebalanceFcn (current_weights assetPriceTimeTable)函数new_weights = exampleRebalanceFcn (current_weights assetPriceTimeTable signalDataTimeTable)
所有平衡功能将作为他们的第一个输入参数的当前分配权重组合。current_weights
代表了资产配置调整前发生。在调整期间,您可以使用current_weights
以多种方式。例如,您可以使用current_weights
确定投资组合分配多少已从目标分配或转移至交易规模在平衡限制营业额。
第二个和第三个参数调整函数的语法是资产价格和可选的滚动窗口信号数据。这两个表包含落后N
行资产和信号传递给的时间表runBacktest
函数,N
设置使用LookbackWindow
每种策略的属性。
如果可选信号数据的提供runBacktest
滚动窗口函数,那么,val引擎传递的信号数据,每个策略支持。金宝app
的equalWeight
策略简单投资同样在所有资产。
的chaseReturns
战略投资只在顶部X股票基于他们在lookback窗口滚动的回报。这个天真的策略是使用简单的作为一个说明性的例子。