With Geronimoo's slightly updated simulator (he specifically mentioned improved Courtyard play), I added a rule to WW's bot after his second Duchy rule, so that it will buy Trading Post if and only if it gets the 5/2 opening draw. For random starts it has a very slim edge, but it has a significant advantage when it gets to start 5/2.
There are probably better/more general methods for restricting a 5-coster to the opening buy, but the rule I used was to buy a Trading Post if the number of cards in the deck is less than or equal to 11.
Moral of the story: WW built the best bot, but it should also open Trading Post when it can! I'm pleased that I found a good use for Trading Post. Now onto Gray's next challenge!
<player name="SimStratChal1WW ">
<buy name="Province">
<condition>
<left type="countCardsInDeck" attribute="Gold"/>
<operator type="greaterThan" />
<right type="constant" attribute="0.0"/>
</condition>
</buy>
<buy name="Duchy">
<condition>
<left type="countCardsInSupply" attribute="Province"/>
<operator type="smallerOrEqualThan" />
<right type="constant" attribute="4.0"/>
</condition>
</buy>
<buy name="Estate">
<condition>
<left type="countCardsInSupply" attribute="Province"/>
<operator type="smallerOrEqualThan" />
<right type="constant" attribute="2.0"/>
</condition>
</buy>
<buy name="Gold"/>
<buy name="Duchy">
<condition>
<left type="countCardsInSupply" attribute="Province"/>
<operator type="smallerOrEqualThan" />
<right type="constant" attribute="5.0"/>
</condition>
</buy>
<buy name="Trading_Post">
<condition>
<left type="countAllCardsInDeck"/>
<operator type="smallerOrEqualThan" />
<right type="constant" attribute="11.0"/>
</condition>
</buy>
<buy name="Venture"/>
<buy name="Silver">
<condition>
<left type="countCardsInDeck" attribute="Silver"/>
<operator type="equalTo" />
<right type="constant" attribute="0.0"/>
</condition>
</buy>
<buy name="Courtyard">
<condition>
<left type="countCardsInDeck" attribute="Courtyard"/>
<operator type="smallerThan" />
<right type="constant" attribute="1.0"/>
</condition>
</buy>
<buy name="Silver"/>
<buy name="Courtyard">
<condition>
<left type="countCardsInDeck" attribute="Courtyard"/>
<operator type="smallerOrEqualThan" />
<right type="countAllCardsInDeck"/>
<extra_operation type="divideBy" attribute="8.0" />
</condition>
</buy>
</player>