
وارن بفیٹ کے سرپرست بینجمن گراہم نے ایک بار اپنی کتاب “دی انٹیلیجنٹ انویسٹر” میں اسٹاک اور بانڈز کے درمیان متحرک توازن کے تجارتی ماڈل کا ذکر کیا۔
یہ تجارتی ماڈل بہت آسان ہے:
اس طریقہ کار میں، بانڈ فنڈز کی اتار چڑھاؤ دراصل بہت کم ہے، اسٹاک کی اتار چڑھاؤ سے بہت کم، اس لیے بانڈز کو یہاں “ریفرنس اینکر” کے طور پر استعمال کیا جاتا ہے، یعنی بانڈز کا استعمال اس بات کی پیمائش کرنے کے لیے کہ آیا اسٹاک میں بہت زیادہ اضافہ ہوا ہے۔ اب بھی بہت کم ہے.
اگر اسٹاک کی قیمت بڑھ جاتی ہے، تو اسٹاک کی مارکیٹ ویلیو بانڈ کی مارکیٹ ویلیو سے زیادہ ہوگی جب دونوں کی مارکیٹ ویلیو کا تناسب مقررہ حد سے بڑھ جائے گا، تو کل پوزیشن کو ایڈجسٹ کیا جائے گا، اسٹاک فروخت کیا جائے گا۔ اسٹاک بانڈ مارکیٹ ویلیو ریشو کو اصل 1:1 پر بحال کرنے کے لیے بانڈ خریدا جائے گا۔
اس کے برعکس، اگر سٹاک کی قیمت گرتی ہے، تو سٹاک کی مارکیٹ ویلیو بانڈ کی مارکیٹ ویلیو سے کم ہو جائے گی جب دونوں کی مارکیٹ ویلیو کا تناسب مقررہ حد سے زیادہ ہو جائے گا، تو کل پوزیشن کو سٹاک خریدنے کے لیے ایڈجسٹ کیا جائے گا۔ اسٹاک بانڈ مارکیٹ ویلیو ریشو کو اصل 1:1 پر بحال کرنے کے لیے بانڈز فروخت کریں۔

اس طرح، اسٹاک اور بانڈز کے درمیان تناسب کو متحرک طور پر متوازن کرکے، اسٹاک کی ترقی کے ثمرات سے لطف اندوز ہونا اور اثاثوں کے اتار چڑھاؤ کو کم کرنا ممکن ہے۔ قدر کی سرمایہ کاری کے علمبردار کے طور پر، گراہم ہمیں ایک اچھا خیال فراہم کرتا ہے۔ چونکہ یہ ایک مکمل حکمت عملی ہے، اس لیے ہم اسے کرپٹو کرنسیوں پر لاگو کیوں نہیں کرتے؟
Blockchain اثاثہ 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); // 休眠
}
}
پوری حکمت عملی کا فریم ورک اصل میں بہت آسان ہے، ایک مین فنکشن، ایک آن ٹِک آرڈر فنکشن، ایک کینسل پینڈنگ آرڈرز فنکشن، اور ضروری پیرامیٹرز کے ساتھ۔
// 下单函数
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 قیمت چارٹ ہے

بیکٹیسٹ مدت کے دوران، بی ٹی سی 8 ماہ تک گر رہا ہے، جس میں زیادہ سے زیادہ گراوٹ 70% سے تجاوز کر گئی ہے، جس کی وجہ سے بہت سے سرمایہ کاروں کا بلاک چین اثاثوں پر اعتماد ختم ہو گیا ہے۔ اس حکمت عملی کی مجموعی واپسی 160% تک زیادہ ہے، اور سالانہ واپسی کے خطرے کا تناسب 5 سے زیادہ ہے۔ اس طرح کی سادہ سرمایہ کاری کی حکمت عملی کے لیے، سرمایہ کاری پر یہ واپسی ان لوگوں کی اکثریت سے بڑھ گئی ہے جو سب کچھ حاصل کرتے ہیں۔
حکمت عملی کے ماخذ کوڈ کو Inventor Quantitative https://www.fmz.com/strategy/110545 کی سرکاری ویب سائٹ پر عام کر دیا گیا ہے، براہ راست آن لائن بیک ٹیسٹنگ کے لیے کسی ترتیب کی ضرورت نہیں ہے۔
اس متحرک توازن کی حکمت عملی میں صرف ایک بنیادی پیرامیٹر (تھریش ہولڈ) ہے، جو کہ سرمایہ کاری کا ایک بہت ہی آسان طریقہ ہے جو اضافی منافع کے بجائے مستحکم منافع حاصل کرتا ہے۔ رجحان کی حکمت عملی کے برعکس، متحرک توازن کی حکمت عملی رجحان کے خلاف جاتی ہے۔ متحرک توازن کی حکمت عملی اس کے بالکل برعکس ہے جب مارکیٹ گرم ہوتی ہے، تو آپ پوزیشنز کو کم کرتے ہیں اور جب مارکیٹ پرسکون ہوتی ہے، تو یہ کچھ حد تک میکرو اکنامک ریگولیشن سے ملتا جلتا ہے۔
درحقیقت، متحرک توازن کی حکمت عملی ایک ایسی مہارت ہے جو اس تصور پر قائم رہتی ہے کہ قیمتوں کے اتار چڑھاو کو پکڑتے ہوئے قیمتیں غیر متوقع ہیں۔ متحرک توازن کی حکمت عملی کی کلید اثاثہ مختص کرنے کے تناسب اور محرک کی حد کو ترتیب دینا اور ایڈجسٹ کرنا ہے۔ جگہ کی تنگی کی وجہ سے، مضمون کے لیے ہر چیز کا احاطہ کرنا ناممکن ہے، آپ کو یہ جاننا ہوگا کہ لفظوں سے آگے دل ہے۔ متحرک توازن کی حکمت عملی کے بارے میں سب سے اہم بات یہ ہے کہ آپ اس مضمون میں ایک BTC اثاثہ کو بلاکچین اثاثوں کی ٹوکری سے بھی بدل سکتے ہیں۔
آخر میں، ہم اس مضمون کو بینجمن گراہم کی کتاب The Intelligent Investor کے ایک مشہور اقتباس کے ساتھ ختم کرتے ہیں:سٹاک مارکیٹ ایک “ووٹنگ مشین” نہیں ہے جو قیمت کو درست طریقے سے ماپ سکتی ہے، بلکہ یہ ایک “ووٹ ڈالنے والی مشین” ہے جو کئی بار عقلیت اور جذبات کا مجموعہ ہوتی ہے۔ عقلی قدر کا فیصلہ سرمایہ کاری کا راز اس وقت سرمایہ کاری کرنا ہے جب قیمتیں اندرونی قدر سے بہت کم ہوں اور یقین کریں کہ مارکیٹ کا رجحان بحال ہو جائے گا۔ —— بینجمن گراہم، ذہین سرمایہ کار