原作: FMZ 量子www.fmz.com
定量的な取引の"本当の物"は,あなたが本当に利益を得ることができる場所です.
NO. 1
ウォーレン・バフェットのメンター ベンジャミン・グラハムは 『インテリジェント・投資家』という本で 株と債券が動的にバランスをとる 取引モデルについて言及しましたこの取引モデルはとてもシンプルです
持てる資金の50%は株式基金に 投資され 残りの50%は債券基金に 投資されます つまり 株式と債券はそれぞれ半分を占めています
固定間隔や市場の変化に基づく資産ポジション再バランスでは,株式資産と債券資産の比率が最初の1:1に戻ります.
購入・販売のタイミングや 購入・販売の金額などです. とてもシンプルで効果的です.
NO.2
この方法では,債券ファンドの変動は実際に株式変動よりもはるかに低く,非常に小さいので,ここに債券は"参照アンカー"として使用されます.つまり,債券を使用して,株があまりにも多く,またはあまりにも少なく上昇しているかどうかを測定します.
株価が上昇すると,株価の市場価値は債券の市場価値よりも大きくなる.この2つの市場価値比が限界値を超えると,総ポジションは再調整され,株価が売却され,債券が購入され,株価と債券価値比が初期1:1に戻る.
株価が下がると,株価の市場価値は債券の市場価値より低くなります.この2つの市場価値比が限界値を超えると,総ポジションは再調整され,株式は購入され,債券は売却され,債券価値と株式価値の市場資本比が初期1:1に戻ります.価値投資の先駆者として,グラハムは素晴らしいアイデアを提示しました. 価値投資の先駆者として,グラハムは,価値投資の先駆者として,価値投資の先駆者として,価値投資の先駆者として,価値投資の先駆者として,価値投資の先駆者として,価値投資の先駆者として,
仮想通貨市場でも使わないのか?
NO.3
ブロックチェーンの資産 動的バランス戦略 BTC
戦略の論理
BTCの現在の価値によると,口座残高は6400ドル現金と1BTCで保持されています. つまり,BTCの市場価値に対する現金の初期比率は1:1です.
BTCの価格が7400ドルに上昇すると,つまりBTCの市場価値が口座残高よりも高く,その間の差が設定された
BTCの価格が5400ドルに下がり,つまり BTCの市場価値が口座残高よりも低く,両者の差が設定された限界を超えると, (6400-5400) / 5400/2コインを購入します. BTCが減価し,BTCを買い戻す必要があります.
この方法により,BTCが値上げされるか減価されるかに関わらず,口座残高とBTCの市場価値は常に動的に等しく保たれます.BTCが値下げされた場合,一部を購入し,バランススケールと同様に再び上昇すると売却します.
NO.4
プログラミングコードでそれを実装するにはどうすればいいですか?
まず,戦略的枠組みを見てみましょう.
// strategy parameter
var threshold = 0.05; // Threshold
var LoopInterval = 60; // Polling interval(seconds)
var MinStock = 0.001; // Minimum transaction volume
var XPrecision = 4; // Quantity accuracy
var ZPrecision = 8; // Price accuracy
// Withdrawal order function
function CancelPendingOrders() {
}
// Placing Order function
function onTick() {
}
// Main function
function main() {
// Filter non-critical information
SetErrorFilter("GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout");
while (true) { // Polling mode
if (onTick()) { // Execute the onTick function
CancelPendingOrders(); // Cancel unexecuted pending orders
}
Sleep(LoopInterval * 1000); // Sleep
}
}
戦略の枠組み全体が非常にシンプルで,
NO.5
オーダーモジュール
// Placing Order function
function onTick() {
var acc = _C(exchange.GetAccount); // Get account information
var ticker = _C(exchange.GetTicker); // Get Tick data
var spread = ticker.Sell - ticker.Buy; // Get the bid-ask spread of Tick data
// 0.5 times the difference between the account balance and the current position value
var diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2;
var ratio = diffAsset / acc.Balance; // diffAsset / Account Balance
LogStatus('ratio:', ratio, _D()); // Print ratio and current time
if (Math.abs(ratio) < threshold) { // If the absolute value of ratio is less than the specified threshold
return false; // return false
}
if (ratio > 0) { // If ratio is greater than 0
var buyPrice = _N(ticker.Sell + spread, ZPrecision); // Calculate the order price
var buyAmount = _N(diffAsset / buyPrice, XPrecision); // Calculate the order quantity
if (buyAmount < MinStock) { // If the order quantity is less than the minimum transaction volume
return false; // return false
}
exchange.Buy(buyPrice, buyAmount, diffAsset, ratio); // Buy order
} else {
var sellPrice = _N(ticker.Buy - spread, ZPrecision); // Calculate the order price
var sellAmount = _N(-diffAsset / sellPrice, XPrecision); // Calculate the order quantity
if (sellAmount < MinStock) { // If the order quantity is less than the minimum transaction volume
return false; // return false
}
exchange.Sell(sellPrice, sellAmount, diffAsset, ratio); // Sell order
}
return true; // return true
}
注文トランザクションの論理は明確で,すべてのコメントがコードに書かれています. 拡大するには画像をクリックできます.
主なプロセスは次のとおりです
口座情報を入手する
ティックのデータを取れ
Tick のデータで,Bid/Ask の差を計算する.
口座残高とBTC市場価値の差を計算する.
取引のトリガー条件,注文価格,注文量を計算する.
注文して返品する
NO.6
待機中の注文モジュールをキャンセル
// Withdrawal order function
function CancelPendingOrders() {
Sleep(1000); // Sleep 1 second
var ret = false;
while (true) {
var orders = null;
// Continue to get an array of unexecuted orders, if an exception is returned, continue to get
while (!(orders = exchange.GetOrders())) {
Sleep(1000); // Sleep 1 second
}
if (orders.length == 0) { // If the order array is empty
return ret; // Return to withdrawal status
}
for (var j = 0; j < orders.length; j++) { // Traversing the array of unexecuted orders
exchange.CancelOrder(orders[j].Id); // Cancel unexecuted orders one by one
ret = true;
if (j < (orders.length - 1)) {
Sleep(1000); // Sleep 1 second
}
}
}
}
キャンセル待機注文モジュールはさらにシンプルで,手順は以下のとおりです:
注文を撤回する前に1秒待って下さい,なぜなら,一部の取引所にはサーバーの遅延があるかもしれません.
実行されていない命令の配列を取得し,例外が返される場合は,成功するまで試し続けます.
実行されていないオーダー配列が空いている場合,すぐに引き取り状態を返します.
実行されていないオーダーがある場合は,配列全体を横断し,オーダーIDに従ってオーダーを取り消します.
NO.7
この戦略は,すべてのプログラミングソースコードです FMZの定量取引プラットフォームで 80行のコードで, 完全なブロックチェーンBTCダイナミックバランス戦略が成功裏に構築されました. しかし,これほど単純な戦略,何か価値がありますか?
NO.8
次に,この単純なダイナミックバランス戦略をテストして,それが有効かどうかを確認しましょう. 以下は,BTCの歴史的なデータに対するバックテストです.
バックテスト環境バックテスト性能バックテスト曲線同じ期間のBTC価格グラフですショックを受けたか?
BTCは8ヶ月間下落を続け 最大の下落でも70%を超え 多くの投資家がブロックチェーン資産への信頼を失いました
この戦略の累積収益は160%にも上り,年収のリターン・トゥ・リスク比は5を超えています. このような単純な取引戦略では,この投資収益は"All-in"タイプのプレイヤーの大半を超えています.
NO.9
このバランス戦略は,一つの基本パラメーター (限界値) を持つもので,非常にシンプルな投資方法であり,過剰な収益ではなく,安定した利益を追求します.
トレンド戦略とは異なり,ダイナミックバランス戦略はトレンドに反する.この戦略は,市場が熱すぎるとポジションを減らして冷却することです.市場が荒れ果てると,それは隠されます.これはマクロ経済規制に似ている.
実際,動的バランス戦略は,価格が予測不能であり,同時に価格変動を把握するという考えに基づいています.動的バランス戦略の主要な核心は,資産配分比と引き金
記事の長さを考えると,記事がすべてについて包括的なものになるのは不可能です. 昔の
株式市場は,価値を正確に測定する"計測器"ではない.その反対に,それは"投票機"である.数え切れないほどの人々が行う決定は理性的で感情的なドーパントである.これらの選択が行われる時もたくさんある.それは理性の価値判断とは遠い.投資の秘訣は,価格が本質的な価値よりもはるかに低いときに投資し,市場の傾向が上昇すると信じることです.
ソースコードを直接コピーするには:https://www.fmz.com/strategy/110900
勉強したり ダウンロードしたり レンタルしたり 購入したりできます
NO.10
私達について
このウェブサイトを運営する理由は,現行の状況を変えることであり,この世界には"本当の物"が不足しており,詐欺が多く,コミュニケーションがほとんど深くない.より純粋な量的な取引学習とコミュニケーションプラットフォームを作成することです.詳細については,当社のウェブサイトをご覧ください (www.fmz.com)
この記事が役に立ったと感じたら,友達に転送して応援してください. 共有することも知恵の種です!
連絡してください
テレグラム: FMZ Quant
メール:henry@fmz.com
ウェブサイト:www.fmz.com