Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
regimes
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Eric Dagobert
regimes
Commits
85ab59bd
Commit
85ab59bd
authored
Jan 07, 2019
by
Eric Dagobert
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added graph production script
parent
91e076f6
Changes
2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
8361 additions
and
0 deletions
+8361
-0
CloseFactors.csv
CloseFactors.csv
+8174
-0
graphs.py
graphs.py
+187
-0
No files found.
CloseFactors.csv
0 → 100644
View file @
85ab59bd
This diff is collapsed.
Click to expand it.
graphs.py
0 → 100755
View file @
85ab59bd
#!/usr/bin/python3 -O
import
sys
,
getopt
from
datetime
import
datetime
from
distribs
import
DistList
from
config_manager
import
ConfigReader
import
dill
import
os.path
from
utils
import
ProgressBar
import
numpy
as
np
from
math
import
*
import
matplotlib.pyplot
as
plt
from
matplotlib.pyplot
import
cm
from
sklearn
import
cluster
,
covariance
,
manifold
from
tabulate
import
tabulate
import
makeclusters
from
distribs
import
*
import
pandas
as
pd
class
Graphs
:
def
__init__
(
self
,
conf
):
self
.
_conf
=
conf
def
graph_
(
self
,
embedding
,
centroids
,
labels
,
t
=
'clusters'
):
L
=
labels
colormap
=
[
cm
.
gnuplot2
(
i
)
for
i
in
np
.
linspace
(
0.
,
1.
,
max
(
L
)
+
2
)]
colorms
=
[
colormap
[
i
]
for
i
in
L
]
fig
=
plt
.
figure
()
plt
.
scatter
(
embedding
[
0
,:],
embedding
[
1
,:],
s
=
40
,
c
=
colorms
,
alpha
=
1.0
)
processed
=
set
()
for
i
,
col
in
enumerate
(
range
(
max
(
L
)
+
1
)):
if
col
in
processed
:
continue
lxy
=
centroids
[
i
][
0
]
labelx
,
labely
=
lxy
[
0
],
lxy
[
1
]
textx
=
labelx
+
0.001
texty
=
labely
+
0.01
plt
.
annotate
(
str
(
col
),
xy
=
(
labelx
,
labely
),
xytext
=
(
textx
,
texty
),
arrowprops
=
dict
(
arrowstyle
=
"->"
,
connectionstyle
=
"arc3"
),
size
=
6
)
for
i
,
z
in
enumerate
(
centroids
):
plt
.
scatter
(
z
[
0
][
0
],
z
[
0
][
1
],
s
=
50
,
c
=
[
colormap
[
i
]],
alpha
=
1.0
)
plt
.
title
(
t
)
plt
.
show
()
plt
.
savefig
(
t
)
plt
.
close
(
fig
)
def
draw_clusters
(
self
,
file
):
with
open
(
file
,
mode
=
'rb'
)
as
f
:
cl
=
dill
.
load
(
f
)
self
.
graph_
(
cl
.
_embedding
,
cl
.
_centroids
,
cl
.
_clabels
,
'clusters'
)
def
draw_regimes
(
self
,
file
):
with
open
(
file
,
mode
=
'rb'
)
as
f
:
r
=
dill
.
load
(
f
)
self
.
graph_
(
r
.
_clusters
.
_embedding
,
r
.
_rcentroids
,
r
.
_regimes
,
'regimes'
)
def
loaddist
(
self
,
ticker
):
mfile
=
self
.
_conf
.
dataref
()
mfields
=
[
ticker
]
self
.
_cmap
=
eval
(
self
.
_conf
.
clmap
())
D
=
Distributions
(
varfact
=
1.1
,
eps
=
.2
,
window
=
90
,
overlap
=
60
)
D
.
load
(
mfile
,
mfields
)
self
.
_ind
=
D
.
_index
self
.
_x
=
D
.
_logret
.
reshape
(
-
1
)
self
.
_title
=
ticker
self
.
_reg
=
dill
.
load
(
open
(
self
.
_conf
.
outreg
(),
'rb'
))
def
annotate
(
self
,
dt
,
Y
):
reg
=
self
.
_reg
labels
=
[]
c
=
0
s
=
0
curr_label
=
-
1
Xi
=
0
cx
=
0
l
=
len
(
reg
.
_regimes
)
boxsize
=
(
len
(
dt
)
-
1
)
//
l
-
1
for
i
,
tt
in
enumerate
(
dt
):
t
=
tt
.
strftime
(
'
%-
m/
%-
d/
%-
y'
)
if
tt
.
year
>=
2000
:
t
=
tt
.
strftime
(
'
%-
m/
%-
d/
%
y'
)
if
curr_label
==-
1
:
curr_label
=
reg
.
_rdates
[
t
]
continue
k
=
reg
.
_rdates
[
t
]
if
k
==
curr_label
:
c
+=
1
else
:
labelx
=
dt
[
s
+
c
//
2
]
labely
=
Y
[
s
+
c
//
2
]
if
s
+
c
//
2
<=
Xi
+
boxsize
:
Xi
=
Xi
+
boxsize
else
:
Xi
=
s
+
c
//
2
Xi
=
min
(
Xi
,
len
(
dt
)
-
1
)
textx
=
dt
[
Xi
]
if
cx
%
2
==
0
:
texty
=
Y
[
Xi
]
+
0.4
else
:
texty
=
Y
[
Xi
]
-
0.4
plt
.
annotate
(
str
(
curr_label
),
xy
=
(
labelx
,
labely
),
xytext
=
(
textx
,
texty
),
arrowprops
=
dict
(
arrowstyle
=
"->"
,
connectionstyle
=
"arc3"
),
size
=
9
)
s
=
i
c
=
0
curr_label
=
k
cx
+=
1
def
graph_data
(
self
):
reg
=
self
.
_reg
self
.
_cmap
=
cm
.
gnuplot2
colors
=
[
self
.
_cmap
(
i
)
for
i
in
np
.
linspace
(
0.
,
1.
,
reg
.
_regimes
.
max
()
+
2
)]
bbox_props
=
dict
(
boxstyle
=
"square,pad=0.3"
,
fc
=
'white'
,
ec
=
'black'
,
lw
=
'2'
)
#ax = plt.subplot(111)
colorm
=
[]
xt
=
[]
Y
=
[]
for
dx
,
y
in
zip
(
self
.
_ind
,
self
.
_x
):
if
dx
in
reg
.
_rdates
.
keys
():
rg
=
reg
.
_rdates
[
dx
]
colorm
.
append
(
colors
[
rg
])
xt
.
append
(
pandas
.
to_datetime
(
dx
))
Y
.
append
(
np
.
log
(
y
))
plt
.
figure
()
t
=
plt
.
text
(
xt
[
0
],
Y
[
0
],
self
.
_title
,
ha
=
"center"
,
va
=
"center"
,
bbox
=
bbox_props
)
plt
.
scatter
(
xt
,
Y
,
c
=
colorm
,
s
=
2
)
return
xt
,
Y
def
printusage
():
print
(
'usage: graphs.py -w <what=[clusters|regimes|ts]> -i <file>'
)
def
atexit
():
printusage
()
sys
.
exit
(
2
)
def
action
(
func
,
arg
):
conf
=
ConfigReader
(
'regimes.ini'
)
g
=
Graphs
(
conf
)
if
func
==
'draw_regimes'
:
g
.
draw_regimes
(
arg
)
elif
func
==
'draw_clusters'
:
g
.
draw_clusters
(
arg
)
elif
func
==
'draw_ticker'
:
g
.
loaddist
(
arg
)
xt
,
yt
=
g
.
graph_data
()
g
.
annotate
(
xt
,
yt
)
plt
.
show
()
if
__name__
==
"__main__"
:
args
=
sys
.
argv
[
1
:]
try
:
opts
,
args
=
getopt
.
getopt
(
args
,
'w:i:'
)
ARG
=
None
FUNC
=
None
for
opt
,
arg
in
opts
:
if
opt
==
'-w'
:
if
arg
==
'clusters'
:
FUNC
=
'draw_clusters'
elif
arg
==
'regimes'
:
FUNC
=
'draw_regimes'
elif
arg
==
'ticker'
:
FUNC
=
'draw_ticker'
else
:
atexit
()
if
opt
==
'-i'
:
ARG
=
arg
if
ARG
is
None
or
FUNC
is
None
:
atexit
()
action
(
FUNC
,
ARG
)
except
getopt
.
GetoptError
:
atexit
()
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment