Pages:
Author

Topic: Yet another analyst :) - page 36. (Read 269579 times)

newbie
Activity: 18
Merit: 0
May 11, 2013, 06:15:02 AM
There were a couple of buys worth close to $1M, the exchange rate is up $3 USD in the past 24 hours, $112 to $115, and this somehow broke your down trendline?  It would also have to hit $130 by Wednesday to stay above your line.  That's an expectation of phenomenal growth, and failure to adhere to this growth doesn't seem ominous to me, it seems healthy.

And while I'm at it, what I don't get about TA is the insistence on straight lines, y=mx+b, rather than parabolas of some kind.  The price of bitcoin has been an almost perfect graph of damped oscillations, like this:
http://beltoforion.de/pendulum_revisited/Damped_oscillation_graph2.png

... which is a sinusoidal curve, bracketed by curves, yet all the TAs apparently use straight lines.  Perhaps straight lines are used because they're easy to draw?


Probably because slope intercept is much more prominent in standard chart analysis.  I see a lot of sinusoidal curves in penny stock...
sr. member
Activity: 387
Merit: 250
May 11, 2013, 04:34:00 AM
There were a couple of buys worth close to $1M, the exchange rate is up $3 USD in the past 24 hours, $112 to $115, and this somehow broke your down trendline?  It would also have to hit $130 by Wednesday to stay above your line.  That's an expectation of phenomenal growth, and failure to adhere to this growth doesn't seem ominous to me, it seems healthy.

And while I'm at it, what I don't get about TA is the insistence on straight lines, y=mx+b, rather than parabolas of some kind.  The price of bitcoin has been an almost perfect graph of damped oscillations, like this:


... which is a sinusoidal curve, bracketed by curves, yet all the TAs apparently use straight lines.  Perhaps straight lines are used because they're easy to draw?
legendary
Activity: 1148
Merit: 1018
May 11, 2013, 03:50:29 AM
On this line break I got all my major indicators red. Bad sign.



Bad signs means we are going up?

Cheesy
sr. member
Activity: 462
Merit: 250
Clown prophet
May 11, 2013, 02:42:55 AM
On this line break I got all my major indicators red. Bad sign.

donator
Activity: 853
Merit: 1000
May 10, 2013, 07:14:14 PM
Just hit 90% bulls on the spx futures - insane!

Last time we hit this number we fell 20% in the following weeks/months

Positive seasonals are over as of today. This market could strech more of course, but it's hitting historically overbought levels on multiple time frames

Thinking all the banks and hedge funds are just blowing up this bubble on momentum plays with newly minted fed money. What a sham. It will end very badly, the big question is when

Yep. Another fun fact is that the cash:equity ratio held by mutual and hedge funds is nearing or at record low levels (similar to the 2000 & 2007 top). All those who believe we're in a continuation of a major bull market on par with the 90s are forgetting or dismissing the fact that cash levels were at extreme highs during this time period.

Basically, unless "this time is different" (and it rarely is), a lot of people are about to lose a lot on money once this supposedly unstoppable stock market rally turns.

Just hit 92% bulls today! That's it - this is a MAJOR top forming. Crazy.
member
Activity: 196
Merit: 10
May 10, 2013, 01:05:55 PM
Taken from a cam I secretly posted in Lucif's room. I took the liberty of editing the film to capture the moment as the triangle broke upwards:


LOL

Whats the video address that you showed her?
hero member
Activity: 924
Merit: 501
May 10, 2013, 11:56:27 AM
now come on, you know he was all out at $240+.  Any update molecular?  (edit: yes - one hour spread is $93)

legendary
Activity: 2492
Merit: 1473
LEALANA Bitcoin Grim Reaper
May 10, 2013, 11:18:36 AM
Lucif went all in at $80ish, but he is not telling Cheesy

All in or all out?
legendary
Activity: 1148
Merit: 1018
May 10, 2013, 08:16:48 AM
Lucif went all in at $80ish, but he is not telling Cheesy
hero member
Activity: 518
Merit: 500
May 10, 2013, 08:13:55 AM
Taken from a cam I secretly posted in Lucif's room. I took the liberty of editing the film to capture the moment as the triangle broke upwards:


LOL
legendary
Activity: 1288
Merit: 1000
Enabling the maximal migration
May 10, 2013, 07:58:46 AM

Lucif, any updates on your analysis?

Here's an update...


Taken from a cam I secretly posted in Lucif's room. I took the liberty of editing the film to capture the moment as the triangle broke upwards:



legendary
Activity: 1148
Merit: 1018
May 10, 2013, 07:01:10 AM
did the large triangle just break upwards?

OMG, BUY BUY BUY!!

(sorry, I couldn't help myself)
newbie
Activity: 17
Merit: 0
May 10, 2013, 07:00:28 AM
did the large triangle just break upwards?
legendary
Activity: 1904
Merit: 1002
May 10, 2013, 02:42:08 AM
https://gist.github.com/yrral86/5551203

This code calculates maximum price variation within the time specified.
Assumes trades.csv is in the following format
timestamp1,price
timestamp2,price
etc.

additional fields will not cause problems, but if the timestamp and price are not in those positions, you can adjust the indices on the line with Trade.new
the seconds variable will set the maximum time span to examine

(it turns out the library I chose uses the terminology push, pop and next)

cool stuff, bro!

just ran the thing on 4 million trades (only have data up to 2013-04-18 unfortunately... probs with bitcoincharts api):

Code:
Maximum spread within 60 seconds: $63.7778 t0=2013-04-10T18:59:50+00:00 t1=2013-04-10T19:00:45+00:00

It took quite some time and about 1.3 GB of ram:

Code:
real    13m10.698s
user    12m27.654s
sys     0m40.017s

thanks for the code, notme and thanks to all others for enduring our offtopic stuff here.


Cool... I didn't have the data to run it on.  That's a pretty big range for 55 seconds Tongue
donator
Activity: 2772
Merit: 1019
May 10, 2013, 01:41:06 AM
https://gist.github.com/yrral86/5551203

This code calculates maximum price variation within the time specified.
Assumes trades.csv is in the following format
timestamp1,price
timestamp2,price
etc.

additional fields will not cause problems, but if the timestamp and price are not in those positions, you can adjust the indices on the line with Trade.new
the seconds variable will set the maximum time span to examine

(it turns out the library I chose uses the terminology push, pop and next)

cool stuff, bro!

just ran the thing on 4 million trades (only have data up to 2013-04-18 unfortunately... probs with bitcoincharts api):

Code:
Maximum spread within 60 seconds: $63.7778 t0=2013-04-10T18:59:50+00:00 t1=2013-04-10T19:00:45+00:00
Maximum spread within 3600 seconds: $93.0 t0=2013-04-10T18:34:50+00:00 t1=2013-04-10T19:24:22+00:00

It took quite some time and about 1.3 GB of ram:

Code:
real    13m10.698s (for 60 second period)
real    57m24.590s (for 3600 second period)

thanks for the code, notme and thanks to all others for enduring our offtopic stuff here.

EDIT: added data for 3600s period
sr. member
Activity: 434
Merit: 250
May 09, 2013, 08:12:03 PM
On track [preferred]


On track


One of daily candidates


Another, more brutal candidate



Lucif, any updates on your analysis?
legendary
Activity: 1904
Merit: 1002
May 09, 2013, 05:52:25 PM
https://gist.github.com/yrral86/5551203

This code calculates maximum price variation within the time specified.
Assumes trades.csv is in the following format
timestamp1,price
timestamp2,price
etc.

additional fields will not cause problems, but if the timestamp and price are not in those positions, you can adjust the indices on the line with Trade.new
the seconds variable will set the maximum time span to examine

(it turns out the library I chose uses the terminology push, pop and next)
legendary
Activity: 1904
Merit: 1002
May 09, 2013, 05:03:48 PM
For each time period N in seconds do:
create 2 priority queues, one min, one max, with the following modifications:
  modify push to keep track of the last timestamp
  modify peek to pop off and throw away that are more N seconds old until it finds a trade within the timeframe or empties itself

set max_spread = 0
then, for each trade:
  push the trade to both queues
  spread = peek(max_queue) - peek(min_queue)
  max_spread = spread if spread > max_spread


Not sure if it is simpler, but at least to me it is easier to prove to myself it works as well as easy to recognize that for any number of seconds N you can calculate the max spread in worst case O(n^2*lg(n)) time, where n is the number of trades.

I don't quite understand... does your modified peek() find the max price? Is that queue sorted by price or time or is it a stack (since you're using push/pop/peek terminology it sounds like a stack to me)? In any case, it seems you'd have to search through the whole set of trades in the queue... either to find the max price or to find trades that have become too old for the time period.

Is that why you get the n^2? n^2 is a lot, there's ~ 4 million trades. Maybe it could be n*m where n is number of trades and m average number of trades in time period? I think by using adequate data structures (queue sorted by trade time + another one sorted by price?) one could get it down to n*lg(m). Not sure where your lg(n) is coming from, leads me to believe your queue is indeed sorted by price.


Queue is sorted on price.  Time is just an attribute of the trades the queue holds.  Pop and peek are acceptable terminology for a priority queue according to the wikipedia page, but it seems I should at least use insert for push.

It won't be anywhere near n^2 * lg (n)... that's just a lazy upper bound.  Insert will be lg(m) and modified peek will somewhere between O(1) in the best case and O(m*lg(m)) in the worst case (pop/dequeue is a lg(m) operation (in the worst case) in most queue implementations, which is where the lg came from).  Here m is the number of trades currently in the queue.  Whenever the market trends, you will have to throw a lot of old trades out of one of the queues, but in the other queue they will just get buried until the price revisits that level (so if it doesn't we never have to examine them again).
donator
Activity: 2772
Merit: 1019
May 09, 2013, 04:49:48 PM
For each time period N in seconds do:
create 2 priority queues, one min, one max, with the following modifications:
  modify push to keep track of the last timestamp
  modify peek to pop off and throw away that are more N seconds old until it finds a trade within the timeframe or empties itself

set max_spread = 0
then, for each trade:
  push the trade to both queues
  spread = peek(max_queue) - peek(min_queue)
  max_spread = spread if spread > max_spread


Not sure if it is simpler, but at least to me it is easier to prove to myself it works as well as easy to recognize that for any number of seconds N you can calculate the max spread in worst case O(n^2*lg(n)) time, where n is the number of trades.

I don't quite understand... does your modified peek() find the max price? Is that queue sorted by price or time or is it a stack (since you're using push/pop/peek terminology it sounds like a stack to me)? In any case, it seems you'd have to search through the whole set of trades in the queue... either to find the max price or to find trades that have become too old for the time period.

Is that why you get the n^2? n^2 is a lot, there's ~ 4 million trades. Maybe it could be n*m where n is number of trades and m average number of trades in time period? I think by using adequate data structures (queue sorted by trade time + another one sorted by price?) one could get it down to n*lg(m). Not sure where your lg(n) is coming from, leads me to believe your queue is indeed sorted by price.
legendary
Activity: 1904
Merit: 1002
May 09, 2013, 03:51:25 PM
question for one and all.

based upon history of btc vs $USD (@gox) ... what is the largest swing in the following periods:

1 minute
5 minutes
15 minutes
30 minutes
60 minutes
120 minutes
180 minutes

anyone?



You can gather this info yourself by looking at the historical charts. Don't be lazy. Tongue

I think you're underestimating the problem.

EDIT: a naive sql query on the trades table runs way too long. I could do it another way though, would take roughly 2 hours. So if the info is important enough for you, Viceroy, you can try to bribe me Wink


Just use the CSV and Ruby or Perl to parse the data.

Accessing and working with the data is not the problem: Unless he meant "timeframes" instead of "periods" you need to consider every possible pair of trades with times of execution no further than 60 seconds apart (could also be 2 seconds). You can't just use min/max (or even average or last price) values of some "minute bins" and look for the highest delta between 2 consecutive ones. The way I'd implement it would be to have a sliding window cointaining all trades from time t to time t-60s tracking min/max of the trades and then move it through the data (by moving t to the next trade and adding it to the list of the trades in the frame, then checking wether the oldest trade in the frame has time < t-60s and remove it if that's the case. keep trades in the frame in a list ordered by price so "max" can be adjusted in case the removed trade is the one with the highest price). Difference between "max" and "min" is the your swings size. Record the IDs of the 2 trades responsible for the largest swing and the solution is found.

If that sounds too complicated to you, please share your simpler solution.



For each time period N in seconds do:
create 2 priority queues, one min, one max, with the following modifications:
  modify push to keep track of the last timestamp
  modify peek to pop off and throw away that are more N seconds old until it finds a trade within the timeframe or empties itself

set max_spread = 0
then, for each trade:
  push the trade to both queues
  spread = peek(max_queue) - peek(min_queue)
  max_spread = spread if spread > max_spread


Not sure if it is simpler, but at least to me it is easier to prove to myself it works as well as easy to recognize that for any number of seconds N you can calculate the max spread in worst case O(n^2*lg(n)) time, where n is the number of trades.


  
Pages:
Jump to: