Wednesday, September 06, 2006

Quote of the Week - Mindsets

"Often when you mention risk, what people think of is the downside. Danger. That's not the entrepreneurial mind-set," she said. "The entrepreneurial mind-set is that risk is the heightened probability that there is a big range of possible outcomes." -- Heidi Roizen

The above quote is from Money.com's recent series on What it takes to be rich. I love the story describing growth mindsets versus fixed mindsets.
Dweck, the psychologist who studies growth mind-sets, created an experiment to demonstrate how persistence and the pursuit of knowledge leads to success. She posed a series of trivia questions to a group of people with fixed mind-sets and another with growth mind-sets.

After each answer, one and a half seconds passed before the participants were told whether they were right or wrong, and, if they were wrong, another one and a half seconds lapsed before they were given the correct response. Their brains were monitored with electrodes the entire time.

Dweck found that the people with fixed mind-sets cared a lot about whether they were right or wrong but not at all about what the right answer was. The growth-mind-set participants stayed interested until the correct answer was given, showing an interest in learning new information rather than in simply validating their intelligence.
more from Carol Dweck...
People with fixed mind-sets believe that they were born with a certain amount of intelligence, and they strive to convince the world of their brilliance so that no one finds out they're not actually geniuses.

Growth-mind-set people believe that intelligence, knowledge and skill need to be "cultivated" by trial and error. Failing at something, they believe, is the best way to ensure they'll succeed at it the next time.
This growth mindset versus fixed mindset sounds so interesting...I just might have to go out and read her new book:


Follow along with the Money.com's series here...
Lesson 1: Make your own luck
Lesson 1, Corollary 1: Building 'social capital' often pays off in the end.
Lesson 2: Failing at something is the best way to ensure success at it the next time.
Lesson 2, Corollary 1: Successful people are always on the look out for new experiences that they can later build on.
Lesson 2, Corollary 2: If you see an opportunity, take it. But that doesn't mean betting the ranch.

Later Trades,

MT

Tuesday, August 29, 2006

Quote of the Week - I Love Ruby!

"It is not the responsibility of the language to force good looking code, but the language should make good looking code possible." -- Yukihiro Matsumoto
I just discovered the power of Ruby!!!

More later,

MT

Tuesday, August 22, 2006

Quote of the Week - Programming

"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.

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

Great quote!  Read more on this topic here.

MT

Development 0.1

"Be careful about using the following code -- I've only proven that it works, I haven't tested it." -- Donald Knuth
I 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!

And seeing as how I hardly ever write anything of significance on this blog...I figure I'd start documenting some of the steps I'm taking to get this project on the road.

First thing was to find a better coding environment than what I was using.  I have been using the PythonWin IDE for my trials and tribulations.  I needed more oomph.  Hopped over to Vim and have hunted and pecked my way around a bit.  No flow joe yet.

Before moving on...does anybody know of a windows or even linux distro of the EVE$EDITOR?  Somebody?  Anybody?  Hello?

Just a week ago, I found out about the new Pydev extension to Eclipse.  Pretty nice.  It's still not perfect...but much closer to what I'm looking for.  So, now that I've found an IDE that allows me to play in the sandbox a bit...on to the database choice.

I downloaded pytables due to their "designed to efficiently and easily cope with extremely large amounts of data" claim to fame.  And then did nothing with it.  It's not the relational type of storage I'm used to...so maybe that's why.  Thought maybe a viewer would help, so downloaded the vitables viewer.  It was nice...but still did nothing with it.

Okay, maybe I'm making this too hard.  One of the python programmers I know mentioned Sqlite.  Downloaded it.  Found the python extension for it here.  Explored documentation for working with it here and here.  Now, I'm getting somewhere.  Wrote a few python modules to test create, insert, drop, and fetch.  Here they are:

Create Table in Python/Sqlite:
******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***********************

Insert into Table:
******Begin of Code***********************
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***********************

Fetch from Table:
******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***********************

Drop Table:
******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***********************

Not too bad.  Not too hard.  But, then I figured I'd make a module that would handle all this stuff for me.  Some hard work began...all because I had no idea how to use symbolics in Python/SQL.  Finally discovered the needle in a haystack...'%s'.  Aha!

******Begin of Code***********************
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***********************
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!

And that's where I am now.  Oh...and of course, will begin working on spinning through TC2005's databank and load historics into Sqlite.  How do I do that?  That involves working with COM objects and Python makes it very easy for you.  In fact...I'm amazed at how complicated it is to call a COM object from Microsoft's own languages like C#.  In python...all you have to do in order to get to the TC2005 COM object is...
******Begin of Code********
import win32com.client
w=win32com.client.Dispatch("TC2000Dev.cTC2005")
******End 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.

One last thing...if C# is your thing...check out Microsoft's free version of Visual Studio, C#, and even SQL Server via the Express Editions.  C# not your cup of tea?  There is Visual Basic, Visual C++, and even Visual J++.

And that's it from here...where I'm hoping to catch up on some much needed sleep.

Later Trades,

MT

Sunday, August 13, 2006

Quote and Thread of the Week

"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." -- Maverick74
Found 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.

Later Trades,

MT

Monday, August 07, 2006

Quote of the Week


" Becoming wealthy is like playing Monopoly.. the person who can accumulate the most assets wins the game."
-- Noel Whittaker

MT

Sunday, July 30, 2006

Thread of the Week - Birth of a Turtle


Came across a great thread this weekend regarding Curtis Faith and his Turtle background.  Read here.  I especially enjoyed the story of his initial programming experience converting trading systems.  What a great first job.  And of course, always hungry for insights and traits into what makes a successful trader.  Here's Mr. Faith's take:

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.

Later Trades,

MT

Saturday, July 29, 2006

Quote of the Week


"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

Monday, July 24, 2006

Interview of Programming Greats!

A really cool interview of several of the great programmers of our time: Linus Torvalds, Guido Van Rossum, James Gosling, etc. Read here.

They answer questions in regard to what they feel is the next big thing, what new technology they feel is worth learning, what makes programmers productive, etc. Really great interview. Check it out.

MT

Saturday, July 22, 2006

Thread of the Week

A really great thread over at the Trading Blox forum.  Read here.

Best part was the comments by Curtis Faith in regard to "the characteristics of markets over time."  Curtis broke the markets into three classes:
1)  Fundamental Driven Markets - cleanest trends and easiest to trade;

2)  Speculator Driven Markets - perception driven and harder to trade;

3)  Aggregated Derivative Markets - averaging out effect dilutes momentum.

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

Also, pay attention to Barli's mention of optimization and the effect lack of cash has on your results.  This is a very hard lesson to learn.  Most backtesting platforms will drop trades due to lack of cash.  Thus, you only see a sample size of the actual results.  There are a few solutions to this problem...but that's for another time.

Later Trades,

MT

Monday, July 17, 2006

Quote of the Week

"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 Vinci
Well, 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.

The break did me good.  No computer, time spent with the family, and change.  Plenty of change.  Change does the mind good.  Breaks you out of your comfort zone.  And that's a good thing...even though it doesn't always feel like it when undergoing the change.  Here's more on breaking out of your comfort zone from Dr. Brett.

And that's the update for yours truly.  Oh, and I start my new job this week.  Very excited.

Have a great week!

MT

Wednesday, July 05, 2006

Quote of the Week

"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 Throop
This quote rings so true.  :)

Happy 4th everybody!

MT

Thursday, June 29, 2006

Beating the Market

Dan has posted some great insights into the zero-sum nature of beating the market.  Read here.

Favorite quote from his post:
If the majority of investors
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.

Later Trades,

MT

Wednesday, June 28, 2006

Quote of the Week - Letting Go

"The difficulty lies, not in the new ideas, but escaping the old ones, which ramify, for those brought up as most of us have been, into every corner of our minds." -- John Maynard Keynes

This past weekend I wrapped up a new system I've been working on for several months now.  The sad part is it replaces all the current systems I trade.  So, I'm in the process of closing down my existing systems in order to begin trading this new one.

This kinda stuff is never easy.  One in particular has been very hard to let go.  It was the first system I developed back in 2001.  Named it after my daughter.  This new system has been named after my son.  Go figure.

One important change I have made is trading from an end of week basis to an end of month basis.  The backtesting has gone very well...but the forward testing is ongoing.  If this works out well...I may even push out to a quarterly basis.  Time will tell.

The interesting aspect of this system is it curtails nicely with the recent post by acrary here.  While I'm not anywhere close to what acrary has discovered...I too have found certain slices of the market where specific strategies work well.  And as embarassing as it is to say...all my systems I have built over the past five to six years are trying to capture the same market characteristic.  So, this monthly system really is just a simplification of all my weekly systems targetted at a very specific market slice.

What are my next goals?  Well, I have two...

1)  Figure out a strategy for the other side of the market coin.  The area I have yet to develop a viable system.  This should hopefully increase my rate of return while reducing my risk.  Heck, even if its a net loser...may still reduce my risk.

2)  Begin designing a backtesting engine.  I've done a lot of research over the past few days and had some help from a few technical gurus here at work.  I believe I've got a platform framework in mind.  Surprise, surprise...most of it will be done in Python.  Still much design work to do and testing.  Question for you Python guys and gals...any experience using Pytables?  That's what I'm considering for the time series data store.  Any feedback on Pytables would be much appreciated.

That's it here from a short-timer.  Only have a few days left at my current job before I move away from the great state of Texas.  There will be lots to miss but hopefully much to gain up in my new state of Missouri.

Later Trades,

MT

Monday, June 19, 2006

Quote of the Week

"It is impossible for a man to learn what he thinks he already knows." -- Epictetus

MT

Tuesday, June 06, 2006

Quote of the Week - Programming

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 : , , , , , , ,
Del.icio.us : , , , , , , ,

Sunday, June 04, 2006

Testing Blog Editor

"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! :)

Dad & Daughter Drawing

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

New Blog Editor and Fortress

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: , , ,