Author

Topic: [GLBSE] POLY - Persistent BTC/USD margin trading emulation (Read 6225 times)

hero member
Activity: 756
Merit: 522
donator
Activity: 2772
Merit: 1019
All POLY bonds have been recalled*. The Mtgox last price at the time was 10.92630 BTC; 428 POLY.10.1 bonds were bought back for 1.2*(10.92630/10) = 1.311156 BTC each for a total of 561.174768 BTC, and there were no outstanding POLY.10.-2 bonds. POLY is discontinued until further notice.

I still believe POLY is a viable model for a much-needed instrument and this was not an easy decision. Some of the contributing factors were:
1. Making POLY successful would require more work than I am currently able to allocate to it. This is exacerbated by the fact that GLBSE is lacking some of the features that could have made it easier.
2. The demand was mostly for the long bonds, which shorten my position; I had a need for this when I started, but I currently do not.
3. Due to various recent events I want to minimize my liabilities.

Thanks to investors and other supporters.


* (except for one account with 28 bonds which had a problem and Nefario says he's working on it.)

allright, sad to hear but understandable.

I really liked the model and would've loved to see the higher-order bonds ("go longlonglong!") at some point.

be sure to revive this thread when you revive the idea and thanks for your work on this.
donator
Activity: 2058
Merit: 1054
All POLY bonds have been recalled*. The Mtgox last price at the time was 10.92630 BTC; 428 POLY.10.1 bonds were bought back for 1.2*(10.92630/10) = 1.311156 BTC each for a total of 561.174768 BTC, and there were no outstanding POLY.10.-2 bonds. POLY is discontinued until further notice.

I still believe POLY is a viable model for a much-needed instrument and this was not an easy decision. Some of the contributing factors were:
1. Making POLY successful would require more work than I am currently able to allocate to it. This is exacerbated by the fact that GLBSE is lacking some of the features that could have made it easier.
2. The demand was mostly for the long bonds, which shorten my position; I had a need for this when I started, but I currently do not.
3. Due to various recent events I want to minimize my liabilities.

Thanks to investors and other supporters.


* (except for one account with 28 bonds which had a problem and Nefario says he's working on it.)
newbie
Activity: 28
Merit: 0
Great asset.

Would buy again.
donator
Activity: 2058
Merit: 1054
Bot is back up. Due to the higher demand for the long bonds, POLY.10.1 is sold at 110% face value and bought at 106%, while POLY.10.-2 is sold at 104% face value and bought at 100%.

Update Aug 5 2012: Since there's not much trading activity anyway, to minimize overhead I've deactivated the bot. If you wish to buy or sell at the above prices contact me and I'll activate it.

Update Aug 22 2012: Bot is up buying POLY.10.1 at 106%. Live reserve is limited so PM me if you want to make a large sell. Other actions are not supported.
donator
Activity: 2058
Merit: 1054
I have issued some more POLY.10.1 bonds and am now also offering bonds for shorting BTC, POLY.10.-2. Each of these bonds are targeted to have a total of 400 BTC outstanding face value.

UPDATE 27 Jul 2012: My GLBSE bot is acting funny, I think it may have something to do with their server migration. I'll look at it more closely next week, for now I've disabled the orders. While there are no automated bids, contact me if you want to exercise your right to sell the bonds.
donator
Activity: 2058
Merit: 1054
I have issued a few more POLY.10.1 bonds. The bot will now put bonds up to sale (at 107% face value) as long as the total outstanding bonds have face value less than 200 BTC. This is subject to change.
donator
Activity: 2772
Merit: 1019
POLY.10.1 is now offered at 107% of face value. There's a bot that updates prices every 2 minutes.
that was fast!
The bot is fairly simple for now (mostly just upholding my contractual duty to buy bonds at face value), didn't take long to develop, just had to wait for me to come back home from miluim.

So the bot should be buying/selling? I see no asks.
Yes. That's because they're all sold out Smiley. If someone sells to it it will put (some of) them back up for sale.

damn those greedy bastards Wink
donator
Activity: 2058
Merit: 1054
POLY.10.1 is now offered at 107% of face value. There's a bot that updates prices every 2 minutes.
that was fast!
The bot is fairly simple for now (mostly just upholding my contractual duty to buy bonds at face value), didn't take long to develop, just had to wait for me to come back home from miluim.

So the bot should be buying/selling? I see no asks.
Yes. That's because they're all sold out Smiley. If someone sells to it it will put (some of) them back up for sale.

It seems the bot is only selling for now and the quantity so far was limited and reached.
It's buying too, but to do that somebody has to sell Wink.
donator
Activity: 2772
Merit: 1019
It seems the bot is only selling for now and the quantity so far was limited and reached.

too bad ;|
hero member
Activity: 609
Merit: 501
peace
It seems the bot is only selling for now and the quantity so far was limited and reached.
donator
Activity: 2772
Merit: 1019
POLY.10.1 is now offered at 107% of face value. There's a bot that updates prices every 2 minutes.

that was fast!

So the bot should be buying/selling? I see no asks.
donator
Activity: 2058
Merit: 1054
POLY.10.1 is now offered at 107% of face value. There's a bot that updates prices every 2 minutes.
donator
Activity: 848
Merit: 1005
How to decide the spread between the initial offering price and the face value is very interesting. It involves too many factors and I don't think any over-simplified pricing model will be useful. Starting small (200 POLY.10.1) and seeing what will happen is a good idea, but finally a reasonable pricing mechanism should be found, or it will always be highly speculative and risky for you.
donator
Activity: 2058
Merit: 1054
The IPO is scheduled for June 14 2012, but bonds will start selling only after the necessary preparations are made.

Due to limitations in the characters allowed in a GLBSE ticker, the bonds are renamed to POLY.10.n.
donator
Activity: 2058
Merit: 1054
For the less mathematically imaginative, I made a little google spreadsheet "simulation"

You can enter the current exchange rate, amount of BTC to invest and which N to invest in (the yellow fields) and see what happens for price moves.
Great, this can be handy.

(you need to make a copy of the spreadsheet to be able to edit using "File -> Make a Copy...")
It seems this option is disabled for outsiders. "Download as" works but is a bit difficult because Google uses a different function name for POW than Excel/OO.

If you could either change the privileges, or add another sheet with -1, it would be good.
Hm, the next priviledge level would be "allow edit by anyone who has the link", which I don't want to do.

What do you mean by "add another sheet with -1" ?
I should have said 1, and I was talking about N - have one sheet with N=(-2) and one sheet with N=1.

Can someone sanity-check it?
Looks good. It's important to clarify that all USD profits given are assuming that the alternative is to keep USD. This is made somewhat confusing by the fact that the field to enter is "BTC to invest".

true. there's 2 kinds of users: those who "think" in USD and invest USD and those who think/invest in BTC (and also want the gains in BTC).
I don't think it's 2 kinds of users but rather 2 mental modes that can be employed by the same user as is relevant to what he is trying to figure out at the time - as long as it's clear which is which. The trader doesn't need to physically buy or sell BTC for USD but he needs to know if a $10 profit means "$10 more than if he kept BTC" or "$10 more than if he kept USD".

Don't really know how to fix this. I put a text ("this assumes you sell the bonds and exchange the BTC for USD") above the "USD Value" and "USD Gain" columns. Does this clarify enough?
I'd do the following:

1. Put the text "Assuming the alternative is keeping USD" above "USD gain".
2. Not put anything above "USD value".
3. Put the text "Assuming the alternative is keeping BTC" above "BTC gain".
donator
Activity: 2772
Merit: 1019
What I'd need for now is something that runs every ~1 minute and does the following:

  • Cancel existing orders on GLBSE
  • Collect data on the number of outstanding bonds, the mtgox last price, and some parameters such as my desired position, my net worth, and price volatility.
  • Calculate the marginal value for me of each bond (I still need to work out some details with this).
  • Place bids on the bonds at a little below the value, and asks at a little above.
  • Alert me when my position becomes too unbalanced despite its efforts, so I can balance it by trading manually on Mt Gox, making CFD deals, or in the worst case, making a forced buyback of bonds.
  • Send me a daily summary of its status (number of outstanding bonds, position, account balance...)

For now it seems simple enough that it would be better to develop it on my own. Going forward I'll consider getting something more professional made.

Seems doable to me, however, I probably couldn't provide more professional quality than you can produce yourself.

Keep me in the back of your head if you like should you need any (non-professional) help going forward.
donator
Activity: 2772
Merit: 1019
For the less mathematically imaginative, I made a little google spreadsheet "simulation"

You can enter the current exchange rate, amount of BTC to invest and which N to invest in (the yellow fields) and see what happens for price moves.
Great, this can be handy.

(you need to make a copy of the spreadsheet to be able to edit using "File -> Make a Copy...")
It seems this option is disabled for outsiders. "Download as" works but is a bit difficult because Google uses a different function name for POW than Excel/OO.

If you could either change the privileges, or add another sheet with -1, it would be good.

Hm, the next priviledge level would be "allow edit by anyone who has the link", which I don't want to do.

What do you mean by "add another sheet with -1" ?

Can someone sanity-check it?
Looks good. It's important to clarify that all USD profits given are assuming that the alternative is to keep USD. This is made somewhat confusing by the fact that the field to enter is "BTC to invest".

true. there's 2 kinds of users: those who "think" in USD and invest USD and those who think/invest in BTC (and also want the gains in BTC).

Don't really know how to fix this. I put a text ("this assumes you sell the bonds and exchange the BTC for USD") above the "USD Value" and "USD Gain" columns. Does this clarify enough?

If you want I can give edit-control to you if you PM me your google id.
donator
Activity: 2058
Merit: 1054
Meni, I admire you: you got 2 things in one package that seldom come together: brains and balls. (the brains to think up such a scheme and the balls to actually offer it)
I have a consistent methodology for these things: Start small, see if it works, then expand. This way I can try out many different ideas without taking excessive risk.

Will you provide the market maker bot as well?
That's the plan. If someone else does a maker bot, I'll still need to operate a balance bot which will execute trades placed by the maker bot.

I think I could provide that using my python code (https://github.com/molecular/traidor)

what exactly would it have to do?

  • receive trade requests (amount, desired price, sell/buy)
  • place order with mtgox
  • observe order getting filled
  • give back info about executed trade request

?

and maybe also:

  • provide info about liquidity (market depth)?
  • provide info about volatility?
  • provide info about last trade price?
Based on your description it looks like more of an order placement assistant. What I'd need for now is something that runs every ~1 minute and does the following:

  • Cancel existing orders on GLBSE
  • Collect data on the number of outstanding bonds, the mtgox last price, and some parameters such as my desired position, my net worth, and price volatility.
  • Calculate the marginal value for me of each bond (I still need to work out some details with this).
  • Place bids on the bonds at a little below the value, and asks at a little above.
  • Alert me when my position becomes too unbalanced despite its efforts, so I can balance it by trading manually on Mt Gox, making CFD deals, or in the worst case, making a forced buyback of bonds.
  • Send me a daily summary of its status (number of outstanding bonds, position, account balance...)

For now it seems simple enough that it would be better to develop it on my own. Going forward I'll consider getting something more professional made.

For the less mathematically imaginative, I made a little google spreadsheet "simulation"

You can enter the current exchange rate, amount of BTC to invest and which N to invest in (the yellow fields) and see what happens for price moves.
Great, this can be handy.

(you need to make a copy of the spreadsheet to be able to edit using "File -> Make a Copy...")
It seems this option is disabled for outsiders. "Download as" works but is a bit difficult because Google uses a different function name for POW than Excel/OO.

If you could either change the privileges, or add another sheet with -1, it would be good.

Can someone sanity-check it?
Looks good. It's important to clarify that all USD profits given are assuming that the alternative is to keep USD. This is made somewhat confusing by the fact that the field to enter is "BTC to invest".

Quote
Calling. The issuer has the right to buy back the bonds
I don't understand how this works with glbse. Can the issuer forcibly buy back?
Yes, GLBSE has a forced buy back feature - The issuer specifies an amount per bond, this is paid to bondholders and all bonds move to the issuer's account. Very useful. I haven't tried it yet but i hope it works.

EDIT: Nebulous... will you just "virtually" buy back before the bond goes to negative value as in "liquidate"?
The bond face value is never negative. Any losses cause the investment to shrink, so this is equivalent to margin trading while always being on the allowed margin - any losses cause immediate forced liquidation in the amount required to cover them. This is unrelated to the calling clause.
donator
Activity: 2772
Merit: 1019
Quote
Calling. The issuer has the right to buy back the bonds

I don't understand how this works with glbse. Can the issuer forcibly buy back?

EDIT: Nebulous... will you just "virtually" buy back before the bond goes to negative value as in "liquidate"?
donator
Activity: 2772
Merit: 1019
For the less mathematically imaginative, I made a little google spreadsheet "simulation"

You can enter the current exchange rate, amount of BTC to invest and which N to invest in (the yellow fields) and see what happens for price moves.



https://docs.google.com/spreadsheet/ccc?key=0Au-mVSBh0PA4dExJcHM3aUhpT2ItZ3BFazZ1UlVnRlE

(you need to make a copy of the spreadsheet to be able to edit using "File -> Make a Copy...")

Can someone sanity-check it?
donator
Activity: 2772
Merit: 1019
Will you provide the market maker bot as well?
That's the plan. If someone else does a maker bot, I'll still need to operate a balance bot which will execute trades placed by the maker bot.

I think I could provide that using my python code (https://github.com/molecular/traidor)

what exactly would it have to do?

  • receive trade requests (amount, desired price, sell/buy)
  • place order with mtgox
  • observe order getting filled
  • give back info about executed trade request

?

and maybe also:

  • provide info about liquidity (market depth)?
  • provide info about volatility?
  • provide info about last trade price?
donator
Activity: 2772
Merit: 1019
intriguing!

Meni, I admire you: you got 2 things in one package that seldom come together: brains and balls. (the brains to think up such a scheme and the balls to actually offer it)

I just don't see yet how you can implement this... will read again and think...
donator
Activity: 2058
Merit: 1054
Is this the reason for the CFD you recently offered?
No, quite the opposite - ABSORB, forum trust-based CFDs, and POLY are all alternative ways for people to reach their desired position - both me and others - and I'm experimenting to see which one works best. I've started doing this because in general, if I'm bringing capital from the fiat world for Bitcoin investments I want to hedge the exchange rate. Though if POLY ends up scalable and profitable for me on its own, I might also use CFDs to balance the position resulting from it.
hero member
Activity: 518
Merit: 500
Is this the reason for the CFD you recently offered?
donator
Activity: 2058
Merit: 1054
Couldn't there as well be a limit price and/or knock out price to limit the risk ?
As I would imagine you have an idea of how far you are willing to stretch this.
I've thought about this and may add it, but currently I don't see a situation where this will be needed and still be fair to investors. Controlling my exposure will be done, if all else fails, by exercising the buyback clause.
hero member
Activity: 609
Merit: 501
peace
interesting thought process. Glad to see you are taking this a step further.
Couldn't there as well be a limit price and/or knock out price to limit the risk ?
As I would imagine you have an idea of how far you are willing to stretch this.
donator
Activity: 2058
Merit: 1054
Will you provide the market maker bot as well?
That's the plan. If someone else does a maker bot, I'll still need to operate a balance bot which will execute trades placed by the maker bot.

What would be a benefit for me as an external trader not associated with you to act as a market maker or would this only make sense for you if you are the market maker yourself?
Your benefit would be the same as in any other market - if the spread is high and the traded price oscillates between the bid and ask, you can buy low and sell high for profit. But for me a maker bot will be even more effective since it can double as a balance bot (and it will improve liquidity, making my offering more attractive).
legendary
Activity: 2618
Merit: 1007
Will you provide the market maker bot as well?

What would be a benefit for me as an external trader not associated with you to act as a market maker or would this only make sense for you if you are the market maker yourself?

donator
Activity: 2058
Merit: 1054
donator
Activity: 2058
Merit: 1054
tl; dr: Every POLY.10.n bond will have a face value of (X/10)^n BTC, where $X USD is the last trade price of BTC on Mt. Gox, and n is a value specific to the particular bond.

Introduction. This instrument emulates BTC/USD margin trading, acting as an alternative to margin trading platforms and as a substitute while they are inactive. Unlike the margin emulation asset ABSORB, POLY is persistent (in principle the same asset can be used indefinitely) and embodies a much clearer effective leverage, allowing traders to more easily control their position.

Operation. Specific bond offerings will include for example POLY.10.1 and POLY.10.-2. In general, every POLY.10.n will have a face value of (X/10)^n BTC, with $X being the last traded price of BTC on Mt. Gox. Bondholders have the right to sell the bonds back to the issuer at their face value.

Position equivalence. Holding 1 BTC worth of POLY.10.n bonds is locally equivalent to holding (n+1) BTC, in the sense that for small a, an increase of $a in the BTC exchange rate causes an increase of $a*(n+1) in the USD worth of the held bonds. Unlike normal margin trading, holding POLY bonds means profits are immediately reinvested in increasing the position, and losses are immediately liquidated and deduct from the position.

To see this, we first consider some trivial cases. POLY.10.0 bonds always have a face value of 1 BTC, and holding 1 BTC worth of the bonds (1 bond) is equivalent to holding 1 BTC. Investing in such bonds is uninteresting, since one may as well keep the bitcoin.

A POLY.10.-1 bond has a face value of (10/X) BTC, and since each BTC is worth $X, each bond is worth $10 regardless of the BTC price, and thus holding a bond is equivalent to holding no BTC at all. This again is uninteresting because one may as well sell the bitcoin for USD.

A POLY.10.1 bond has a face value of (X/10) BTC. 1 BTC gives you (10/X) such bonds, initially worth $X. If the exchange rate rises to $(X+a), the new face value of the bond is (X+a)/10 BTC, so the value of all (10/X) bonds is 1+a/X BTC, which at $(X+a) per BTC is worth $(X+a)(1+a/X) = $(X+2a+a^2/X) ~ $(X+2a), an increase of $2a, so the position implied by 1 BTC of bonds is indeed 2 BTC (so investing in such bonds is equivalent to taking a long position with 2:1 leverage). With the new price of $(X+a) per BTC, the held bonds are now worth 1+a/X BTC, so the position is now 2+2a/X BTC, meaning that the profits have been reinvested in an even longer position. If the trader wishes to maintain the same position, he will have to sell some excess bonds (or buy new bonds in case of loss).

More generally, a POLY.10.n bond has a face value of (X/10)^n BTC. 1 BTC gives you (10/X)^n such bonds, initially worth $X. If the exchange rate rises to $(X+a), the new face value of the bond is ((X+a)/10)^n BTC, so the value of all (10/X)^n bonds is (1+a/X)^n BTC, which at $(X+a) per BTC is worth $(X+a)(1+a/X)^n = $X(1+a/X)^(n+1) = $X(1+(n+1)a/X+O(a^2)) ~ $(X+(n+1)a), an increase of $(n+1)a.

In particular, holding 1 BTC worth of POLY.10.-2 bonds is equivalent to holding -1 BTC, so starting with USD, buying 1 BTC and using that to buy POLY.10.-2, is equivalent to short selling 1 BTC.

Calling. The issuer has the right to buy back the bonds, at a multiple of the face value which varies according to the specific bond. For POLY.10.1 and POLY.10.-2, the multiple will be 120%.

Termination. If the trade prices from Mt. Gox become terminally unreliable, such as if it ceases operations, the bonds will be bought back for their face value, determined by the agreed upon last meaningful trade price.

Challenges. Assuming, as is likely at this point, that the BTC exchange rate will eventually reach either arbitrarily high or arbitrarily low values, it is easy to see that by buying both a ^1 (long) and a ^(-2) (short) bond, the trader is guaranteed profit, meaning the issuer is guaranteed loss.

This is because of the trader's implicit right to to reinvest all profits in extending his position, regardless of the issuer's ability to hedge the position. Normal margin trading platforms have multiple ways to control this. They can simply refuse to extend the position; they can increase the fee; they can charge interest for taking an unfavorable position, and pay out interest for depositing funds they can use for hedging.

With the way the POLY contract is set up, none of this is possible. The issuer has only two mechanisms to handle this: Calling the bonds when the position becomes intolerable, which is expensive; and using the time value of money to compensate for the future losses. Since there is no way to control interest rates, the effectiveness of this is limited.

Since this is risky for the issuer, the offering price of the bonds will have to include compensation for it. The trader will have to weigh the advantages of an unlimited permission to extend his position (up to the issuer's right to call the bonds at a profit to the trader) against the higher price.

Even so, this is only sustainable with a market maker bot constantly balancing the issuer's position, and with enough trading activity to make sure that increases in the face value of a bond can be matched with traders looking to sell bonds.

Series details. As an initial proof of concept, 200 POLY.10.1 bonds will be offered. POLY.10.-2 should soon follow. The IPO is scheduled for June 14 2012, but bonds will start selling only after the necessary preparations are made.

In the future, higher-leveraged bonds might be offered, and additionally, if the price of BTC changes so that the value of each single bond becomes hard to work with, new series such as POLY.100.n may be offered.

Update: Currently POLY.10.1 and POLY.10.-2 are offered.

POLY.10.1: You can buy at 110%, sell at 106%, target is 400 BTC.
POLY.10.-2: You can buy at 104%, sell at 100%, target is 400 BTC.
Jump to: