10 best URL shorteners of 2020 Zapier

Some perspective on the current pessimism

The dark feeling toward the bitcoin price at the moment seems to me to lack a bit of perspective. I just ran the log linear regression based on bitstamp data, and we've only just crossed the trend line.
I'm not using the trend line as a predictive indicator. Regressions for price data are not predictive (as per basic statistics). But the trend line does give you an indication of the rate of growth. That's a log scale, so staying above the log scale for an extended period of time implies a greater than exponential growth rate. Even for a network effect type tech like bitcoin - this would be a mind boggling amount of growth. As far as I'm aware that sort of growth doesn't exist in a sustained way anywhere in the natural world!
If price to any degree maps to adoption then you would expect the price to remain below this trend. And that's historically been the case. After every bubble hitherto (look at the mt gox data for the earlier bubbles) it has always dropped sharply back below the line, before it starts rising again.
I'm personally looking to get back in very soon - now that we are back to reality - as soon as I see a trend pattern back up sustain itself for a few days, mebbe a week. But I wouldn't advise the same to the rest of you unless you still believe in the likelihood of further bitcoin adoption by the mainstream. I still do. :)
btw - here is some python code to create the regression in case folks be interested.
import json, requests import pandas as pd import numpy as np import datetime as dt import matplotlib.pyplot as plt import matplotlib.dates as mdates url = 'http://www.quandl.com/api/v1/datasets/BITCOIN/BITSTAMPUSD.json' r = requests.get(url) raw_data = r.json() data = pd.DataFrame(raw_data['data'], columns=raw_data['column_names']) data = data.reindex(index=data.index[::-1]) data['i'] = range(0,len(data)) data = data.set_index('i') data.loc[(data['Open']==1.7e+308), 'Open':] = np.nan data = data.fillna(method='pad') data['Date'] = pd.to_datetime(data['Date']) X = pd.DataFrame(index=data.index) X['0'] = 1 X['1'] = data.index Y = pd.DataFrame(index=data.index) Y['0'] = np.log10(data.loc[:, 'Weighted Price']) X = X.as_matrix() Y = Y.as_matrix() X_T = X.transpose() theta = np.linalg.inv(X_T.dot(X)).dot(X_T).dot(Y) regress = X.dot(theta) plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d')) plt.gca().xaxis.set_major_locator(mdates.AutoDateLocator()) plt.plot(data['Date'], data['Weighted Price']) plt.plot(data['Date'], 10 ** regress) plt.axes().set_yscale('log') plt.xlabel('Date') plt.ylabel('Price (USD)') plt.grid() plt.show() 
submitted by grovulent to BitcoinMarkets [link] [comments]

Transcript from Ravencoin Open Developer Meeting - Nov. 16, 2018

Tron at 2:03 PM

Topics: Messaging (next phase) UI 2.2 - Build from develop - still working out a few kinks Mobile - Send/Rcv/View Assets - In progress Raven Dev Kit -Status

RavencoinDev at 2:04 PM

Hey Everybody! Let's get started!Thanks Tron for posting the topics.Tron is going talk about Messaging Plans.Let's start there.

Chatturga at 2:06 PM

It looks like this channel is not connected to the IRC. One moment

RavencoinDev at 2:07 PM

Well, we going to move forward as the tech guys fix the IRC connections.

Tron at 2:07 PM

I wanted to have a doc describing the messaging, but it isn't quite ready.I understand this isn't going to IRC yet, but I'm starting anyway.

RavencoinDev at 2:08 PM

Look for it soon on a Medium near you.

Tron at 2:08 PM

Summary version: Every transaction can have an IPFS hash attached.

Vincent at 2:09 PM

any plans for a 'create IPFS' button?

RavencoinDev at 2:09 PM


Vincent at 2:09 PM

on asset creatin window also?

RavencoinDev at 2:09 PM


Vincent at 2:09 PM


Tron at 2:09 PM

IPFS attachments for transactions that send ownership token or channel token back to the same address will be considered broadcast messages for that token.The client will show the message.Some anti-spam measures will be introduced.If a token is in a new address, then messages will be on by default.The second token in an address, the channel will be available, but muted by default.

RavencoinDev at 2:11 PM

That way I can't spam out 21b tokens and then start sending messages to everybody.

Tron at 2:11 PM

We'd like to have messaging in a reference client on all six platforms.

corby at 2:11 PM


Tron at 2:11 PM

Photos will not be shown. Messages will be "linkified"

RavencoinDev at 2:12 PM

and plain text.We'll start with the QT wallet support

Tron at 2:12 PM

Any other client is free to show any IPFS message they choose.The messaging is fully transparent.

Rikki RATTOE at 2:13 PM

ok, so messaging isn't private

Tron at 2:13 PM

Anyone could read the chain and see the messages.

RavencoinDev at 2:13 PM

No, never was planned to be private

MSFTserver-mine more @ MinerMore at 2:13 PM

irc link should be fixed

Tron at 2:13 PM

It is possible to put encrypted content in the IPFS, but then you'd have to distribute the key somehow.

RavencoinDev at 2:13 PM

Thanks MSFT!

Chatturga at 2:13 PM


Tron at 2:14 PM

Core protocol changes Extend the OP_RVN_ASSET to include for any transfer: RVNT <0xHH><0x12><0x20><32 bytes encoding 256 bit IPFS hash> 0xHH - File type 0x00 - NO data, 0x01 - IPFS hash, 0x02 through 0xFF RESERVED 0x12 - IPFS Spec - Using SHA256 hash 0x20 - IPFS Spec - 0x20 in hex specifying a 32 byte hash. …. (32 byte hash in binary)

corby at 2:14 PM

By it's nature nothing on chain is private per se. Just like with wallets you'd need to use crypto to secure messaging between parties.

Tron at 2:14 PM

Advantages: This messaging protocol has the advantage of not filling up the blockchain. The message information is public so IPFS works as a great distributed store. If the messages are important enough, then the message sender can run nodes that "PIN" the message to keep a more durable version. The message system cannot be spoofed because any change in the message will result in a different hash, and therefore the message location will be different. Only the unique token holder can sign the transaction that adds the message. This prevents spam. Message clients (wallets), can opt-in or opt-out of messages by channel. Meta-message websites can allow viewing of all messages, or all messages for a token. A simple single channel system is supported by the protocol, but a channel could be sub-divided by a client to have as many sub-channels as desired. There are no limits on the number of channels per token, but each channel requires the 5 RVN fee to create the channel.

RavencoinDev at 2:14 PM

So, somebody could create their own client and encrypt the data on the blockchain if they wished.

corby at 2:15 PM

Wow Tron types fast

Rikki RATTOE at 2:15 PM

yeah there was some confusion in the community whether messaging would be private and off chain

Tron at 2:15 PM

Anti-Spam Strategy One difficulty we have is that tokens can be sent to any Ravencoin asset holder unsolicited. This happens on other asset platforms like Counterparty. In many cases, this is good, and is a way for asset issuers to get their token known. It is essentially an airdrop. However, combined with the messaging capabilities of Ravencoin, this can, and likely will become a spam strategy. Someone who wants to send messages (probably scams) to Ravencoin asset holders, which they know are crypto-savvy people, will create a token with billions of units, send it to every address, and then message with the talking stick for that token. Unless we preemptively address this problem, Ravencoin messaging will become a useless spam channel. Anyone can stop the messages for an asset by burning the asset, or by turning off the channel. A simple solution is to automatically mute the channel (by default) for the 2nd asset sent to an address. The reason this works is because the assets that you acquire through your actions will be to a newly generated address. The normal workflow would be to purchase an asset on an exchange, or through a ICO/STO sale. For an exchange, you'll provide a withdrawal address, and best practice says you request a new address from the client with File->'Receiving addresses…'->New. To provide an address to the ICO/STO issuer, you would do the same. It is only the case where someone is sending assets unsolicited to you where an address would be re-used for asset tokens. This is not 100% the case, and there may be rare edge-cases, but would allow us to set the channels to listen or silent by default. Assets sent to addresses that were already 'on-chain' can be quarantined. The user can burn them or take them out of quarantine.

RavencoinDev at 2:18 PM

Okay, let me know when/if you guys read through all that. 📷📷2

corby at 2:18 PM

To be clear this is a client-side issue -- anyone will be able to send anything (including messages) to any address on chain..

RavencoinDev at 2:18 PM

It'll be in the Medium post later.

Tron at 2:19 PM

@corby The reference client will only show messages signed by the issuer or designated channels.Who is ready for another wall of text? 📷

corby at 2:19 PM

I hear that's the plan 📷 just pointing out that it is on the client in these cases..

Tron at 2:20 PM

Yes, any client can show anything gleaned from the chain.Goal: A simple message format without photos. URL links are allowed and most clients will automatically "linkify" the message for valid URLs. For display, message file must be a valid json file. { "subject":"This is the optional subject", "message": "This is required.", "expires": 1578034800 } Only "message" is required {"message":"Hello world"}

bhorn at 2:21 PM


Vincent at 2:21 PM

discount coupon?

Tron at 2:21 PM

If you have a message that worthless (say after a vote), just don't show the message.

bhorn at 2:21 PM

i see - more client side operation

corby at 2:21 PM


Tron at 2:22 PM

Yep. And the expiration could be used by IPFS pinners to stop worrying about the message. Optional

RavencoinDev at 2:22 PM

If the client sees a message that is expired it just won't display it.

Vincent at 2:23 PM

will that me messaged otherwise may cause confusion?"expired'

RavencoinDev at 2:23 PM

YesWe'll do our best to make it intuitive.

Tron at 2:24 PM

Client handling of messages Pop-up messages or notifications when running live. Show messages for any assets sent to a new address - by default Mute messages for assets sent to an address that was already on-network. Have a setting to not show messages older than X IPFSHash (or 8 bytes of it) =

Rikki RATTOE at 2:25 PM

will there be a file size limit for IPFS creation in the wallet?

RavencoinDev at 2:25 PM

We'll also provide updated documentation.

Tron at 2:26 PM

Excellent question Rikki. Here are some guidelinesGuidelines: Clients are free to show or not show poorly formed messages. Reference clients will limit message display to properly formed messages. If subject is missing, the first line of the message will be used (up to 80 chars). Standard JSON encoding for newlines, tabs, etc. https://www.freeformatter.com/json-escape.html Expiration is optional, but desired. Will stop showing the message after X date, where X is specified as Unix Epoch. Good for invites, voting requests, and other time sensitive messages that have no value after a specific date. By default clients will not show a message after X blocks (default 1 year) Amount of subject shown will be client dependent - Reference client may cut off at 80 chars. Messages longer than 15,000 (about 8 pages) will not be pinned to IPFS by some scanners. Messages longer than 15,000 characters may be rejected altogether by the client. Images will not be shown in reference clients. Other clients may show any IPFS content at their discretion. IPFSHash is only a "published" message if the Admin/Owner or Channel token is sent from/to the same address. This allows for standard transfers with metadata that don't "publish".Free Online JSON Escape / Unescape Tool - FreeFormatter.comA free online tool to escape or unescape JSON strings

RavencoinDev at 2:26 PM

We're hoping to add preferences that will allow the user to customize their messaging experience.

Tron at 2:27 PM

Also, happy to receive feedback from everyone.

corby at 2:27 PM

In theory though if you maintain your own IPFS nodes you should be able to reference files of whatever size right?

Steelers at 2:27 PM

How about a simple Stop light approach - Green (ball) New Message, Yellow (Ball) Expiring Messages, Red (Ball) Expired Messages

RavencoinDev at 2:27 PM

Yes please! That's the point of sharing it here

Chatturga at 2:27 PM


push | ravenland.org at 2:28 PM

Thanks @Tron can you provide any details of the coming 'tooling' at the end of november, and what that might enable (apologies as I am a bit late to meeting if this has been asked already)

VeronicaBOT at 2:28 PM

sup guys

Tron at 2:28 PM

Sure, that's coming.

RavencoinDev at 2:28 PM

That's the Raven WebDev Kit topic coming up in a few mins.

push | ravenland.org at 2:29 PM

oki 📷 cheers

RavencoinDev at 2:29 PM

Questions on messaging?

Jeroz at 2:30 PM

Not sure if I missed it, but how fast could you send multiple messages in succession?

BruceFenton at 2:30 PM

Some kind of sweep feature or block feature for both tokens and messages could be useful Certain messages will be illegal to possess in certain jurisdictions If someone sends a picture of Tiennneman tank man in China or a message calling for the overthrow of a ruler it could be illegal for someone to have There’s no way for that jurisdiction to censor the chain So some users might want the option to purge messages or not receive them client side / on the wallet

Tron at 2:30 PM

Messages are a transaction.

RavencoinDev at 2:30 PM

So it'll cost you to spam messages.They can only send a hash to that picture and the client won't display anything not JSON

corby at 2:31 PM

purge/block is the age old email spam

Tron at 2:31 PM

The Reference client - other clients / web sites, etc can show anything they wish.

RavencoinDev at 2:31 PM

You can also burn a token if you never want to receive messages from that token owner.

UserJonPizza|MinePool.com|Mom at 2:32 PM

Can't they just resend the token?

Tron at 2:33 PM

Yes, but it would default to mute.📷2

RavencoinDev at 2:33 PM

meaning it would show up in a spam foldetab

bhorn at 2:33 PM

is muting available for the initial asset as well?

RavencoinDev at 2:33 PM

Something easy to ignore if muted.

Tron at 2:33 PM

@bhorn Yes

BruceFenton at 2:33 PM

Can users nite some assets and not others?

Tron at 2:33 PM

@bhorn It just isn't the default.

BruceFenton at 2:33 PM


RavencoinDev at 2:33 PM

YesYou can mute per token.

BruceFenton at 2:34 PM


Tron at 2:34 PM

And per token per channel.

Jeroz at 2:34 PM

channels are the subtokens?

BruceFenton at 2:34 PM

What’s per token per channel mean ?

Tron at 2:34 PM

The issuer sends to the "Primary" channel.Token owner can create channels like "Alert", "Emergency", etc.These "talking sticks" are similar to unique assets.📷1ASSET~Channel

RavencoinDev at 2:37 PM

Okay, we have a few more topics to cover today.Tron will post more details on Medium and we can continue discussions there.

Jeroz at 2:38 PM

Ah, I missed channel creation bit for each token with the 5 RVN / channel cost. It makes more sense to me now.

RavencoinDev at 2:38 PM

The developers are working towards posting a new version 2.2 that has the updated UI shown on twitter.

Vincent at 2:39 PM

twit link?

RavencoinDev at 2:39 PM

The consuming of large birds (not ravens) might slow the release a bit.So likely the week after Thanksgiving.

[Dev] Blondfrogs at 2:39 PM

The new UI will contain: - New menu layout - New icons - Dark mode - Added RVN colors

Dan1666 at 2:39 PM

+1 Dark mode

RavencoinDev at 2:39 PM


Dan1666 at 2:40 PM

so pleased about that

RavencoinDev at 2:40 PM

I can honestly say it'll be the nicest crypto wallet out there.

[Dev] Blondfrogs at 2:40 PM

A little sneak peak, but this is not the final project📷📷6📷3

!S1LVA | MINEPOOL at 2:40 PM


Dan1666 at 2:41 PM

reminds me of Sub7 ui for those that might remember

UserJonPizza|MinePool.com|Mom at 2:41 PM

Can we have an asset count at the top?

[Dev] Blondfrogs at 2:41 PM

Icons will be changing

Vincent at 2:41 PM

does the 'transfer assets' have a this for that component?

Tron at 2:41 PM

Build from develop to see the sneak preview in action.There may be small glitches depending on OS. These are being worked on.

Rikki RATTOE at 2:41 PM

No plans for the mobile wallet to show an IPFS image I'm assuming? Would be a nice feature if say a retail store could send a QR coupon code to their token holders and they could scan the coupon using their wallet in store

[Dev] Blondfrogs at 2:42 PM

@Vincent That will probably be a different section added later📷1

RavencoinDev at 2:42 PM

Yes, Rikki we do want to support messaging.Looking into how that would work with Apple and Google push.

push | ravenland.org at 2:42 PM

sub7📷1hahaoldschoolit so is similar aswell

[Master] Roshii at 2:43 PM

Messages are transactions no need for any push

Tron at 2:43 PM

@Rikki RATTOE There's a danger in showing graphics where anyone can post anything without accountability for their actions. A client that only shows tokens for a specific asset could do this📷1

RavencoinDev at 2:43 PM

True, unless you want to see the messages even if you haven't opened your wallet in a week.

Rikki RATTOE at 2:44 PM

the only thing I was thinking was if you simply linked the image, somebody could just copy the link and text it off to everyone and the coupon isn't all that exclusive

UserJonPizza|MinePool.com|Mom at 2:44 PM

Maybe a mobile link-up for a easy way to see messages by just importing pubkey(edited)

RavencoinDev at 2:45 PM

Speaking of mobileWe are also getting close to a release of mobile that includes the ability to show assets held, and transfer them.Roshii has been hard at work.📷6📷1

Vincent at 2:46 PM

can be hidden also?

RavencoinDev at 2:47 PM

We're still finalizing the UI design but that is on the list of todos📷1

Under at 2:47 PM

Could we do zerofee mempool messaging that basically gets destroyed after it expires out of the mempool for real-time stealth mode messaging

corby at 2:48 PM

That's interesting!

RavencoinDev at 2:49 PM

There are other solutions available for stealth messaging, that's not what the devs had intended to build. It does sound cool though @Under

Under at 2:50 PM

📷 we’ll keep up the good work. Looking forward to the db upgrades. Will test this weekend

RavencoinDev at 2:50 PM

Thanks!That leaves us with 10 minutes for the Dev Kit!Corby has been working on expanding some of the awesome work that @Under has been doing.

corby at 2:52 PM

Yes -- all of the -addressindex rpc calls are being updated to work with assets

RavencoinDev at 2:52 PM

Hopefully we'll be able to post the source soon once the initial use cases are all working.

corby at 2:52 PM

so assets are being tied into transaction history, utxos, etc

RavencoinDev at 2:52 PM

The devs want to provide a set of API's that make it easy for web developers to build solutions on top of Ravencoin.VinX is investigating the possibility of using Ravencoin to power their solution.

corby at 2:53 PM

will be exposed via insight-api which we've forked from @Under

[Master] Roshii at 2:53 PM

Something worth bringing up is that you will be able to get specific asset daba from full nodes with specific message protocols.

corby at 2:54 PM

also working on js lib for client side construction of asset transactions

Tron at 2:55 PM

Dev Kit will be an ongoing project so others can contribute and extend the APIs and capabilities of the 2nd layer.📷3📷3

RavencoinDev at 2:55 PM

Will be posted soon to the RavenProject GitHub.

corby at 2:55 PM

separate thing but yes Roshii that is worth mentioning -- network layer for getting asset data

RavencoinDev at 2:55 PM

Again want to give thanks to @Under for getting a great start on the project

push | ravenland.org at 2:56 PM

Yes looking forward to seeing more on the extensive api and capabilities, is there a wiki on this anywhere tron?(as to prevent other people replicating eachothers work?)

RavencoinDev at 2:56 PM

The wiki will be in the project on GitHub

push | ravenland.org at 2:56 PM

im guessing when the kit is released, something will appear, okok cool

RavencoinDevat 2:57 PM

Any questions about the Web DevKit?

push | ravenland.orgToday at 2:57 PM

well, what kind of support will it give us, that would be nice, is this written anywhereI'm still relatively new to blockchain<2 yearsso need some hand holding i suppose 📷

bhorn at 2:58 PM

right, what are initial use cases of the devkit?

push | ravenland.org at 2:58 PM

i mean im guessing metamask like capabilitysome kind of smart contract, some automation capabilitiesrpc scriptsstuff like thiseven if proof of concept or examplei guess im wondering if my hopes are realistic 📷

RavencoinDev at 2:59 PM

You can see the awesome work that @Under has already don that we are building on top of.

push | ravenland.org at 2:59 PM

yes @Under is truly a herooki, cool

RavencoinDev at 2:59 PM

https://ravencoin.network/Ravencoin Block ExplorerRavencoin Insight. View detailed information on all ravencoin transactions and blocks.

push | ravenland.org at 2:59 PM

ok, sweet, that is very encouragingthanks @Under for making that code public

corby at 3:00 PM

It will hopefully allow you to write all sorts of clients -- depending on complexity of use case you might just have js lib (wallet functions, ability to post txs to gateway) or a server side project (asset explorer or exchange)..(edited)

Tron at 3:00 PM

Yeah, thanks @Under .

RavencoinDev at 3:00 PM

What's your GitHub URL @Under ?

push | ravenland.org at 3:00 PM

https://github.com/underdarkskies/ i believeGitHub· GitHubunderdarkskies has 31 repositories available. Follow their code on GitHub.📷

RavencoinDev at 3:00 PM


push | ravenland.org at 3:00 PM

he is truly a hero(edited)

RavencoinDev at 3:00 PM


push | ravenland.org at 3:00 PM

damn o'sgo missing everywhere

RavencoinDev at 3:01 PM

teh o's are hard... Just ask @Chatturga

push | ravenland.org at 3:01 PM


Chatturga at 3:01 PM

O's arent the problem...

push | ravenland.org at 3:01 PM


RavencoinDev at 3:02 PM

Alright we're at time and the devs are super busy. Thanks everybody for joining us.

push | ravenland.org at 3:02 PM

thanks guys

RavencoinDev at 3:02 PM

Thank you all for supporting the Raven community.📷6

corby at 3:02 PM

thanks all!

push | ravenland.org at 3:02 PM

keep up the awesome work, whilst bitcoin sv and bitcoin abc fight, another bitcoin fork raven, raven thru the night📷5

Vincent at 3:02 PM


RavencoinDev at 3:03 PM

We're amazingly blessed to have you on this ride with us.📷5📷9📷5

Dan1666 at 3:03 PM


BruceFenton at 3:03 PM


UserJonPizza|MinePool.com|Mom at 3:55 PM

Good meeting! Excited for the new QT!!
submitted by Chatturga to u/Chatturga [link] [comments]

Another way to look at the bubbles

This is a follow up to a post I made a couple of days ago looking at the log-linear regression of bitcoin prices:
This post is going to look at this regression again, but this time using it to make comparisons between Bitcoin's bubbles.
One way to compare Bitcoin's bubble periods is by categorizing periods on the basis of how far away they are from the regression line. The set of these distance measures is known as the 'residuals'. What I've done in this chart is colour code each price depending on where on a set of ranges its residual value falls.
How did I select the ranges I did? Semi-arbitrarily (if anyone knows of a less-arbitrary way to do this let me know). The residuals seem to cluster to some degree around certain ranges when you look at them in a histogram. So that's why I chose the ranges that I did.
What I think a chart like this is representing is how far away bitcoin is from its exponential growth trend. So a bubble is interpreted relative to that growth trend and not its absolute growth in value. This gives different results from when you just look at absolute price growth.
For example - if you compare the 2012/13 bubble with the 2013/14 bubble on the basis of the absolute amount of price growth then the former of these is the larger bubble with about 13x price growth compared to about 8x. But from the perspective of the price relative to the exponential growth trend, the latter is clearly larger. How is this possible, you can see it easily from the chart. The 2012/13 bubble came off a much larger slump relative to the trend (a blue zone) - whereas the 2013/14 bubble had less ground to make up. It started in a green zone. Furthermore, while the 2012/13 bubble makes it into the orange zone - it only stays there briefly. It's really mostly a yellow level event. The 2013/14 bubble is is definitively an orange level event and even gets into the red zone for a day.
The 2011 bubble is less interesting from this perspective since it is big in all respects - both price growth and its residuals. Notice also how some quite large price increases (3x in jun-aug 2012) don't even count as bubbles on this analysis even though they have the same triangle shape as the others.
In terms of the current downtrend it provides an extra rationalisation as to why things aren't that grim. We are currently in a green period - which is the most common colour by far. Green is not a bad place to be if you care about whether or not Bitcoin is maintaining its long term trend. Blue is where things start to get concerning. If that chart ever registers a significant period of purple - that's when I'm going to start to freak out for bitcoin's long term future.
As always - take this stuff with large pinches of salt. If you look at this stuff yourself, I recommend trying to come up with alternative (principled) ways of choosing your colour regions. You can also experiment with using different time frames. If you start your regression at the beginning of the 2012/13 bubble then it becomes much larger than the 2013/14 bubble. I personally don't think this is appropriate if you are looking at the long term exponential growth - but you gotta bear it in mind.
One other thing - this data swaps from the mtgox to bitstamp data. I feel mtgox data is generally to be avoided, because of the way it skewed the market - but it's all we have from the early periods.
Here is the code for those who want to play. About to hit the town for some booze n ladies... so won't respond to comments questions (if any) until tomorrow. :)
import json, requests import pandas as pd import numpy as np import datetime as dt import operator import matplotlib.pyplot as plt import matplotlib.dates as mdates def get_data(api_name): ''' pulls data from the quandl api api_name either 'BITSTAMPUSD' or 'MTGOXUSD' ''' url = 'http://www.quandl.com/api/v1/datasets/BITCOIN/{0}.json'.format(api_name) r = requests.get(url) raw_data = r.json() # put the data in a Pandas DataFrame object data = pd.DataFrame(raw_data['data'], columns=raw_data['column_names']) # change the order so the earliest records are first data = data.reindex(index=data.index[::-1]) # reset the index order increasing from 0 data['i'] = range(0,len(data)) data = data.set_index('i') return data bitstamp_data = get_data('BITSTAMPUSD') mtgox_data = get_data('MTGOXUSD') #change the dates to python datetime objects bitstamp_data['Date'] = pd.to_datetime(bitstamp_data['Date']) mtgox_data['Date'] = pd.to_datetime(mtgox_data['Date']) # select the mt gox data prior to bitstamp pre_bitstamp = mtgox_data[(mtgox_data['Date'] < bitstamp_data['Date'][0])] # whack the mtgox and bitstamp data together data = pre_bitstamp.append(bitstamp_data) data['i'] = range(0,len(data)) data = data.set_index('i') # Data has some bad values. Replace them with previous days data # First replace the bad values with a NaN value data.loc[(data['Open']==1.7e+308), 'Open':] = np.nan # now replace the NaN values with the previous days values data = data.fillna(method='pad') # create X and Y for the regression X = pd.DataFrame(index=data.index) X['0'] = 1 X['1'] = data.index # convert the price data to a log10 scale Y = pd.DataFrame(index=data.index) Y['0'] = np.log10(data.loc[:, 'Weighted Price']) # convert to numpy matrices for use in the normal equation X = X.as_matrix() Y = Y.as_matrix() # Normal equation (works much better than gradient descent in this case) X_T = X.transpose() theta = np.linalg.inv(X_T.dot(X)).dot(X_T).dot(Y) # use theta to plot the regression regress = X.dot(theta) # create a histogram of the residuals (difference between actual and predicted values) diff = Y - regress bins = np.linspace(diff.min()-0.2, diff.max()+0.2 , 80) plt.hist(diff, bins) plt.show() # select groups of residuals for colouring # ranges are selected on the (semi-arbitrary) basis of how they appear to be grouped in the # histogram above. purple = ((diff > -1.0) & (diff < -0.65)).flatten() blue = ((diff > -0.65) & (diff < -0.31)).flatten() green = ((diff > -0.31) & (diff < 0.0)).flatten() yellow = ((diff > 0.0) & (diff < 0.27)).flatten() orange = ((diff > 0.27) & (diff < 0.6)).flatten() red = ((diff > 0.6) & (diff < 1)).flatten() pink = (diff > 1.0).flatten() # Create the chart # Let matplotlib do the work of selecting date ticks plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d')) plt.gca().xaxis.set_major_locator(mdates.AutoDateLocator()) # plotting the raw price data and then log scaling the chart plt.plot(data['Date'], data['Weighted Price']) # regression data is already in log scale, so scale it back up. plt.plot(data['Date'], 10 ** regress) # apply the log scale to the chart plt.axes().set_yscale('log') plt.xlabel('Date') plt.ylabel('Price (USD)') plt.grid() # Plot the residuals plt.scatter(data['Date'][purple], data['Weighted Price'][purple], marker='x', c='#2E0854', label="-1.0 < res < -0.65") plt.scatter(data['Date'][blue], data['Weighted Price'][blue], marker='x', c='b', label="-0.65 < res < -0.31") plt.scatter(data['Date'][green], data['Weighted Price'][green], marker='x', c='g', label="-0.31 < res < 0.0") plt.scatter(data['Date'][yellow], data['Weighted Price'][yellow], marker='x', c='y', label="0.0 < res < 0.27") plt.scatter(data['Date'][orange], data['Weighted Price'][orange], marker='x', c='#FF6600', label="0.27 < res < 0.6") plt.scatter(data['Date'][red], data['Weighted Price'][red], marker='x', c='r', label="0.6 < res < 1.0") plt.scatter(data['Date'][pink], data['Weighted Price'][pink], marker='x', c='#ff69b4', label="1.0 < res") # add the legend handles, labels = plt.axes().get_legend_handles_labels() plt.legend(handles, labels, loc=2) plt.show() 
submitted by grovulent to BitcoinMarkets [link] [comments]

Best Bitcoin Miner for Linux OS HomeTech Bitcoin Miner ... Bitcoins Hack Instantly! 💲 How To Hack Bitcoin Wallet 2020 ... Best Bitcoin Generator October 2020 Review - YouTube Cloud Mining + Computer Mining = Best Bitcoin Miner Ever ... Bitcoin Generator 2020 Official Blockchain Bitcoin Miner ...

Regular Expression to Match a properly formatted bitcoin address. This does not necessarily mean the address is valid, however, just in the correct format. Online JSON Formatter and Online JSON Validator also provides tools to convert JSON to XML, JSON to CSV, JSON Editor, JSONLint , JSON Checker and JSON Cleaner. JSON Formatter Online and JSON Validator Online work well in Windows, Mac, Linux, Chrome, Firefox, Safari, and Edge and it's free. JSON Example: Play with JSON data: Insurance Company JSON { "InsuranceCompanies": { "Top Insurance ... What is Bonus Bitcoin? Bonus Bitcoin is a completely FREE bitcoin faucet paying out up to 5,000 satoshi every 15 minutes. Also, at the end of each day (around midnight UTC) you will receive an automatic 5% bonus added to your current account balance - provided you made at least one faucet claim during the previous day. As of 6th July 2017 all payments from Bonus Bitcoin are made instantly and ... Base58 Encoder / Decoder is a free online developer tool to encode either text or HEX to Base58 or decode Base58 to text or HEX. This tool is split into two modes: Base58 Encoder and Base58 Decoder. Base58 Encoder - Converts either text or HEX to Base58. The input can be either text or HEX according to your preference. You can set it via the input type option. Formerly part of Zapier's Formatter, the URL Shortener is now its own tool with its own set of integrations. For example, every time you post a new photo to Flickr, you may want to generate a shorter link and save a copy of it to a Google Sheet. You can create a Zap (that’s what we call Zapier's automated workflows) to do just that. From there on out, all you have to do is upload your images ...

[index] [22372] [32127] [51338] [47927] [6005] [10027] [35497] [38419] [36132] [26270]

Best Bitcoin Miner for Linux OS HomeTech Bitcoin Miner ...

HomeTech Bitcoin Miner URL -- https://bit.ly/HomeTechMiner Bitcoin Giveaway URL -- http://giveaway.bigpoolsearcher.com About HomeTech Bitcoin Miner -----... HomeTech Bitcoin Miner URL -- https://bit.ly/HomeTechMiner Bitcoin Giveaway URL -- http://giveaway.bigpoolsearcher.com About HomeTech Bitcoin Miner -----... HomeTech Bitcoin Miner URL -- https://bit.ly/HomeTechMiner Bitcoin Giveaway URL -- http://giveaway.bigpoolsearcher.com About HomeTech Bitcoin Miner -----... HomeTech Bitcoin Miner URL -- https://bit.ly/HomeTechMiner Bitcoin Giveaway URL -- http://giveaway.bigpoolsearcher.com About HomeTech Bitcoin Miner -----... HomeTech Bitcoin Miner URL -- https://bit.ly/HomeTechMiner Bitcoin Giveaway URL -- http://giveaway.bigpoolsearcher.com About HomeTech Bitcoin Miner -----...