How attractive is the SPS as a takeover target?

in #steemtalk4 months ago

TL;DR: I don't know, but I'm going to start collecting data

Almost three weeks ago (wow), I wrote the article Let's talk about the Steem Proposal System (SPS). In that article, I speculated that a high-value SPS could become an attractive takeover target for a well-funded investor or investment group. Since that time, the concept has intrigued me, so I thought I'd slap together a script to see how the attractiveness changes over time.

This morning, I put together such a script, and I'll be scheduling it to run daily. The fundamental assumption is that someone could gain a controlling interest in the SPS by acquiring 25% of all STEEM in circulation (controlPercent=0.25).

It's clear that these numbers have no real meaning on any single day, since activity at this scale would change prices throughout the ecosystem, but I still think the numbers might be interesting as a day to day/week to week comparison tool.

i.e. is the SPS a more or less attractive takeover target today than it was yesterday?

So, here is this morning's baseline:

External STEEM Price: 0.175096
External SBD Price: 2.34
SPS balance: 4540220.996
STEEM supply: 465935008.087
SBD supply: 13488263.480
STEEM median quote: 465932484.389
SBD median base: 121393710.117
Conversion price: 0.260539
HairCut ratio: 0.672053
Steem Market cap: 8.15834e+07
Controlling percentage: 0.25
Cost of control: 20395850
dao Conversion Value: 3.05127e+06
dao Nominal Value: 4540220.996
dao External Value: 1.06241e+07
Haircut price C/B: 6.68438
Nominal price C/B: 4.49226
External price C/B: 1.91977

The last three lines are the ones of particular interest. In short, it would cost about $20 million to gain a controlling interest in the 4 1/2 million SBDs in the SPS wallet. At the haircut price of $0.67, this hypothetical cost/benefit ratio (CBR) is roughly 62/3:1; At the nominal price of $1, the CBR is 4 1/2:1; and at the external price of $2.34 the CBR is just about 2:1.

As time goes on, higher CBRs would be less attractive, and lower CBRs would be more attractive.

It's an interesting concept to me, because:

  1. Such an acquisition also brings a myriad of other benefits in the form of curation rewards, blockchain interest, and the ability to (heavily) influence the nature of the content that appears on the blockchain.
  2. Such an acquisition is not exactly a "cost". The investor could always recoup part/all of their investment by selling their STEEM again. It's really more like an "investment / benefit" ratio. The actual change in such an investor's overall net worth would be 0 (ignoring fees and market movement, which are not accounted for here).

Here's the script:

#!/bin/bash

### "Global" parameters
controlPercent=0.25
priceFile=/tmp/priceData.json
outFile=${HOME}/data/spsCostBenefit.csv
oneDaySeconds=86400
apiEndPoint=https://api.moecki.online
saveIt=${1:-"nope"}

if [ -f ${priceFile} ]
then
   now=$( date +%s )
   fileDate=$( stat -c %Y ${priceFile} )
   priceAge=$(( ( ${now} - ${fileDate} ) / ${oneDaySeconds} ))
else
   priceAge=-1
fi

if [ ${priceAge} -lt 0 -o ${priceAge} -gt ${oneDaySeconds} ]
then
   echo "Getting price from Internet"
   PRICE_DATA=$(curl -s 'https://api.coingecko.com/api/v3/simple/price?ids=steem,steem-dollars&vs_currencies=usd&include_market_cap=false')
   if [[ $? -eq 0 ]]; then
      echo ${PRICE_DATA} >${priceFile}
   else
      echo "Error fetching STEEM price data"
      if [ -f ${priceFile} ]
      then
         PRICE_DATA=$(cat ${priceFile} )
      else
         echo "Could not get prices from Internet or file system."
         exit 1
      fi
   fi
else
   PRICE_DATA=$(cat ${priceFile})
fi

steemPrice=$(jq -Sc '."steem".usd' ${priceFile})
if [[ $? -ne 0 ]]; then
  echo "Error parsing STEEM price data"
  exit 1
fi

sbdPrice=$(jq -Sc '."steem-dollars".usd' ${priceFile})
if [[ $? -ne 0 ]]; then
  echo "Error parsing SBD price data"
  exit 1
fi

spsBalance=$(curl -s --data '{"jsonrpc":"2.0", "method":"condenser_api.get_accounts", "params":[["steem.dao"]], "id":1}' ${apiEndPoint} | jq -Sr '.result[].sbd_balance | sub(" SBD$"; "")')
supplyInfo=$(curl -s --data '{"jsonrpc":"2.0", "method":"condenser_api.get_dynamic_global_properties", "params":[], "id":1}' ${apiEndPoint})
currentSteemSupply=$( echo ${supplyInfo} | jq -r '.result | .current_supply | sub (" STEEM$"; "")')
currentSbdSupply=$( echo ${supplyInfo} | jq  -r '.result | .current_sbd_supply | sub (" SBD$"; "")')
medianInfo=$(curl -s --data '{"jsonrpc":"2.0", "method":"condenser_api.get_current_median_history_price", "params":[], "id":1}' ${apiEndPoint})
medianSbdQuote=$( echo ${medianInfo} | jq -r '.result | .quote | sub (" STEEM$"; "")')
medianSbdBase=$( echo ${medianInfo} | jq -r '.result | .base | sub (" SBD$"; "")')
conversionPrice=$( echo ${medianSbdQuote} ${medianSbdBase} | awk '{print $2 / $1}' )
haircutRatio=$(echo ${steemPrice} ${conversionPrice} | awk '{print $1 / $2}')
int100HaircutRatio=$( echo ${haircutRatio} | awk '{printf "%d", $1 * 100}' )
if [ "${int100HaircutRatio}" -gt 100 ]
then
   conversionPrice=1
fi
marketCap=$( echo ${steemPrice} ${currentSteemSupply} | awk '{print $1 * $2}' )
controlValue=$( echo ${marketCap} ${controlPercent} | awk '{print $1 * $2}')
daoConversionValue=$( echo ${spsBalance} ${steemPrice} ${conversionPrice} | awk '{print $1 * ($2 / $3)}' )
daoExternalValue=$( echo ${spsBalance} ${sbdPrice} | awk '{print $1 * $2}' )
conversionCostBenefit=$( echo ${controlValue} ${daoConversionValue} | awk '{print $1 / $2}' )
nominalCostBenefit=$( echo ${controlValue} ${spsBalance} | awk '{print $1 / $2}' )
externalCostBenefit=$( echo ${controlValue} ${daoExternalValue} | awk '{print $1 / $2}' )

echo "External STEEM Price: ${steemPrice}"
echo "External SBD Price: ${sbdPrice}"
echo "SPS balance: ${spsBalance}"
echo "STEEM supply: ${currentSteemSupply}"
echo "SBD supply: ${currentSbdSupply}"
echo "STEEM median quote: ${medianSbdQuote}"
echo "SBD median base: ${medianSbdBase}"
echo "Conversion price: ${conversionPrice}"
echo "HairCut ratio: ${haircutRatio}"
echo "Steem Market cap: ${marketCap}"
echo "Controlling percentage: ${controlPercent}"
echo "Cost of control: ${controlValue}"
echo "dao Conversion Value: ${daoConversionValue}"
echo "dao Nominal Value: ${spsBalance}"
echo "dao External Value: ${daoExternalValue}"
echo "Haircut price C/B: ${conversionCostBenefit}"
echo "Nominal price C/B: ${nominalCostBenefit}"
echo "External price C/B: ${externalCostBenefit}"

if [ ${saveIt} == "save" ]
then
   if [ -f "${outFile}" ]; then
     echo "${steemPrice},${sbdPrice},${spsBalance},${currentSteemSupply},${currentSbdSupply},${medianSbdQuote},${medianSbdBase},${conversionPrice},${haircutRatio},${marketCap},${controlPercent},${controlValue},${daoConversionValue},${spsBalance},${daoExternalValue},${conversionCostBenefit},${nominalCostBenefit},${externalCostBenefit}" >> "$outFile"
   else
     echo "External STEEM Price,External SBD Price,SPS balance,STEEM supply,SBD supply,STEEM median quote,SBD median base,Conversion price,HairCut ratio,Steem Market cap,Controlling percentage,Cost of control,dao Conversion Value,dao Nominal Value,dao External Value,Haircut price C/B,Nominal price C/B,External price C/B" > "$outFile"
     echo "${steemPrice},${sbdPrice},${spsBalance},${currentSteemSupply},${currentSbdSupply},${medianSbdQuote},${medianSbdBase},${conversionPrice},${haircutRatio},${marketCap},${controlPercent},${controlValue},${daoConversionValue},${spsBalance},${daoExternalValue},${conversionCostBenefit},${nominalCostBenefit},${externalCostBenefit}" >> "$outFile"
   fi
fi

The data doesn't have to be perfectly fresh, so I really should have done the same sort of error checking and saving info locally for the Steem API calls that I did for coingecko, but it was taking too long for a one-morning project. 😉 Maybe later.


Thank you for your time and attention.

As a general rule, I up-vote comments that demonstrate "proof of reading".




Steve Palmer is an IT professional with three decades of professional experience in data communications and information systems. He holds a bachelor's degree in mathematics, a master's degree in computer science, and a master's degree in information systems and technology management. He has been awarded 3 US patents.


image.png

Pixabay license, source

Reminder


Visit the /promoted page and #burnsteem25 to support the inflation-fighters who are helping to enable decentralized regulation of Steem token supply growth.

Sort:  

At the haircut price of...

With the quantities under consideration, if they started converting all of it wouldn't they be likely to reduce supply enough to start affecting the haircut level, maybe even getting out of the haircut zone completely?

Yeah, and if someone bought $20 million worth of Steem, that would drive the price sky high. Hence, this paragraph:

It's clear that these numbers have no real meaning on any single day, since activity at this scale would change prices throughout the ecosystem, but I still think the numbers might be interesting as a day to day/week to week comparison tool.

The point is to compare from day to day, not to guide actual investment decisions.

This post has been featured in the latest edition of Steem News...

Upvoted. Thank You for sending some of your rewards to @null. It will make Steem stronger.