I got 80% now. It's pretty similar to yours, Seprix, but I made it a little more convoluted. Beats smithy 61-35.
<player name="Castles BMU"
author="liopoil"
description="Optimized Castles-BM">
<type name="BigMoney"/>
<type name="TwoPlayer"/>
<type name="UserCreated"/>
<type name="Bot"/>
<type name="SingleCard"/>
<type name="Generated"/>
<type name="Province"/>
<buy name="Gold">
<condition>
<left type="getTotalMoney"/>
<operator type="smallerThan" />
<right type="constant" attribute="32.0"/>
</condition>
<condition>
<left type="countCardsInSupply" attribute="Castles"/>
<operator type="greaterThan" />
<right type="constant" attribute="5.0"/>
</condition>
</buy>
<buy name="Silver">
<condition>
<left type="getTotalMoney"/>
<operator type="smallerThan" />
<right type="constant" attribute="15.0"/>
</condition>
</buy>
<buy name="Castles"/>
<buy name="Province">
<condition>
<left type="countCardsInSupply" attribute="Province"/>
<operator type="greaterThan" />
<right type="constant" attribute="2.0"/>
</condition>
</buy>
<buy name="Province">
<condition>
<left type="countCardsInSupply" attribute="Province"/>
<operator type="equalTo" />
<right type="constant" attribute="1.0"/>
</condition>
</buy>
<buy name="Province">
<condition>
<left type="countCardsInSupply" attribute="Province"/>
<operator type="equalTo" />
<right type="constant" attribute="2.0"/>
</condition>
<condition>
<left type="countVP"/>
<operator type="greaterThan" />
<right type="countMAXOpponentVP"/>
</condition>
</buy>
<buy name="Province">
<condition>
<left type="countCardsInSupply" attribute="Castles"/>
<operator type="equalTo" />
<right type="constant" attribute="0.0"/>
</condition>
</buy>
<buy name="Duchy">
<condition>
<left type="countCardsInSupply" attribute="Castles"/>
<operator type="equalTo" />
<right type="constant" attribute="0.0"/>
</condition>
</buy>
<buy name="Duchy">
<condition>
<left type="countCardsInSupply" attribute="Province"/>
<operator type="smallerThan" />
<right type="constant" attribute="5.0"/>
</condition>
</buy>
<buy name="Estate">
<condition>
<left type="countCardsInSupply" attribute="Castles"/>
<operator type="equalTo" />
<right type="constant" attribute="0.0"/>
</condition>
</buy>
<buy name="Estate">
<condition>
<left type="countCardsInSupply" attribute="Province"/>
<operator type="smallerThan" />
<right type="constant" attribute="3.0"/>
</condition>
</buy>
<buy name="Gold"/>
<buy name="Silver"/>
</player>