"It is not the responsibility of the language to force good looking code, but the language should make good looking code possible." -- Yukihiro MatsumotoI just discovered the power of Ruby!!!
More later,
MT
The critical ingredient is a maverick mind. Focus on trading vehicles, strategies and time horizons that suit your personality. In a nutshell, it all comes down to: Do your own thing (independence); and do the right thing (discipline). -- Gil Blake
"It is not the responsibility of the language to force good looking code, but the language should make good looking code possible." -- Yukihiro MatsumotoI just discovered the power of Ruby!!!
"And don't write longer, more obtuse code because you think it's faster. Remember, hardware gets faster. MUCH faster, every year. But code has to be maintained by programmers, and there's a shortage of good programmers out there. So, if I write a program that's incredibly maintainable and extensible and it's a bit too slow, next year I'm going have a huge hit on my hands. And the year after that, and the year after that.Great quote! Read more on this topic here.
If you write code with more code that's fast now, you're going to have a hit on your hands. And next year, you're going to have a giant mess to maintain, and it's going to slow you down adding features and fixing bugs, and someone's going to come along and eat your lunch." -- Wil Shipley
"Be careful about using the following code -- I've only proven that it works, I haven't tested it." -- Donald KnuthI have finally started my dynamic allocation of equity project. This is something I've stewed about for several weeks...okay...maybe months. But, after meeting with Jon for lunch this weekend...I finally got the motivation back to begin work on the project. Thanks Jon!
******Begin of Code***********************
from pysqlite2 import dbapi2 as sqlite
conn = sqlite.connect("TaylorTree")
cursor = conn.cursor()
SQL = """
create table MarketDaily
(
Symbol text,
Bar SQL_DATE,
Open float,
High float,
Low float,
Close float,
Volume float,
AdjClose float,
primary key (Symbol, Bar)
);
"""
cursor.execute(SQL)
******End of Code***********************
******Begin of Code***********************Fetch from Table:
from pysqlite2 import dbapi2 as sqlite
conn = sqlite.connect("TaylorTree")
cursor = conn.cursor()
SQL = """
insert into MarketDaily
(Symbol, Bar, Open, High, Low, Close, Volume, AdjClose)
values
(
"YHOO",
20060801,
20.00,
25.00,
19.00,
22.00,
50000,
22.00
);
"""
cursor.execute(SQL)
conn.commit()
******End of Code***********************
******Begin of Code***********************
from pysqlite2 import dbapi2 as sqlite
conn = sqlite.connect("TaylorTree")
cursor = conn.cursor()
SQL = "select * from MarketDaily"
cursor.execute(SQL)
# Retrieve all rows as a sequence and print that sequence:
print cursor.fetchall()
cursor.close()
******End of Code***********************
******Begin of Code***********************
from pysqlite2 import dbapi2 as sqlite
conn = sqlite.connect("TaylorTree")
cursor = conn.cursor()
SQL = "drop table MarketDaily"
cursor.execute(SQL)
******End of Code***********************
******Begin of Code***********************After spending a lot of time getting all that going...I then turn back to pytables. Maybe I need to dig deeper there. Found some very good documentation here. But, I'm still sitting here...nothing. Hey, someone give me some motivation on working with this bad boy! Anybody have any experience to share in regard to pytables? If so, bring it on! I need some mojo!
from pysqlite2 import dbapi2 as sqlite
conn = sqlite.connect("TaylorTree")
cursor = conn.cursor()
def UpdatePrice(sym, b, o, h, l, c, v, ac):
SQL = """
insert into MarketDaily
(Symbol, Bar, Open, High, Low, Close, Volume, AdjClose)
values
(
'%s',
%s,
%s,
%s,
%s,
%s,
%s,
%s
);
""" % (sym, b, o, h, l, c, v, ac)
cursor.execute(SQL)
conn.commit()
******End of Code***********************
******Begin of Code********2 lines. Now, I'm sure there is a much easier way to call a COM Object in C# that what I was trying to do. If anyone out there knows how...please leave a comment. I'm really interested to see how many lines it takes to connect.
import win32com.client
w=win32com.client.Dispatch("TC2000Dev.cTC2005")
******End of Code**********
"One of the best attributes I know a trader to have is humility. The best traders I know admit to knowing very little about what the market will do or don't pretend to have any kind of secret method or style or edge that others don't have. They just go in to work everyday like a brick layer. Their goal is to lay bricks. One at a time. And hopefully at the end of their life they have built a solid foundation. That's all a trader can hope for." -- Maverick74Found the great quote above perusing EliteTrader this weekend. The thread is titled, Writing Options for a Living, read here. You'll have to be patient because a lot of time is spent with posts from people still believing in the Easter Bunny. But, there are a few gems to be found...especially from Maverick74, riskarb, and a few others.
" Becoming wealthy is like playing Monopoly.. the person who can accumulate the most assets wins the game."
-- Noel Whittaker
The ones who were successful had more emotional control. The ones who weren't successful were either too intellectually insecure and unable to commit to a strategy, too greedy, too emotionally invested in their financial success, too affected by the large swings in equity, or too averse to the risks required to trade well (probably due to a lack of confidence in themselves). One of the things that distinguished the good Turtles from the ones that were completely unsuccessful is their personalities. The traders with a more intellectual and systematic approach to life were much more successful than the emotional traders who really wanted to make a lot of money.And finally, one of the most important insights Curtis makes:
...all successful people owe their success to the help of others. They therefore have an obligation and usually a desire to pass on the craft, to teach and help others.I am thankful that such a thing is true. I owe many thanks to the people that have helped my programming and trading experience grow in the right direction. In a sense, we are all like those baby turtles Mr. Dennis refers to. Just trying to make it out to sea and swim with the big dogs. And avoid the many perils from beach to sea.
"There is no doubt in my mind that systems and styles which offer a rougher ride will hold up more over the long run because not as many traders and certainly almost no institutional money wants the ride.
You will make more money if you can take the pain. Unfortunately, you will make little or none if you think you can but it ends up that you can't."
- Curtis Faith -
MT
1) Fundamental Driven Markets - cleanest trends and easiest to trade;Plus, I always enjoy it when Curtis shares his Turtles experience. His coffee story reminds me of a few trades from my Melba Toast story.
2) Speculator Driven Markets - perception driven and harder to trade;
3) Aggregated Derivative Markets - averaging out effect dilutes momentum.
"Every now and then go away, even briefly, have a little relaxation, for when you come back to your work your judgement will be surer; since to remain constantly at work will cause you to lose power." -- Leonardo da VinciWell, I had a little break. And during that break I moved my family to Missouri! Yes, we are now in Missouri. Things are going good. Still have so much unpacking to do. But, was able to mow the yard (grass is different here than Texas) and find my grilling supplies for a good steak dinner with a corona or two.
"If you've been pounding nails with your forehead for years, it may feel strange the first time somebody hands you a hammer. But that doesn't mean that you should strap the hammer to a headband just to give your skull that old familiar jolt." -- Wayne ThroopThis quote rings so true. :)
If the majority of investorsLater Trades,
believe they will beat the market return by investing in fundamental
indexing, they will have to earn their above market return at the
expense of other market participants-- but those market participants
aren't anywhere to be had. Those abnormal returns exist because the
"market" has allocated funds in a particular way over the history of
the stock market. If the "market" were to no longer allocate funds that
way, perhaps we would have the indirect benefit of an overall better
functioning economic system, but directly, the market, as a whole,
cannot escape the market return. If everyone believes something to be true, you cannot earn abnormal returns off of it.
The time at my current employer is coming to an end and my new job soon beginning. I'm currently in the process of gathering up all the systems I have designed and supported over the past 8 years and ensuring the documentation is complete and up-to-date and the code nice and tight. I'll be turning these kids of mine over to another programmer to adopt and support. The programmer taking over the systems is a great guy and will indeed treat them well. But, as I'm cross-checking user guides, code documentation, and data dictionaries...I find motivation in the quote below:
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." -- M. Golding
I've always followed a similar mantra...Always design your systems to be supported by someone else even if it will only be supported by yourself. Because our main goal should be to let our code sail...
"A ship in port is safe, but that is not what ships are built for. I want all the youngsters to sail out to sea and be good ships." -- Grace Hopper
Speaking of software...what software tools do you use in your daily routine? Editors? Backtesters? Spreadsheets? Calculators? Here's a breakdown of my software tool set...
Wealth-Lab - Rapid Prototyping! I typically develop one or two trading systems over a 3 to 6 month time-frame. Each day I'll scribble ideas onto pieces of paper. Trying to find ways to improve the system and use Wealth-Lab to test those ideas out.
R Project - Great batch analysis of Wealth-Lab backtests. I'll run a Wealth-Lab simulation that generates a comma-delimited file of the trade output. Then analyze the CSV file with a batch R script that outputs to the terminal or to HTML. Couldn't live without this tool in backtesting and system studies.
ActiveState ActivePython - I can connect to the TC2005 database with Python and parse the securities anyway I please. Build portfolios by sector, exchange, etc. Oh, and ActiveState includes the Pythonwin IDE which is nice. Update: I also can connect to Wealth-Lab Developer with Python and run chartscripts against custom portfolios. Very cool when watching the Python script open and close the Wealth-Lab Chartscripts for each symbol in the list or table you're reading down.
gVim - This is my notepad replacement. I haven't used it very long...but so far so good. Also experimenting with jEdit. If only someone would develop an EVE Editor for Windows!
Excel - Hey, I know...pretty simple huh? Well, sometimes there's nothing better than Excel in dumping data quickly and testing out various scenarios.
Calcr - If you need to quickly calculate something...this website rocks! It can even handle assignment of variables. Such as x=2; x*2. Also the Google Search Bar always works in a crunch as shown in my Amortization Formula post.
Later Trades,
MT
Technorati : Calcr, R, editor, gVim, programming, python, quotation, wealth-lab
Del.icio.us : Calcr, R, editor, gVim, programming, python, quotation, wealth-lab
"Rest: the sweet sauce of labor" -- Plutarch
Testing new blog editor, Zoundry.
As you can see...taking it easy today. Actually taking a break before I begin more clean-up around the house. With putting my house up for sale, getting ready for my trip to Missouri, and completing a big project at my current job...I needed a rest! :)
The above picture is something my daughter and I drew a few weeks ago...a picture of her with her toy dog Danny. Just testing the picture insertion feature of this editor.
MT
Test of new blog editor, Qumana.
By the way, it's really cool to see the excitement surrounding Sun's new Fortress Language:
Deep Market - Fortress Programming Language for Scientific Computing
Wikipedia - Fortress Programming Language
Slashdot - Fortress: The Successor to Fortran?
Sig9 - Fortress
MT
Tags: blog, editor, qumana, fortress
“All changes, even the most longed for, have their melancholy; for what we leave behind us is a part of ourselves; we must die to one life before we can enter another.” -- Anatole France