ウォーレン・バフェットの指導者であるベンジャミン・グラハムが『賢明な投資家の
この方法では,債券ファンドの波動率は株式の波動率よりもはるかに低いので,債券はここで"参照
株価が上昇すると,株価が債券より高くなり,両者の市場価値比率が設定された
逆に,株価が下がると,株価の市場価値が債券の市場価値より小さい.両者の市場価値比率が設定された
動的バランスのとれた株式と債券の比率で 株の成長の恩恵を享受し,資産の変動を軽減できるのです. 価値投資の先駆者として,グラハムは素晴らしいアイデアを提示しています. これが完全な戦略であるなら,なぜそれをデジタル通貨で使わないのでしょうか?
ブロックチェーン資産BTCにおける動的バランス戦略
戦略的論理
BTCの値下げや値上げに関わらず,口座残高は BTCの市場価値と同等に動いています. BTCが値下げされた場合,購入し,再び戻ってくるまで待って,平気のように販売します.
開発者による量化取引プラットフォームの例として,まず戦略の枠組みを見てみましょう.
// 撤单函数
function CancelPendingOrders() {}
// 下单函数
function onTick() {}
// 主函数
function main() {
// 过滤非重要信息
SetErrorFilter("GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout");
while (true) { // 轮询模式
if (onTick()) { // 执行 onTick 函数
CancelPendingOrders(); // 取消未成交的挂单
Log(_C(exchange.GetAccount)); // 打印当前账户信息
}
Sleep(LoopInterval * 1000); // 休眠
}
}
基本的には,メイン主関数,オンティック下記関数,CancelPendingOrders関数,必要パラメータなどで,基本はシンプルです.
// 下单函数
function onTick() {
var acc = _C(exchange.GetAccount); // 获取账户信息
var ticker = _C(exchange.GetTicker); // 获取 Tick 数据
var spread = ticker.Sell - ticker.Buy; // 获取 Tick 数据的买卖价差
// 账户余额与当前持仓价值的差值的 0.5倍
var diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2;
var ratio = diffAsset / acc.Balance; // diffAsset / 账户余额
LogStatus('ratio:', ratio, _D()); // 打印 ratio和当前时间
if (Math.abs(ratio) < threshold) { // 如果 ratio的绝对值小于指定阈值
return false; // 返回 false
}
if (ratio > 0) { // 如果 ratio大于 0
var buyPrice = _N(ticker.Sell + spread, ZPrecision); // 计算下单价格
var buyAmount = _N(diffAsset / buyPrice, XPrecision); // 计算下单量
if (buyAmount < MinStock) { // 如果下单量小于最小交易量
return false; // 返回 false
}
exchange.Buy(buyPrice, buyAmount, diffAsset, ratio); // 买入下单
} else {
var sellPrice = _N(ticker.Buy - spread, ZPrecision); // 计算下单价格
var sellAmount = _N(-diffAsset / sellPrice, XPrecision); // 计算下单量
if (sellAmount < MinStock) { // 如果下单量小于最小交易量
return false; // 返回 false
}
exchange.Sell(sellPrice, sellAmount, diffAsset, ratio); // 卖出下单
}
return true; // 返回 true
}
取引のロジックは明確で,すべての解説がコードに書かれています. 画像をクリックして拡大してください.
基本的には以下の通りです.
// 撤单函数
function CancelPendingOrders() {
Sleep(1000); // 休眠 1秒
var ret = false;
while (true) {
var orders = null;
// 持续获取未成交订单数组,如果返回异常,则继续获取
while (!(orders = exchange.GetOrders())) {
Sleep(1000); // 休眠 1秒
}
if (orders.length == 0) { // 如果订单数组为空
return ret; // 返回撤单状态
}
for (var j = 0; j < orders.length; j++) { // 遍历未成交订单数组
exchange.CancelOrder(orders[j].Id); // 依次取消未成交订单
ret = true;
if (j < (orders.length - 1)) {
Sleep(1000); // 休眠 1秒
}
}
}
}
ブロックを削除するには,次の手順で簡単にできます.
// 回测环境
/*backtest
start: 2018-01-01 00:00:00
end: 2018-08-01 11:00:00
period: 1m
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
// 撤单函数
function CancelPendingOrders() {
Sleep(1000); // 休眠 1秒
var ret = false;
while (true) {
var orders = null;
// 持续获取未成交订单数组,如果返回异常,则继续获取
while (!(orders = exchange.GetOrders())) {
Sleep(1000); // 休眠 1秒
}
if (orders.length == 0) { // 如果订单数组为空
return ret; // 返回撤单状态
}
for (var j = 0; j < orders.length; j++) { // 遍历未成交订单数组
exchange.CancelOrder(orders[j].Id); // 依次取消未成交订单
ret = true;
if (j < (orders.length - 1)) {
Sleep(1000); // 休眠 1秒
}
}
}
}
// 下单函数
function onTick() {
var acc = _C(exchange.GetAccount); // 获取账户信息
var ticker = _C(exchange.GetTicker); // 获取 Tick 数据
var spread = ticker.Sell - ticker.Buy; // 获取 Tick 数据的买卖价差
// 账户余额与当前持仓价值的差值的 0.5倍
var diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2;
var ratio = diffAsset / acc.Balance; // diffAsset / 账户余额
LogStatus('ratio:', ratio, _D()); // 打印 ratio和当前时间
if (Math.abs(ratio) < threshold) { // 如果 ratio的绝对值小于指定阈值
return false; // 返回 false
}
if (ratio > 0) { // 如果 ratio大于 0
var buyPrice = _N(ticker.Sell + spread, ZPrecision); // 计算下单价格
var buyAmount = _N(diffAsset / buyPrice, XPrecision); // 计算下单量
if (buyAmount < MinStock) { // 如果下单量小于最小交易量
return false; // 返回 false
}
exchange.Buy(buyPrice, buyAmount, diffAsset, ratio); // 买入下单
} else {
var sellPrice = _N(ticker.Buy - spread, ZPrecision); // 计算下单价格
var sellAmount = _N(-diffAsset / sellPrice, XPrecision); // 计算下单量
if (sellAmount < MinStock) { // 如果下单量小于最小交易量
return false; // 返回 false
}
exchange.Sell(sellPrice, sellAmount, diffAsset, ratio); // 卖出下单
}
return true; // 返回 true
}
// 主函数
function main() {
// 过滤非重要信息
SetErrorFilter("GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout");
while (true) { // 轮询模式
if (onTick()) { // 执行 onTick 函数
CancelPendingOrders(); // 取消未成交的挂单
Log(_C(exchange.GetAccount)); // 打印当前账户信息
}
Sleep(LoopInterval * 1000); // 休眠
}
}
外部パラメータ
次は,この単純な動的バランス戦略をテストして,効果があるか見てみましょう. 以下は,BTCの歴史上のデータへのレビューで,参考にします.
環境を復元する
テスト結果
復習曲線
このグラフは,BTCの価格の動向を示しています
この回顧期間中,BTCは8ヶ月間も下落し,最大70%以上も下落しており,多くの投資家がブロックチェーン資産に対する信頼を失っている.この戦略は累積収益が160%に達し,年収リスク比は5以上である.このようなシンプルな投資戦略では,この投資の収益率は,ほとんどのハッパー群を上回っている.
策略のソースコードは,発明者の定量化ウェブサイトに公開されています.https://www.fmz.com/strategy/110545オンライン回線を直接設定する必要はありません.
このダイナミックバランス戦略は,ただ一つのコアパラメータである ("スリース値下げ) と,非常にシンプルな投資方法であり,過剰な利益ではなく,安定した利益を追求する. 傾向戦略とは異なり,ダイナミックバランス戦略は逆勢動的である. ダイナミックバランス戦略は,逆に,市場が熱いときに株を冷やし,市場が冷たいときに株を浮動させ,マクロ経済規制に似ています.
実際,ダイナミックバランス戦略は,価格の予測不可能な概念を堅持し,同時に価格変動を捉える手法の1つです. ダイナミックバランス戦略の重要な核心は,資産配置比率を設定し,調整し,値引きを誘発することです. 文章の理由から,一文では顔面で理解することはできません. ダイナミックバランス戦略の最も重要なことは,投資思想です.
この記事の締めくくりには,ベンジャミン・グラハムの著書"賢明な投資家の