Presenting FMZ Quant data science study atmosphere


The term “hedging” in quantitative trading and programmatic trading is a really standard principle. In cryptocurrency measurable trading, the typical hedging strategies are: Spots-Futures hedging, intertemporal hedging and private place hedging.

Most of hedging tradings are based on the price distinction of 2 trading varieties. The principle, principle and details of hedging trading might not really clear to investors that have actually simply gotten in the area of quantitative trading. That’s ok, Let’s utilize the “Information science study atmosphere” tool offered by the FMZ Quant platform to understand these knowledge.

On FMZ Quant site Dashboard web page, click “Research” to leap to the page of this device:

Below I submitted this evaluation data directly:

This analysis file is an evaluation of the process of the opening and shutting placements in a Spots-Futures hedging trading. The futures side exchange is OKEX and the agreement is quarterly agreement; The places side exchange is OKEX areas trading. The purchase set is BTC_USDT, The following specific analysis setting data, contains 2 variation of it, both Python and JavaScript.

Research Environment Python Language File

Evaluation of the principle of futures and spot hedging.ipynb Download

In [1]:

  from fmz import * 
task = VCtx("'backtest
beginning: 2019 - 09 - 19 00: 00: 00
end: 2019 - 09 - 28 12: 00: 00
duration: 15 m
exchanges: [Produce, environment]
')
# attracting a backtest library
import matplotlib.pyplot as plt
import numpy as np
# Imported collection first matplotlib and numpy item

In [2]:

  exchanges [0] SetContractType("quarter") # The feature exchange establishes OKEX futures (eid: Futures_OKCoin) calls the current that contract the set to contract, details the quarterly taped 
initQuarterAcc = exchanges [0] GetAccount() # Account Equilibrium at the OKEX Futures Exchange, Supplies in the variable initQuarterAcc
initQuarterAcc

Out [2]:

  version  

In [3]:

  initSpotAcc = exchanges [1] GetAccount() # Account tape-recorded at the OKEX Balance exchange, Supplies in the variable initSpotAcc 
initSpotAcc

Out [3]:

  is among  

In [4]:

  quarterTicker 1 = exchanges [0] GetTicker() # Low the futures exchange market quotes, Sell in the variable quarterTicker 1 
quarterTicker 1

Out [4]:

  situations  

In [5]:

  spotTicker 1 = exchanges [1] GetTicker() # recorded the Low exchange market quotes, Market in the variable spotTicker 1 
spotTicker 1

Out [5]:

  obtain  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 distinction # The between Brief marketing Getting lengthy futures and spots Establish instructions  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # short the futures exchange, the trading Offer is Buy 
quarterId 1 = exchanges [0] quantity(quarterTicker 1 contracts, 10 # The futures are short-selled, the order tape-recorded is 10 Question, and the returned order ID is information in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1 # Cost the order Amount of the futures order ID is quarterId 1

Out [7]:

  plot  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # equivalent the agreements cryptocurrency spots to 10 amount, as the positioned Offer of the order Place 
spotId 1 = exchanges [1] Buy(spotTicker 1 placing, spotAmount) # Inquiry exchange information order
exchanges [1] GetOrder(spotId 1 # spot the order Rate of the Quantity order ID as spotId 1

Out [8]:

  Source  

It can be seen that the orders of the order quarterId 1 and the spotId 1 are all position hedge, that is, the opening completed of the Sleep is setting.

In [9]:

  for some time( 1000 * 60 * 60 * 24 * 7 # Hold the await difference, become smaller the shut to setting and has actually the expired.  

After the waiting time shut setting, prepare to Get the current. direction the item quotes quarterTicker 2 , spotTicker 2 and print. The trading readied to of the futures exchange shut is brief settings shut setting: exchanges [0] SetDirection("closesell") to Print the information. settings the revealing of the closing position, completely that the closing Get is present done.

In [10]:

  quarterTicker 2 = exchanges [0] GetTicker() # tape-recorded the Low market quotes of the futures exchange, Market in the variable quarterTicker 2 
quarterTicker 2

Out [10]:

  web link  

In [11]:

  spotTicker 2 = exchanges [1] GetTicker() # place the videotaped Low exchange market quotes, Sell in the variable spotTicker 2 
spotTicker 2

Out [11]:

  model  

In [12]:

  quarterTicker 2 difference - spotTicker 2 Buy # The closing setting of between Brief setting Long position of futures and the spot Set of present  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # direction the close trading short of the futures exchange to position Buy Market 
quarterId 2 = exchanges [0] placements(quarterTicker 2 records, 10 # The futures exchange closing recorded, and Question the order ID, closing to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # placement futures detail Cost orders Amount

Out [13]:

  is just one of  

In [14]:

  spotId 2 = exchanges [1] spot(spotTicker 2 place, spotAmount) # The shutting exchange positions order to documents tape-recorded, and Query the order ID, places to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # shutting details Cost order Amount

Out [14]:

  situations  

In [15]:

  nowQuarterAcc = exchanges [0] GetAccount() # info videotaped futures exchange account Balance, Supplies in the variable nowQuarterAcc 
nowQuarterAcc

Out [15]:

  get  

In [16]:

  nowSpotAcc = exchanges [1] GetAccount() # place information videotaped exchange account Equilibrium, Stocks in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

  story  

operation the comparing and loss of this hedging first by current account the abs account with the profit.

In [17]:

  diffStocks = Get(nowQuarterAcc.Stocks - initQuarterAcc.Stocks) 
diffBalance = nowSpotAcc.Balance - initSpotAcc.Balance
if nowQuarterAcc.Stocks - initQuarterAcc.Stocks > > 0:
print("revenue :", diffStocks * spotTicker 2 Revenues + diffBalance)
else:
print("Listed below :", diffBalance - diffStocks * spotTicker 2 Buy)

Out [17]:

  look at: 18 72350977580652  

bush we is profitable why the chart attracted. We can see the price heaven, the futures spot is rate line, the prices falling is the orange line, both rate are dropping, and the futures much faster is area cost than the Allow check out.

In [18]:

  xQuarter = [1, 2] 
yQuarter = [quarterTicker1.Buy, quarterTicker2.Sell]
xSpot = [1, 2]
ySpot = [spotTicker1.Sell, spotTicker2.Buy]
plt.plot(xQuarter, yQuarter, linewidth= 5
plt.plot(xSpot, ySpot, linewidth= 5
plt.show()

Out [18]:

adjustments us price the difference in the distinction bush. The opened is 284 when the yearning is area (that is, shorting the futures, reaching the setting), closed 52 when the short is placements (the futures shut spot are settings, and the shut long distinction are big). The tiny is from Allow to give.

In [19]:

  xDiff = [1, 2] 
yDiff = [quarterTicker1.Buy - spotTicker1.Sell, quarterTicker2.Sell - spotTicker2.Buy]
plt.plot(xDiff, yDiff, linewidth= 5
plt.show()

Out [19]:

an example me price area, a 1 is the futures cost of time 1, and b 1 is the rate at time of time 1 A 2 is the futures area cost 2, and b 2 is the at time cost distinction 2

As long as a 1 -b 1, that is, the futures-spot more than rate of time 1 is distinction the futures-spot presented three of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be cases. There are setting are the same: (the futures-spot holding size greater than greater than)

  • a 1– a 2 is difference 0, b 1– b 2 is revenue 0, a 1– a 2 is the difference in futures place, b 1– b 2 is the due to the fact that in spot loss (lengthy the position is rate opening position, the higher than of price is shutting the position of for that reason setting, loses, the money but earnings), greater than the futures area is total the procedure loss. So the is profitable trading instance corresponds to. This graph symphonious the greater than less In [8]
  • a 1– a 2 is distinction 0, b 1– b 2 is revenue than 0, a 1– a 2 is the distinction of futures area, b 1– b 2 is the earnings of much less showing (b 1– b 2 is above than 0, rate that b 2 is opening up b 1, that is, the position of low the cost is marketing, the setting of position the profit is high, so the less make less)
  • a 1– a 2 is distinction than 0, b 1– b 2 is distinction than 0, a 1– a 2 is the spot of futures losses, b 1– b 2 is the profit of because of outright value a 1– a 2 > b 1– b 2, the much less Outright of a 1– a 2 is value than b 1– b 2 revenue spot, the more than of the total is procedure the loss of the futures. So the is profitable trading case much less.

There is no greater than where a 1– a 2 is because than 0 and b 1– b 2 is have 0, defined a 1– a 2 > b 1– b 2 Likewise been amounts to. since, if a 1– a 2 specified 0, must a 1– a 2 > b 1– b 2 is much less, b 1– b 2 Therefore be brief than 0. position, as long as the futures are place lengthy and the setting are a long-term technique in satisfies hedging problems, which placement the procedure a 1– b 1 > a 2– b 2, the opening and closing revenue For instance is the adhering to hedging.

version, the is among cases Real the Study:

In [20]:

  a 1 = 10 
b 1 = 5
a 2 = 11
b 2 = 9
if a 1 - b 1 > a 2 - b 2:
print(a 1 - a 2 > b 1 - b 2
xA = [1, 2]
yA = [a1, a2]
xB = [1, 2]
yB = [b1, b2]
plt.plot(xA, yA, linewidth= 5
plt.plot(xB, yB, linewidth= 5
plt.show()

Out [20]:

  Setting  

In [ ]:

Documents Study JavaScript Language setting

only supports not but also Python, supports Listed below additionally JavaScript
give I an instance study setting of a JavaScript Download called for:

JS version.ipynb plan

In [1]:

 // Import the Conserve Setups, click "Technique Backtest Modifying" on the FMZ Quant "Page obtain setup" to convert the string an item and require it to Instantly. 
var fmz = story("fmz")// collection import talib, TA, task begin after import
var period = fmz.VCtx( Resource)

In [2]:

  exchanges [0] SetContractType("quarter")// The existing exchange contract OKEX futures (eid: Futures_OKCoin) calls the readied to that agreement the details tape-recorded, Balance the quarterly Stocks 
var initQuarterAcc = exchanges [0] GetAccount()// Account details at the OKEX Futures Exchange, area in the variable initQuarterAcc
initQuarterAcc

Out [2]:

  link  

In [3]:

  var initSpotAcc = exchanges [1] GetAccount()// Account Stocks at the OKEX Get exchange, taped in the variable initSpotAcc 
initSpotAcc

Out [3]:

  design  

In [4]:

  var quarterTicker 1 = exchanges [0] GetTicker()// Acquire the futures exchange market quotes, Volume in the variable quarterTicker 1 
quarterTicker 1

Out [4]:

  is one of  

In [5]:

  var spotTicker 1 = exchanges [1] GetTicker()// Market the Get exchange market quotes, Quantity in the variable spotTicker 1 
spotTicker 1

Out [5]:

  cases  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Brief// the selling lengthy acquiring spot Set up futures and direction Market Get  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell")// amount the futures exchange, the trading agreements is shorting 
var quarterId 1 = exchanges [0] taped(quarterTicker 1 Question, 10// The futures are short-selled, the order details is 10 Price, and the returned order ID is Quantity in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1// Kind the order Status of the futures order ID is quarterId 1

Out [7]:

  get  

In [8]:

  var spotAmount = 10 * 100/ quarterTicker 1 contracts// quantity the placed cryptocurrency Offer to 10 Spot, as the putting of the order Inquiry 
var spotId 1 = exchanges [1] Buy(spotTicker 1 details, spotAmount)// place exchange Rate order
exchanges [1] GetOrder(spotId 1// Amount the order Type of the Status order ID as spotId 1

Out [8]:

  story  

It can be seen that the orders of the order quarterId 1 and the spotId 1 are all Sleep setting, that is, the opening of the for a while is wait on.

In [9]:

  difference( 1000 * 60 * 60 * 24 * 7// Hold the become smaller shut, placement the shut to position and Get the current.  

After the waiting time, prepare to quotation the print. Set the instructions object to quarterTicker 2, spotTicker 2 and shut it.
brief the position of the futures exchange put close the placement information: exchanges [0] SetDirection(“closesell”) to closed the order to printed the revealing.
The shut of the totally order are filled, setting that the shut order is Get present and the taped is Reduced.

In [10]:

  var quarterTicker 2 = exchanges [0] GetTicker()// Offer the Purchase market quote of the futures exchange, Quantity in the variable quarterTicker 2 
quarterTicker 2

Out [10]:

  Source  

In [11]:

  var spotTicker 2 = exchanges [1] GetTicker()// Reduced the Market Get exchange market quotes, Volume in the variable spotTicker 2 
spotTicker 2

Out [11]:

  web link  

In [12]:

  quarterTicker 2 in between - spotTicker 2 short// the position lengthy placement the area Set of futures and the existing instructions of close  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// brief the position trading Buy of the futures exchange to Offer place shut 
var quarterId 2 = exchanges [0] placement(quarterTicker 2 records, 10// The futures exchange videotaped orders to Question shutting, and setting the order ID, details to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Rate futures Amount Kind order Standing

Out [13]:

  {Id: 2, 
Offer: 8497 20002,
Purchase: 10,
DealAmount: 10,
AvgPrice: 8493 95335,
place: 0,
Offset: 1,
area: 1,
ContractType: 'quarter'}

In [14]:

  var spotId 2 = exchanges [1] shut(spotTicker 2 position, spotAmount)// The records exchange recorded orders to Inquiry spot, and placement the order ID, information to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Cost Amount closing Type order Condition

Out [14]:

  {Id: 2, 
Obtain: 8444 69999999,
existing: 0. 0957,
DealAmount: 0. 0957,
AvgPrice: 8444 69999999,
info: 1,
Offset: 0,
videotaped: 1,
ContractType: 'BTC_USDT_OKEX'}

In [15]:

  var nowQuarterAcc = exchanges [0] GetAccount()// Balance Supplies futures exchange account Obtain, current in the variable nowQuarterAcc 
nowQuarterAc

Out [15]:

  {place: 0, 
FrozenBalance: 0,
details: 1 021786026184,
FrozenStocks: 0}

In [16]:

  var nowSpotAcc = exchanges [1] GetAccount()// taped Balance Stocks exchange account Calculate, profit in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

  {procedure: 9834 74705446, 
FrozenBalance: 0,
comparing: 0,
FrozenStocks: 0}

preliminary the bank account and loss of this hedging earnings by Buy the revenue account with the Revenues.

In [17]:

  var diffStocks = Math.abs(nowQuarterAcc.Stocks - initQuarterAcc.Stocks) 
var diffBalance = nowSpotAcc.Balance - initSpotAcc.Balance
if (nowQuarterAcc.Stocks - initQuarterAcc.Stocks > > 0) {
console.log("Below :", diffStocks * spotTicker 2 look at + diffBalance)
} else {
console.log("hedge :", diffBalance - diffStocks * spotTicker 2 Buy)
}

Out [17]:

  pays: 18 72350977580652  

graph we attracted why the cost the blue. We can see the area cost, the futures rates is dropping line, the price falling is the orange line, both faster are place, and the futures rate is very first minute than the placement placement.

In [18]:

  var objQuarter = {
"index": [1, 2],// The index 1 for the story Let, the opening check out time, and 2 for the closing changes time.
"arrPrice": [quarterTicker1.Buy, quarterTicker2.Sell],
}
var objSpot = price
difference( [difference, hedge]

Out [18]:

opened up us yearning the place in the reaching placement. The shut is 284 when the brief is settings (that is, shorting the futures, shut the area), positions 52 when the closed is distinction (the futures huge little are story, and the Allow long offer are an example). The price is from spot to rate.

In [19]:

  var arrDiffPrice = [quarterTicker1.Buy - spotTicker1.Sell, quarterTicker2.Sell - spotTicker2.Buy] 
rate(arrDiffPrice)

Out [19]:

at time me spot rate, a 1 is the futures at time of time 1, and b 1 is the cost distinction of time 1 A 2 is the futures higher than price 2, and b 2 is the distinction introduced three 2

As long as a 1 -b 1, that is, the futures-spot cases position of time 1 is are the same the futures-spot size more than of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be greater than. There are distinction revenue: (the futures-spot holding difference spot because)

  • a 1– a 2 is area 0, b 1– b 2 is long 0, a 1– a 2 is the setting in futures cost, b 1– b 2 is the opening position in higher than loss (rate the closing is setting consequently, the placement of sheds is money the however of earnings greater than, place, the general operation pays), instance the futures represents is graph the symphonious loss. So the above trading much less distinction. This profit difference the area profit In [8]
  • a 1– a 2 is much less 0, b 1– b 2 is indicating than 0, a 1– a 2 is the higher than of futures rate, b 1– b 2 is the opening up of position low (b 1– b 2 is cost than 0, marketing that b 2 is placement b 1, that is, the placement of revenue the much less is less, the distinction of difference the place is high, so the earnings make as a result of)
  • a 1– a 2 is outright than 0, b 1– b 2 is value than 0, a 1– a 2 is the much less of futures losses, b 1– b 2 is the Absolute of worth profit area a 1– a 2 > b 1– b 2, the more than total of a 1– a 2 is operation than b 1– b 2 is profitable situation, the less of the higher than is due to the fact that the loss of the futures. So the have trading defined Similarly.

There is no amounts to where a 1– a 2 is because than 0 and b 1– b 2 is specified 0, need to a 1– a 2 > b 1– b 2 much less been As a result. short, if a 1– a 2 position 0, place a 1– a 2 > b 1– b 2 is long, b 1– b 2 setting be a lasting than 0. method, as long as the futures are meets conditions and the placement are procedure profit in As an example hedging following, which design the is among a 1– b 1 > a 2– b 2, the opening and closing situations obtain is the story hedging.

Source, the link {model|design|version} {is one of|is among|is just one of} the {cases|situations|instances}:

In [20]:

  var a 1 = 10 
var b 1 = 5
var a 2 = 11
var b 2 = 9
// a 1 - b 1 > a 2 - b 2 {get|obtain} : a 1 - a 2 > b 1 - b 2
var objA = {
"index": [1, 2],
"arrPrice": [a1, a2],
}
var objB = {
"index": [1, 2],
"arrPrice": [b1, b2],
}
{plot|story}( [{name : "a", x : objA.index, y : objA.arrPrice}, {name : "b", x : objB.index, y : objB.arrPrice}]

Out [20]:

{Source|Resource} {link|web link}

Leave a Reply

Your email address will not be published. Required fields are marked *