Bitcoin Forum
December 09, 2016, 08:13:35 AM *
News: Latest stable version of Bitcoin Core: 0.13.1  [Torrent].
 
   Home   Help Search Donate Login Register  

Warning: Moderators do not remove likely scams. You must use your own brain: caveat emptor. Watch out for Ponzi schemes. Do not invest more than you can afford to lose.

Pages: [1] 2 »  All
  Print  
Author Topic: [GLBSE] POLY - Persistent BTC/USD margin trading emulation  (Read 5537 times)
Meni Rosenfeld
Donator
Legendary
*
Offline Offline

Activity: 1890



View Profile WWW
June 07, 2012, 03:27:42 PM
 #1

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.

1EofoZNBhWQ3kxfKnvWkhtMns4AivZArhr   |   Who am I?   |   bitcoin-otc WoT
Bitcoil - Exchange bitcoins for ILS (thread)   |   Israel Bitcoin community homepage (thread)
Analysis of Bitcoin Pooled Mining Reward Systems (thread, summary)  |   PureMining - Infinite-term, deterministic mining bond
1481271215
Hero Member
*
Offline Offline

Posts: 1481271215

View Profile Personal Message (Offline)

Ignore
1481271215
Reply with quote  #2

1481271215
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1481271215
Hero Member
*
Offline Offline

Posts: 1481271215

View Profile Personal Message (Offline)

Ignore
1481271215
Reply with quote  #2

1481271215
Report to moderator
1481271215
Hero Member
*
Offline Offline

Posts: 1481271215

View Profile Personal Message (Offline)

Ignore
1481271215
Reply with quote  #2

1481271215
Report to moderator
1481271215
Hero Member
*
Offline Offline

Posts: 1481271215

View Profile Personal Message (Offline)

Ignore
1481271215
Reply with quote  #2

1481271215
Report to moderator
Meni Rosenfeld
Donator
Legendary
*
Offline Offline

Activity: 1890



View Profile WWW
June 07, 2012, 03:31:58 PM
 #2

(reserved)

1EofoZNBhWQ3kxfKnvWkhtMns4AivZArhr   |   Who am I?   |   bitcoin-otc WoT
Bitcoil - Exchange bitcoins for ILS (thread)   |   Israel Bitcoin community homepage (thread)
Analysis of Bitcoin Pooled Mining Reward Systems (thread, summary)  |   PureMining - Infinite-term, deterministic mining bond
Sukrim
Legendary
*
Offline Offline

Activity: 1848


View Profile
June 07, 2012, 03:45:31 PM
 #3

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?


https://bitfinex.com <-- leveraged trading of BTCUSD, LTCUSD and LTCBTC (long and short) - 10% discount on fees for the first 30 days with this refcode: x5K9YtL3Zb
Mail me at Bitmessage: BM-BbiHiVv5qh858ULsyRDtpRrG9WjXN3xf
Meni Rosenfeld
Donator
Legendary
*
Offline Offline

Activity: 1890



View Profile WWW
June 07, 2012, 03:56:31 PM
 #4

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).

1EofoZNBhWQ3kxfKnvWkhtMns4AivZArhr   |   Who am I?   |   bitcoin-otc WoT
Bitcoil - Exchange bitcoins for ILS (thread)   |   Israel Bitcoin community homepage (thread)
Analysis of Bitcoin Pooled Mining Reward Systems (thread, summary)  |   PureMining - Infinite-term, deterministic mining bond
bitdragon
Hero Member
*****
Offline Offline

Activity: 610


peace


View Profile WWW
June 07, 2012, 04:43:44 PM
 #5

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.

Meni Rosenfeld
Donator
Legendary
*
Offline Offline

Activity: 1890



View Profile WWW
June 07, 2012, 05:18:03 PM
 #6

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.

1EofoZNBhWQ3kxfKnvWkhtMns4AivZArhr   |   Who am I?   |   bitcoin-otc WoT
Bitcoil - Exchange bitcoins for ILS (thread)   |   Israel Bitcoin community homepage (thread)
Analysis of Bitcoin Pooled Mining Reward Systems (thread, summary)  |   PureMining - Infinite-term, deterministic mining bond
brendio
Hero Member
*****
Offline Offline

Activity: 518


Firstbits: 1Brendio


View Profile
June 08, 2012, 01:29:44 AM
 #7

Is this the reason for the CFD you recently offered?

Meni Rosenfeld
Donator
Legendary
*
Offline Offline

Activity: 1890



View Profile WWW
June 08, 2012, 04:29:59 AM
 #8

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.

1EofoZNBhWQ3kxfKnvWkhtMns4AivZArhr   |   Who am I?   |   bitcoin-otc WoT
Bitcoil - Exchange bitcoins for ILS (thread)   |   Israel Bitcoin community homepage (thread)
Analysis of Bitcoin Pooled Mining Reward Systems (thread, summary)  |   PureMining - Infinite-term, deterministic mining bond
molecular
Donator
Legendary
*
Online Online

Activity: 2142



View Profile
June 08, 2012, 06:51:02 AM
 #9

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...

PGP key molecular F9B70769 fingerprint 9CDD C0D3 20F8 279F 6BE0  3F39 FC49 2362 F9B7 0769
molecular
Donator
Legendary
*
Online Online

Activity: 2142



View Profile
June 08, 2012, 06:56:45 AM
 #10

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?

PGP key molecular F9B70769 fingerprint 9CDD C0D3 20F8 279F 6BE0  3F39 FC49 2362 F9B7 0769
molecular
Donator
Legendary
*
Online Online

Activity: 2142



View Profile
June 08, 2012, 07:05:18 AM
 #11

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?

PGP key molecular F9B70769 fingerprint 9CDD C0D3 20F8 279F 6BE0  3F39 FC49 2362 F9B7 0769
molecular
Donator
Legendary
*
Online Online

Activity: 2142



View Profile
June 08, 2012, 07:14:54 AM
 #12

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"?

PGP key molecular F9B70769 fingerprint 9CDD C0D3 20F8 279F 6BE0  3F39 FC49 2362 F9B7 0769
Meni Rosenfeld
Donator
Legendary
*
Offline Offline

Activity: 1890



View Profile WWW
June 08, 2012, 09:05:21 AM
 #13

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.

1EofoZNBhWQ3kxfKnvWkhtMns4AivZArhr   |   Who am I?   |   bitcoin-otc WoT
Bitcoil - Exchange bitcoins for ILS (thread)   |   Israel Bitcoin community homepage (thread)
Analysis of Bitcoin Pooled Mining Reward Systems (thread, summary)  |   PureMining - Infinite-term, deterministic mining bond
molecular
Donator
Legendary
*
Online Online

Activity: 2142



View Profile
June 08, 2012, 09:24:33 AM
 #14

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.

PGP key molecular F9B70769 fingerprint 9CDD C0D3 20F8 279F 6BE0  3F39 FC49 2362 F9B7 0769
molecular
Donator
Legendary
*
Online Online

Activity: 2142



View Profile
June 08, 2012, 09:28:14 AM
 #15

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.

PGP key molecular F9B70769 fingerprint 9CDD C0D3 20F8 279F 6BE0  3F39 FC49 2362 F9B7 0769
Meni Rosenfeld
Donator
Legendary
*
Offline Offline

Activity: 1890



View Profile WWW
June 08, 2012, 09:48:56 AM
 #16

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".

1EofoZNBhWQ3kxfKnvWkhtMns4AivZArhr   |   Who am I?   |   bitcoin-otc WoT
Bitcoil - Exchange bitcoins for ILS (thread)   |   Israel Bitcoin community homepage (thread)
Analysis of Bitcoin Pooled Mining Reward Systems (thread, summary)  |   PureMining - Infinite-term, deterministic mining bond
Meni Rosenfeld
Donator
Legendary
*
Offline Offline

Activity: 1890



View Profile WWW
June 09, 2012, 08:06:59 PM
 #17

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.

1EofoZNBhWQ3kxfKnvWkhtMns4AivZArhr   |   Who am I?   |   bitcoin-otc WoT
Bitcoil - Exchange bitcoins for ILS (thread)   |   Israel Bitcoin community homepage (thread)
Analysis of Bitcoin Pooled Mining Reward Systems (thread, summary)  |   PureMining - Infinite-term, deterministic mining bond
friedcat
Donator
Legendary
*
Offline Offline

Activity: 848



View Profile
June 10, 2012, 08:11:21 AM
 #18

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.

Meni Rosenfeld
Donator
Legendary
*
Offline Offline

Activity: 1890



View Profile WWW
June 14, 2012, 05:21:56 PM
 #19

POLY.10.1 is now offered at 107% of face value. There's a bot that updates prices every 2 minutes.

1EofoZNBhWQ3kxfKnvWkhtMns4AivZArhr   |   Who am I?   |   bitcoin-otc WoT
Bitcoil - Exchange bitcoins for ILS (thread)   |   Israel Bitcoin community homepage (thread)
Analysis of Bitcoin Pooled Mining Reward Systems (thread, summary)  |   PureMining - Infinite-term, deterministic mining bond
molecular
Donator
Legendary
*
Online Online

Activity: 2142



View Profile
June 15, 2012, 08:30:37 PM
 #20

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.

PGP key molecular F9B70769 fingerprint 9CDD C0D3 20F8 279F 6BE0  3F39 FC49 2362 F9B7 0769
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!